重導向

將指令的輸入輸出導向到其它地方去,例如:檔案。

$ command < inputData > outputData 2> error.log 將輸入導向到 inputData 輸出導向到 outputData 錯誤導向到 error.log 輸出會覆蓋檔案

輸出的1為一般輸出 輸出的2為錯誤輸出

$ command < inputData >> outputData 輸出覆加到 outputData,而不是覆蓋

$ command < inputData > outputData 2>&1 把錯誤訊息和正常輸出導向一起 &1 的意思為,和1(正常輸出)一樣位置

$ command 2>&1 > outputData 把標準錯誤導向到標準輸出 再把標準輸出導向到 outputData 與上述順序不同,此標準輸出已變成錯誤訊息

$ command < inputData &> outputData 同上,更為精簡的寫

$ command < inputData > /dev/null 捨棄輸出

$ command < inputData | tee [-a] outputData 將輸出導向到 outputData 並顯示在螢幕上 -a 以覆加檔案的方式

管線

管線就好像把資料用一條水管通到另一個地方 繼續使用傳過來的資料

$ ls | cat 將 ls 指令的輸出管線到 cat 作為其內容

xargs

$ command1 | xargs [-d] '\n' command2 xargs 為將 command1 的輸出導向給 xargs 做為標準輸入,並分割後做為 command2 的參數 -d 指定分割符號,預設為空白和換行,\n 為換行(mac 沒有此指令)

舉例

$ ls . | xargs cat 將當前資料夾的所有檔名導向給 xargs 做為標準輸入 並分割後做為 cat 的參數 所以這裡會標準輸出此資料夾下的所有檔案

Last updated