1. 程式人生 > >管道和重定向相關的命令

管道和重定向相關的命令

一、重定向輸出

注:以下的$都表示在普通使用者的許可權下就可以執行

1、$ ls -1 > lsoutput.txt  這條命令把ls命令的輸出儲存到檔案isoutput.txt中,它通過>操作符把標準輸出定向到一個檔案,在預設的情況下,如果該檔案已經存在,他的內容將被覆蓋。如果想改變預設行為,可以使用set -o noclobber(或set -C)命令設定noclobber選項,從而阻止重定向操作對一個已有檔案的覆蓋。取消該選項可以使用 set +o noclobber命令,$ ps >> lsoutput.txt 將ps命令的輸出附加指定檔案的尾部。

2、如果相對標準錯誤輸出進行重定向,你需要把想要的重定向檔案描述符編號加在 > 操作符的前面。因為標準錯誤輸出發文件描述符編號是2,所以使用2>操作符。當需要丟棄錯誤資訊並且阻止它顯示在螢幕上是,這個方法很有用

3、下面的命令把標準輸出和標準錯誤輸出分別重定向到不同的檔案中:

$ kill -HUP 1234 >killout.txt 2>killer

下面是把標準輸出和標準錯誤輸出都重定向到同一個檔案中

$ kill -1 1234 >killouterr.txt  2>&1,這條命令的含義是:將標準輸出定向到檔案killouter.txt,然後將標準錯誤輸出重定向到與標準輸出相同的地方。

二、重定向輸入

$ more  <  killout.txt  很明顯,在Linux下這樣做意義不大,因為Linux的命令可以接收檔名作為引數,這與Windows命令列中對應的命令不同。

三、管道

可以用管道操作符“ | ”來連線程序。在Linux通過管道連線的程序可以同時執行,並且隨著資料流在它們之間的傳遞可以自動地進行協調。舉例:你可以使用sort命令對ps命令的輸出進行排序:

$ ps | sort > pssort.out

如果想在螢幕上分頁顯示輸出結果:

$ ps | sort | more

允許連線的程序數目是沒有限制的,假設你想看看系統中執行的所有程序的名字,但不包括shell本身,可以使用下面的命令:

$ ps -xo comm | sort | uniq | grep -v sh | more   這個命令首先按字母順序排序ps命令的輸出,再用uniq命令去除名字相同的程序,然後用grep -v sh命令刪除名為sh的程序,最終將結果分頁顯示再螢幕上