Linux I/O重定向
Linux I/O重定向可以定義為,更改從命令讀取輸入到命令發(fā)送輸出的方式。你可以重定向命令的輸入和輸出。對(duì)于重定向符號(hào),可以是<、> 或者 | 。
I/O重定向中的標(biāo)準(zhǔn)流
Bash shell在I/O重定向中有三個(gè)標(biāo)準(zhǔn)流:
標(biāo)準(zhǔn)輸入(stdin):stdin流編號(hào)為stdin(0)。bash shell從stdin獲取輸入。默認(rèn)情況下,鍵盤用作輸入。 標(biāo)準(zhǔn)輸出(stdout):stdout流編號(hào)為stdout(1)。bash shell將輸出發(fā)送到stdout。輸出將顯示。 標(biāo)準(zhǔn)錯(cuò)誤(stderr):stderr流編號(hào)為stderr(2)。bash shell向stderr發(fā)送錯(cuò)誤消息。顯示錯(cuò)誤消息。
重定向到文件
每個(gè)流都使用重定向命令。單括號(hào)'>'或雙括號(hào)'>>'可用于重定向標(biāo)準(zhǔn)輸出。如果目標(biāo)文件不存在,將創(chuàng)建一個(gè)具有相同名稱的新文件。
覆蓋:帶有單括號(hào)“>”的命令將覆蓋現(xiàn)有的文件內(nèi)容。
>:標(biāo)準(zhǔn)輸出 <:標(biāo)準(zhǔn)輸入 2>:標(biāo)準(zhǔn)錯(cuò)誤
注意:寫“1>”或“>”和“0<”或“<”是一回事。但對(duì)于stderr,必須編寫“2>”。
用法: cat >
追加: 帶有雙括號(hào)“>>”的附加命令不會(huì)覆蓋現(xiàn)有的文件內(nèi)容。
>>-標(biāo)準(zhǔn)輸出 <<-標(biāo)準(zhǔn)輸入 2>>-標(biāo)準(zhǔn)錯(cuò)誤
用法: cat >>
重定向到程序
重定向到程序管道將流從一個(gè)程序重定向到另一個(gè)程序。當(dāng)管道用于將一個(gè)程序的標(biāo)準(zhǔn)輸出發(fā)送到另一個(gè)程序時(shí),第一個(gè)程序的數(shù)據(jù)將不會(huì)顯示在終端上,只顯示第二個(gè)程序的信息。盡管管道的功能看起來(lái)可能與“>”和“>>”相似,但有顯著差異。管道將數(shù)據(jù)從一個(gè)程序重定向到另一個(gè)程序,而括號(hào)僅用于文件的重定向。
用法: ls *.txt | cat > txtFile
Linux input 重定向
bash shell使用stdin獲取輸入。在輸入重定向中,將文件輸入命令,并在“<”符號(hào)的幫助下執(zhí)行此重定向。
<<文檔
EOF(文件結(jié)束)可以鍵入,也可以通過(guò)按(ctrl+d)鍵調(diào)用。任何單詞都可以代替“EOF”,就像我們使用的“l(fā)ast”一樣。
<<字符串
字符串用于將字符串直接傳遞給命令。
Linux輸出重定向
輸出重定向用于將一個(gè)命令的輸出放入文件或另一個(gè)命令。
> stdout
stdout使用大于號(hào)'>'重定向。當(dāng)shell遇到'>'號(hào)時(shí),它將清除文件:
輸出文件被擦除
在輸出重定向中,在掃描命令行的過(guò)程中,shell將遇到“>”符號(hào),并將清除文件。
nolobber
我們可以在nolobber選項(xiàng)的幫助下,在使用'>'符號(hào)時(shí)防止文件刪除。
否定noclobber
重寫nolobber意味著您可以在使用'>|'符號(hào)設(shè)置nolobber時(shí)覆蓋現(xiàn)有文件。
>>append
append'>>'不允許覆蓋文件內(nèi)容,因此顯示新的和舊的文件內(nèi)容。
Linux錯(cuò)誤重定向
2> stderr
命令'2>'重定向輸出的錯(cuò)誤,它可以通過(guò)重定向錯(cuò)誤消息來(lái)幫助我們減少顯示的混亂。
2> &1
此命令有助于重定向同一文件中的stdout和stderr。
注意:重定向的順序非常重要:
然后,stdout和stderr都將被定向到文件目錄列表:
然后,只有stdout會(huì)重定向到目錄列表。這是因?yàn)椋趯tdout重定向到目錄列表之前,stderr已經(jīng)復(fù)制了stdout。
審核編輯:湯梓紅
Syntax:
cat <
[root@localhost ~]# cat < f.txt
aa
[root@localhost ~]#
Syntax:
cat <
Example:
base64 <<< format.txt
Example:
echo Hello everyone. > afile.txt
Example:
zcho Welcome > afile.txt
Syntax:
set -o noclobber (防止覆蓋)
set +o noclobber (覆蓋)
Example:
echo Learn Linux. > newfile.txt
Syntax:
command >|
Syntax:
command >>
Example:
echo You all are welcome here. >> newfile.txt
Example:
zcho hyii 2> /dev/null
Example:
newfile.txt > abc.txt and error.txt 2>&1
ls > dirlist 2>&1
ls 2>&1 > dirlist
-
Linux
+關(guān)注
關(guān)注
87文章
11350瀏覽量
210476 -
命令
+關(guān)注
關(guān)注
5文章
697瀏覽量
22119 -
Shell
+關(guān)注
關(guān)注
1文章
366瀏覽量
23468 -
Bash
+關(guān)注
關(guān)注
0文章
57瀏覽量
10209 -
重定向
+關(guān)注
關(guān)注
0文章
9瀏覽量
7405
原文標(biāo)題:Linux錯(cuò)誤重定向
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux后臺(tái)程序重定向的問(wèn)題
linux shell數(shù)據(jù)重定向(輸入重定向與輸出重定向)詳細(xì)分析
Linux Shell系列教程之(十六) Shell輸入輸出重定向
實(shí)現(xiàn)printf函數(shù)的重定向
DNS 重定向的缺陷
實(shí)現(xiàn)重定向printf()和scanf() 函數(shù)案例分析
![實(shí)現(xiàn)<b class='flag-5'>重定向</b>printf()和scanf() 函數(shù)案例分析](https://file.elecfans.com/web1/M00/55/76/o4YBAFstphWAMkacAAF2cb4iapk676.png)
如何更改 Linux 的 I/O 調(diào)度器
![如何更改 <b class='flag-5'>Linux</b> 的 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 調(diào)度器](https://file.elecfans.com/web1/M00/92/3C/pIYBAFzbxcSAJnc-AAAiA0yZMo0368.png)
單片機(jī)printf重定向的函數(shù)免費(fèi)下載
![單片機(jī)printf<b class='flag-5'>重定向</b>的函數(shù)免費(fèi)下載](https://file.elecfans.com/web1/M00/9A/28/pIYBAF0cJMKAEvqGAAjOA4IJhtY560.png)
Keil下使用STlink重定向printf的配置
![Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論