Linux中的重定向 標準輸入、標準輸出、標準錯誤

Linux中的重定向 標準輸入、標準輸出、標準錯誤

類型 數字 英文 縮寫
標準輸入 0 standard input stdin
標準輸出 1 standard output stdout
標準錯誤 2 standard error stderr

標準輸出 重定向

>把標準輸出重定向到新文件
等於1>1可省略
標準錯誤不適應,要用&>或者2>
會覆蓋已有文件,追加用>>

systemctl status httpd > httpd		# 命令能執行成功,無屏顯,內容都存到httpd
systemctl status dfasdfdsfas > httpd	# 命令能執行失敗,屏顯錯誤,httpd文件顯示空白

>>追加符,不覆蓋原有文件
等於1>>1可省略
標準錯誤不適應,要用&>>或者2>>

把標準輸出、標準錯誤重定向到文件

[命令] > /dev/null 2>&1
[命令] >& /dev/null
[命令] &> /dev/null

tee命令類似>,但只從管道接收數據
tee -a(append)類似>>
tee & tee -a都會屏顯,> & >>不屏顯
tee可以同時重定向到多個文件

~/Desktop via 🅒 base 
➜ echo 456 > 456.txt 4567.txt
(base) 
~/Desktop via 🅒 base 
➜ more 456.txt 
456 4567.txt
(base) 
~/Desktop via 🅒 base took 2s 
➜ cat 4567.txt
cat: 4567.txt: No such file or directory
(base) 

將命令1的結果既保存到file.txt中,也傳遞給命令2,並屏顯命令2的結果,tee只管前後兩個命令

[命令1] | tee file.txt | [命令2]
~/Desktop via 🅒 base 
➜ echo 123.txt | tee 123.txt | tr a-z A-Z
123.TXT
(base) 

標準輸入 重定向

<指定輸入文件
<<等待用戶輸入,需要一個結束符,常設定爲EOFEND
結合cat命令使用:

cat > file << END

tr命令

translate or delete characters

只處理字符,而非單行單列
只顯示處理結果,不修改原文件
從管道接收數據(同tee),或從輸入接收數據

替換字符並顯示:

~/Desktop via 🅒 base 
➜ echo 1234567 | tr 123 asd
asd4567
(base) 

壓縮(把多個重複的壓縮到一個)

~/Desktop via 🅒 base 
➜ echo 1:2::::3::::::::::4 | tr -s :
1:2:3:4
(base) 

刪除內容中的空格並打印在屏幕上

tr -d " " < file
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章