在Unix以及類Unix平台下,shell中關系到輸入與輸出命令大致如下(可能不全):
echo、read、cat、tree、less、more
在Linux的shell中光是一個單獨的命令,不能印證shell的強大。結合 管道 和 重定向 才能展現其魅力無窮。
管道,不用多說,就是將前一個命令的輸出當做下一命令的輸入。
下面講一下文件重定向(以前我自己沒有理解到的地方)
輸出重定向:
command > filename #將標准輸出重定向到文件filename中
等價於: command 1>filename
command >> filename #將標准輸出追加到文件中
等價於:command 1>>filename
command 2> filenname #將標准錯誤重定向到文件中
command 2>> filename #已追加方式將錯誤放入文件中
command [>|>>] &m #將輸出重定向到文件描述符m所代表的文件中,括號中的符號2選1
輸入重定向:
command < filename
command << delimiter #例如cat命令: cat > file << delimiter,將delimiter重定向到標准輸入後,在向file文件中寫內容時,遇到delimiter結束。
command < &m #將文件描述符m所指文件作為標准輸入
command < &- #關閉標准輸入
上面的重定下命令,糅合到一起可以是這樣:
command [>|>>] filename 2>&1 #將標准輸入和標准錯誤輸出都重定向到文件中了
command < filename1 > filename2 #將filename1作為標准輸入,,標准輸出到filename2
細心的朋友可能注意到,在使用文件描述符的時候,為什麼有些前面帶有符號'&',而有些又沒有呢。
cat file > 2 #將標准輸出重定向到 名為2的文件中
cat file >& 2 #將標准輸出重定向到標准錯誤輸出
cat file > &2 #語法錯誤
得到一個結論,符號'&'只能和重定向符號挨在一起,有'&' 表示後面的數字代表文件描述符,否則為普通文件。
好了,暫時告一段落,如果有不對的地方,忘各位指正!!