重定向 redirect
標準輸入和輸出
程式:指令+資料
讀入資料:input
輸出資料:output
開啟的檔案都有乙個fd:file descriptor(檔案描述符)
/dev/std*
/proc/self/fd 終端
linux給程式提供三種i/o管道標準輸入(stdin) -0 預設接受來自鍵盤的輸入
例如:bc(計算器)
標準輸出(stdout) -1 預設輸出到終端視窗
標準錯誤(stderr) -2 預設輸出到終端視窗
i/o重定向:改變預設位置
stdout和stderr可以被重定向到檔案
命令 操作符號 檔名
> 把stdout重定向到檔案
2> 把stderr重定向到檔案
&> = > file 2&>1 把所有輸出重定向到檔案
< 輸入重定向
清空大檔案:> /boot/bigfile 立即釋放空間
>> 追加 >> /data/ls.log 更加安全的建立檔案
依賴於當前shell ,更換其他shell將無法建立
(command;command)>file
set -c 禁止重定向覆蓋
set +c 允許重定向覆蓋
>| file 強制覆蓋
tr命令(外部命令)tr 轉換和刪除字元
選項 :
-c -c --complement:取代所有不屬於第一字符集的字元
-d --delete:刪除所有屬於第一字符集的字元
-s --squeeze-repeats:把連續重複的字元以單獨乙個字元表示
-t --truncate-set1:將第一字符集對應字元轉化第二字元對應的字元
[:alnum:]: 字母和數字
[:alpha:]: 字母
[:cntrl:]: 控制(非列印)字元
[:digit:]: 數字
[:graph:]: 圖形字元
[:lower:]: 小寫字母
[:print:]: 可列印字元
[:punct:]: 標點符號
[:space:]: 空白字元
[:upper:]: 大寫字母
[:xdigit:]:十六進製制字元
windows和linux的文字格式不同(不可見字元)
man ascii 檢視ascii
在linux ascii中 '\n'表示回車 '\r'表示換行
在windows中 回車和換行意思基本相同
hexdump -c 命令 可以檢視檔案16進製制
tr -d '\r' < win.txt
tr -d '\r' < win.txt > win2.txt (生成新檔案)
用這樣的方式將windows格式轉化為linux格式
或者 可以使用 dos2unix 命令 將windows格式轉化為unix格式
unix2dos 命令 可以將unix格式 轉化為windows格式
慎用
cat f1.txt
cat >f2.txt
passwd root &> /dev/null 隱藏資訊
管道 ( | )
將命令1的標準輸出作為命令2的標準輸入
將標準錯誤輸出
ls /data /err 2<&1 | tr '[:lower:]' '[upper]'
或 ls /data /err |& tr '[:lower:]' '[upper]'
重定向到多個目標
tee
command 1 | tee [-a] file | command 2
把命令1的stdout儲存在檔案中,作為命令2的輸入
使用:
儲存不同階段的輸出
複雜管道的故障排除
同時檢視和記錄輸出
seq 生成序列
面試題:
計算1+2+...+100的總和
seq -s + 1 2 100 | bc
管道中 - 符號
示例:
將/home裡面的檔案打包,但打包的資料不是記錄到檔案呢,而是傳送到stdout,
經過管道後,將tar -cvf - /home 傳送給後面的tar -xvf -,後面的這個 - 則是取前乙個命令的stdout,因此,就不需要使用臨時file了
tar -cvf - /home | tar -xvf
標準I O和管道
標準輸入 0 標準輸出 1 錯誤輸出 2標準輸入 stdin 0 預設接受來自鍵盤的輸入 標準輸出 stdout 1 預設輸出到終端視窗 標準錯誤 stderr 2 預設輸出到終端視窗改變檔案儲存的預設位置 格式 命令 操作符號 檔名 支援的操作符號包括 把標準輸出重定向到檔案 把輸出內容重定向追加...
標準IO和管道
1 將 etc issue檔案中的內容轉換為大寫後儲存至 tmp issue.out檔案中 1.cat etc issue tr a z a z tmp issue.out 2.tr a z a z tmp issue.out 2 將當前系統登入使用者的資訊轉換為大寫後儲存至 tmp who.out...
Linux標準I O和管道
程式 指令 資料 linux給程式提供三種 i o 裝置 標準輸入 stdin 0 預設接受來自鍵盤的輸入 標準輸出 stdout 1 預設輸出到終端視窗 標準錯誤 stderr 2 預設輸出到終端視窗 i o重定向 改變預設位置 重定向操作符 把標準輸出重定向到檔案 ls lh data ls.l...