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