Shell命令進行I/O重定向, 默認標準正確輸出路徑在/dev/pts字符設備下
重定向數據流的三種信息流
1、標準輸入流(stdin):代碼爲0,符號爲<或<<
2、標準輸出流(stdout):代碼爲1,符號爲>或>>
3、標準錯誤流(stderr):代碼爲2,符號爲2>或2>>
重定向的3類形式
1、>或2>:以覆蓋的方式輸出
2、>>或2>>:以追加的方式輸出
3、<:標準輸入流默認從鍵盤輸入,<<:用於設定結束輸入的關鍵字
例如:cat > test.sh << EOF 則只有當輸入EOF並回車之後纔會執行完cat 命令
簡單幾個實驗說明
1 定向”hello world ”回顯內容覆蓋到test.txt
注意:重定向會覆蓋原文件內容
繼續將 “hehe”回顯內容追加到test.txt
注意:追加不會覆蓋源文件內容
2 將定向輸入內容顯示輸出到屏幕上
注意:只有當輸入EOF並回車之後纔會執行完cat 命令
3 查找/etc下的命名爲passwd的文件 定向正確輸出覆蓋到test.ok 定向錯誤輸出覆蓋到test.err
繼續查找/etc下的命名爲passwd的文件定向所有輸出到test.all
繼續查找/etc下的命名爲passwd的文件定向正確輸出追加到test.ok 定向錯誤輸出追加到test.err
注意:以上實驗必須在普通用戶下完成
管道符
1、管道命令的界定符號爲”|”
2、管道命令僅會處理stdout,對stderr會忽略
3、管道命令必須要能夠接收來自前一個命令的數據作爲stdin
簡單的幾個實驗
注意:以下實驗必須在普通用戶下完成
1 查找/etc下的命名爲passwd的文件定向錯誤輸出清空並通過管道符顯示輸出行數
繼續查找/etc下的命名爲passwd的文件定向錯誤輸出清空通過把輸出保存到test文件再通過管道符顯示輸出行數
繼續查找/etc下的命名爲passwd的文件定向錯誤輸出2>&1轉換爲輸出流編碼爲1作爲正確輸出通過把輸出保存到test文件再通過管道符顯示輸出行數
2 查找/bin下的命名裏有大寫字母的文件定向錯誤輸出清空通過把輸出保存到test文件再通過管道符顯示輸出單詞數