深入講解shell命令輸出重定向
學習shell命令時,你可能會遇到shell輸出重定向問題,這里將介紹shell命令輸出重定向問題的解決方法,在這里拿出來和大家分享一下。由于大多數shell命令都以參數的形式在命令行上指定輸入文件的文件名,所以輸入重定向并不經常使用。盡管如此,當要使用一個不接受文件名作為輸入參數的shell命令,而需要的輸入內容又存在一個文件里時,就能用輸入重定向解決問題。
shell輸出重定向
輸出重定向是指把shell命令(或可執行程序)的標準輸出或標準錯誤輸出重新定向到指定文件中。這樣,該命令的輸出就不顯示在屏幕上,而是寫入到指定文件中。
輸出重定向比輸入重定向更常用,很多情況下都可以使用這種功能。例如,如果某個命令的輸出很多,在屏幕上不能完全顯示,那么將輸出重定向到一個文件中,然后再用文本編輯器打開這個文件,就可以查看輸出信息;如果想保存一個shell命令的輸出,也可以使用這種方法。還有,輸出重定向可以用于把一個命令的輸出當作另一個命令的輸入(還有一種更簡單的方法,就是使用管道,將在下面介紹)。
輸出重定向的一般形式為:命令>文件名。例如:
$ ls > directory.out
$ cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
將ls命令的輸出保存為一個名為directory.out的文件。
注:如果>符號后邊的文件已存在,那么這個文件將被重寫。
為避免輸出重定向中指定文件只能存放當前命令的輸出重定向的內容,shell提供了輸出重定向的一種追加手段。輸出追加重定向與輸出重定向的功能非常相似,區別僅在于輸出追加重定向的功能是把shell命令(或可執行程序)的輸出結果追加到指定文件的***,而該文件原有內容不被破壞。
如果要將一條shell命令的輸出結果追加到指定文件的后面,可以使用追加重定向操作符>>。形式為:命令>>文件名。例如: $ ls *.doc>>directory.out
$ cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
ch1.doc ch2.doc ch3.doc
和程序的標準輸出重定向一樣,程序的錯誤輸出也可以重新定向。使用符號2>(或追加符號2>>)表示對錯誤輸出設備重定向。例如下面的shell命令: $ ls /usr/tmp 2> err.file
可在屏幕上看到程序的正常輸出結果,但又將程序的任何錯誤信息送到文件err.file中,以備將來檢查用。
還可以使用另一個輸出重定向操作符(&>)將標準輸出和錯誤輸出同時送到同一文件中。例如: $ ls /usr/tmp &> output.file
利用重定向將命令組合在一起,可實現系統單個命令不能提供的新功能。例如使用下面的shell命令序列:
$ ls /usr/bin > /tmp/dir
$ wc –w < /tmp/dir 459 統計了/usr/bin目錄下的文件個數。
【編輯推薦】