數據流重定向
數據流可以分爲2種:
輸入數據流:以寫文件爲例,從鍵盤輸入的字符就輸入數據流
輸出數據流:以讀文件爲例,將文件內容顯示到屏幕上,顯示的內容就是輸出字符流
數量流重定向就是指改變數據流輸入的方式或輸出的介質。比如,輸入數據流可以是一個文件的內容,輸出數據流介質可以是文件而不單單的屏幕
對於命令行來說輸入數據流主要來自鍵盤,輸出數據流只要介質是屏幕。
同時輸出數據流又可分爲:
正確輸出
錯誤輸出
語法:
輸入數據流:使用<(覆蓋)或<<(累加)
正確輸出數據流:使用>(覆蓋)或>>(累加)
錯誤輸出數據流:使用2>(覆蓋)或2>>(累加)
說明:如果某些信息不想顯示到屏幕上也不保存到文件或設備上,可以講輸出數據流指向/dev/null
舉例1:正確輸出數據流(覆蓋)
[root@localhost ~]# ll > ll.file [root@localhost ~]# vim ll.file 總計 225968 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back ……..
舉例2:正確輸出數據流(累加)
[root@localhost ~]# ll /root >> ll.file 總計 225968 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back …….. 總計 225972 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back ……..
舉例3:正確輸出與錯誤輸出數據流
[root@localhost ~]# ll /root /root/error ls: /root/error: 沒有那個文件或目錄 =>錯誤信息 /root: =>正確信息 總計 225972 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back ……………….. [root@localhost ~]# ll /root /root/error >right.list 2>error.list [root@localhost ~]# cat right.list /root: 總計 225984 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back …………….. [root@localhost ~]# cat error.list ls: /root/error: 沒有那個文件或目錄
舉例4:正確與錯誤輸出數據流寫在一個文件中
[root@localhost ~]# ll /root /root/error >all.list 2>&1 [root@localhost ~]# cat all.list ls: /root/error: 沒有那個文件或目錄 /root: 總計 225996 -rw-r--r-- 1 root root 45 03-05 13:02 all.list -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg ………………..
命令執行的判斷依據(; && ||)
語法:
cmd;cmd:不考慮命令相關性連續額的命令執行
cmd1&& cmd2:若cmd1執行完畢且正確,則執行cmd2
若cmd1執行錯誤則不執行cmd2
cmd1|| cmd2:若cmd1執行完畢且正確,則不執行cmd2
若cmd1執行完畢且爲錯誤,則執行cmd2