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