1、標準輸入輸出
我們知道,執行一個shell命令行時通常會自動打開三個標準文件, 即標準輸入文件(stdin),通常對應終端的鍵盤; 標準輸出文件(stdout) 標準錯誤輸出文件(stderr),這兩個文件都對應終端的屏幕。 進程將從標準輸入文件中得到輸入數據,將正常輸出數據輸出到標準輸出文件,而將錯誤信息送到標準錯誤文件中。 >默認為標準輸出重定向,與 1>相同 2>&1意思是把 標準錯誤輸出 重定向到 標準輸出. &>file意思是把 標準輸出 和 標準錯誤輸出 都重定向到文件file中 2>&1 > file 把錯誤輸出定向到標準輸出(此時標準輸出為終端,所以輸出到終端), 標準輸出定位到文件 > file 2>&1 把標準輸出定位到文件,錯誤輸出到標準輸出(此時標準輸出指向文件,所以輸出到文件) ():合并多個程序的STDOUT ( cal 2007 ; cal 2008 ) > all.txt
2、tr命令
tr 轉換和刪除字符 ? tr [OPTION]... SET1 [SET2] ? 選項: [root@localhost ~]# tr ‘a-z’ ‘A-Z’< /etc/issue CENTOS RELEASE 6.8 (FINAL) KERNEL \R ON AN \M -c或--complerment:取字符集的補集 -d或--delete:刪除所有屬于第一字符集的字符 [root@localhost ~]# echo "0123asdf..**-" |tr -cd '[0-9]' 0123 -s或--squeeze-repeats:把連續重復的字符以單獨一個字符表示 -t或--truncate-set1:將第一個字符集對應字符轉化為第二字符集對應的字符
3、此處文檔(Here documents)
用法:1、多行傳遞文本 [root@localhost ~]# cat << EOF > nihao > hello > EOF nihao hello EOF為標識符字符,可隨意寫。 用法:2、傳遞參數給需要參數的腳本或程序 vi $1 <<CLOUD i # 進入vim編輯模式 This is line 1 This is line 2 ^[ # ^[ 一個特殊轉義符用于返回命令行模式。寫腳本時按ctrl+v再按<Esc>就能自動打出這個字符。 ZZ # 保存退出vim CLOUD # 結束標識符
4、管道
管道命令 操作符是:| ,它只能處理經由前面一個指令傳出的正確輸出信息,對錯誤信息信息沒有直接處理能力。然后,傳遞給下一個命令,作為標準的輸入。 “錯誤輸出”默認不能通過管道轉發,可利用2>&1 或 |& 實現 [root@localhost ~]# cat /e |& tr 'a-z' 'A-Z' CAT: /E: 沒有那個文件或目錄 #set -C :禁止覆蓋輸出重定向至已存在文件,僅對當前shell有效 >|:強制覆蓋輸出 #set +C:關閉上述特性
5、重定向到多個目標:tee命令
[root@localhost ~]# ls /root/ |tee a.txt|tr 'a-z' 'A-Z' ANACONDA-KS.CFG INSTALL.LOG INSTALL.LOG.SYSLOG 公共的 模板 視頻 圖片 [root@localhost ~]# cat a.txt anaconda-ks.cfg install.log install.log.syslog 公共的 模板 視頻 圖片 把命令1的STDOUT保存在文件名中,然后管道輸入給命令2使用 -a:追加至文件而非覆蓋
用戶和組
原創文章,作者:M20-1--孔祥文,如若轉載,請注明出處:http://www.www58058.com/27275