1. 程式人生 > 其它 >管道和重定向

管道和重定向

date:檢視計算機的日期時間;

[root@localhost 001]# date
2022年 05月 28日 星期六 15:48:20 CST

重定向

>覆蓋輸入資訊
>>追加輸入資訊
[root@localhost /]# touch /time. #在跟下建立檔案time.; [root@localhost /]# date > time. 檢視虛擬機器的日期時間並輸入到time.檔案上去; [root@localhost /]# cat time. 檢視檔案time.的內容; 2022年 05月 28日 星期六 15:52
:20 CST [root@localhost /]#

FD簡介

file descriptors,FD,檔案描述符,檔案控制代碼程序使用描述符來管理開啟的檔案。
每個程式都有FD,FD是針對程式的,讓程式更方便;
FD是訪問檔案的標識(連結檔案),省去了冗長的絕對路徑;
FD:檔案描述符(0——255)
0:stdin:標準輸入(鍵盤檔案) 1:stdout:標準輸出(顯示器檔案)
<覆蓋
<<追加 2
:stderr:標準錯誤(顯示器檔案) 。。。。。。other files 0是鍵盤只讀; 1,2是終端可以理解是螢幕; 3+是檔案,可讀可寫;
other:&》混合輸出
echo:輸出程式碼到終端顯示器上
[root@localhost 001]# echo 1                    #輸出1在終端顯示器上
1
[root@localhost 001]# echo 123 > 001        #覆蓋輸出123到檔案001上
[root@localhost 001]# echo 12345 >001       #覆蓋輸出123到檔案001上
[root@localhost 001]# cat 001                   #檢視檔案001的全部內容
12345

 輸出重定向1,2

輸出重定向分為:
正確輸出:
1>
1>>

錯誤輸出:當某條程式出現錯誤時才會有錯誤輸出並重定向;
2> 2>> [root@localhost /]# ls /001 2>001 /001 [root@localhost /]# cat /001#檢視001檔案的內容,2>沒報錯,所以沒錯誤輸出; [root@localhost /]# ls /0001 2>001 [root@localhost /]# cat /001 ls: 無法訪問/0001: 沒有那個檔案或目錄

例子:

[root@localhost /]# touch /a/001 1>>001        #正確追加輸出
[root@localhost /]# cat /001
ls: 無法訪問/0001: 沒有那個檔案或目錄
mkdir: 已建立目錄 "/a"
[root@localhost /]# touch /a/001 2>>001        #錯誤追加輸出
[root@localhost /]# cat /001
ls: 無法訪問/0001: 沒有那個檔案或目錄
mkdir: 已建立目錄 "/a"
[root@localhost /]# ls /a 001 &>>001           #把正確輸入或者錯誤輸出到001檔案
[root@localhost /]# cat /001
ls: 無法訪問/0001: 沒有那個檔案或目錄
mkdir: 已建立目錄 "/a"
001

/a:
001
[root@localhost /]# ls /a /s     1>001 2>001   #分別把正確,錯誤的輸出到2個檔案裡
[root@localhost /]# cat /001
/a:
001
��訪問/s: 沒有那個檔案或目錄
[[root@localhost /]# ls /home///     &> /dev/null#把正確/錯誤輸出丟到垃圾桶裡面
[root@localhost /]#  

  輸入重定向0<

[root@localhost /]# mail -s '1' 001#發郵箱名為1給使用者001
hello
.
EOT
(:冒號+郵件名:就可以看郵件;按q退出;)

  

先準備一段內容
mail -s ’test內容‘  使用者001 < word.txt

  

 管道

程序管道piping
1.管道命令可以將多條命令組合起來,一次性完成複雜的處理任務;
語法:command1 | command2 | command3  |...command99    c0mmand99:輸出
命令1的輸出,作為命令2的輸入,命令2的輸入,作為命令3的輸入。
[root@localhost /]# cat /etc/passwd | grep "root"       #管道檢視過濾關鍵詞root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost /]# cat /etc/passwd | grep "root" | head -1#管道檢視過濾關鍵詞root的第一行
 root:x:0:0:root:/root:/bin/bash
tee管道
tee:把輸出顯示在終端;
tee 檔名:把輸出留副本 [root@localhost
/]# cat /etc/passwd |tee 001 | tail -1
#管道檢視過濾關鍵詞root的末尾一行
#並過濾/etc/passwd檔案內容到檔案001裡
 001:x:1000:1000:001:/home/001:/bin/bash [root@localhost /]# cat /001
引數傳遞Xargs
cp  rm   一些特殊命令就是不服其它程式;
[root@localhost /]# cat file
file1
file2
file3
[root@localhost /]# ls /
001   1  bin   dev  file   file2  home  lib64  mnt  proc  run   srv  tmp  var
0098  a  boot  etc  file1  file3  lib   media  opt  root  sbin  sys  usr
[root@localhost /]# cat /file    |xargs    rm -rfv  
已刪除"file1"
已刪除"file2"
已刪除"file3"
[root@localhost /]# ls /
001   1  bin   dev  file  lib    media  opt   root  sbin  sys  usr
0098  a  boot  etc  home  lib64  mnt    proc  run   srv   tmp  var
[root@localhost /]# 

  

[root@localhost 001]# cat /etc/passwd | grep ntp | cut -d: -f1#-d後加切割的分界線:,-f是第幾個字元;
ntp
[root@localhost 001]# cat /etc/passwd | grep ntp | cut -d: -f2
x
[root@localhost 001]# cat /etc/passwd | grep ntp | cut -d: -f3
38