標準I/O和管道

t01c8d0a587f7a91802

input:輸入讀入數據

output:輸出數據文件的

打開的文件都有一個fd: file descriptor (文件描述符)

ll /proc/$$/fd #查看fd

exec 8<>/data/hosts #指定fd

I/O重定向:該變默認位置

> #把標準輸出重定向到文件(一個”>”是覆蓋,”>>”是追加)

2> #把錯誤輸出重定向到文件

&> #把所有輸出重定向到文件

ls /error /etc >f1 2>f2 #把對的輸出放到f1文件中錯的輸出放到f2文件中

() #提升命令輸出的優先級

例如:ls /error /etc 2>&1 >all.log #不加()錯誤信息顯示正確信息重定向到all.log

(ls /error /etc 2>&1) >all.log #家()先把錯誤信息重定向到all.log再把正確的追加進去

set –C 禁止將內容覆蓋已有文件,但可追加

>| file 強制覆蓋

set +C 允許覆蓋

>> 原有內容基礎上,追加內容

&> /dev/null #不顯示輸出結果

>文件名 #創建空文件夾

>>文件名 #文件名不重名的情況下創建空文件夾,重名譯為追加

tr #替換和刪除字符(文本處理命令)

tr ‘a-z’和[:upper:]不能混用,語法錯誤

 

-d #刪除輸入

-s #刪除連續重復輸入

-sc ‘a’ #除了a壓縮(刪除)連續重復輸入,c表示取反

-dc ‘a\n’ #除了a刪除所有輸入回車

seq 1 10 #列出1到10以列的形式

hexdump #查看文件內容的機器碼

cat #查看

cat ?< file #吧file文件中的內容發送給cat相當于cat file

cat > filea <fileb #吧fileb文件中的內容重定向給filea

cat > file #單行重定向,回車一次寫入一行,Ctrl+d結束(如果文件中有內容會被覆蓋)

cat > file <<EOF #多行重定向,以EOF(end of file約定俗成的,也可以用其他字符 )結束

| #管道符,吧前一個命令的標準輸出傳送給下一個命令

錯誤輸出默認不能通過管道轉發,可用2>&1或者|&實現

|& #把標準輸出和錯誤輸出同時傳輸給下一個命令

echo {1 .. 100} | tr ‘ ’ ‘ +’ | bc #顯示1到100的結果給tr,tr把空格替換成+的結果給bc命令實現計算1+2+3…. +100 。等同于seq -s + 100 | bc命令

命令1 | tee [-a] 文件名 | 命令2

把命令1的標準輸出保存到文件中,作為命令2的輸入,-a追加,否則覆蓋

touch `openssl rand -base64 9 |tr ‘’’`.log生成指定字符的隨機文件名

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94701

(0)
老司機丨快上車老司機丨快上車
上一篇 2018-04-02 19:22
下一篇 2018-04-02 19:48

相關推薦

欧美性久久久久