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