管道和重定向
阿新 • • 發佈:2022-05-31
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