在shell中,咱們常常要將一些指令執行的結果進行保存,或者想讓一些指令執行的錯誤信息不顯示到屏幕上,那麼咱們就須要用到數據流重定向功能。先介紹一下stdout, stderr, stdinshell
stdout和stderr的內容默認顯示到屏幕,而stdin的內容默認從鍵盤輸入。bash
標準輸出重定向使用符號: >(1>) 和 >>(1>>)code
標準錯誤輸出重定向使用的符號:2> 和 2>>file
標準輸入重定向使用符號:< 和 <<數據
4. >是1>的簡寫,>>是1>>的簡寫。重定向
[aliao@localhost ~]$ echo "aliao" > aliao.txt > 將是stdout重定向到aliao.txt [aliao@localhost ~]$ ls -a >> dir.txt > 將是stdout重定向到dir.txt,以累加的方式
[aliao@localhost ~]$ cat > newfile < oldfile > 將stdin重定向到oldfile,將stdout重定向到newfile
[aliao@localhost ~]$ find /home > stdout.txt 2> stderr.txt > 將stdout重定向到stdout.txt 將stderr重定向到stderr.txt
[aliao@localhost ~]$ find /home .bashrc > stdout.txt 2>&1 > stdout重定向到stdout.txt,而後再將stderr重定向到stdout.txt [aliao@localhost ~]$ find /home .bashrc > stderr.txt 1>&2 > stderr向到stderr.txt, 再將stdout向到stderr.txt
cat > aliao.txt << EOF 鍵盤輸入的內容 ... EOF
當從鍵盤輸入內容直到EOF時,cat就中止讀入數據了。EOF使用戶自定義的一個終止符號(此處我是用的是EOF),兩個EOF之間的內容會被讀取。di
補充內容:關於/dev/null
/dev/null是一個黑洞設備,能夠吃掉任何導入該設備的信息。若是用戶想要將一些輸出信息或者錯誤信息丟棄而不顯示到屏幕或者導入到文件的話,那麼能夠直接導入到/dev/null將其丟棄。文件
[aliao@localhost ~]$ find /home .bashrc > userBash.txt 2> /dev/null > 將正確的結果保存到文件userBash.txt,將錯誤信息丟棄。