日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux shell的标准输入、输出和错误

發(fā)布時間:2023/12/2 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux shell的标准输入、输出和错误 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.文件描述符

在linux shell執(zhí)行命令時,每個進程都和三個打開的文件相聯(lián)系,并使用文件描述符來引用這些文件。由于文件描述符不容易記憶,shell同時也給出了相應的文件名:

文件文件描述符
輸入文件—標準輸入0(缺省是鍵盤,為0時是文件或者其他命令的輸出)
輸出文件—標準輸出1(缺省是屏幕,為1時是文件)
錯誤輸出文件—標準錯誤2(缺省是屏幕,為2時是文件)
系統(tǒng)中實際上有12個文件描述符,我們可以任意使用文件描述符3到9.


2.文件重定向:改變程序運行的輸入來源和輸出地點

2.1.輸出重定向:

Command > filename把標準輸出重定向到一個新文件中
Command >> filename把標準輸出重定向到一個文件中(追加)
Command > filename把標準輸出重定向到一個文件中
Command > filename 2>&1把標準輸出和錯誤一起重定向到一個文件中
Command 2 > filename把標準錯誤重定向到一個文件中
Command 2 >> filename把標準輸出重定向到一個文件中(追加)
Command >> filename2>&1把標準輸出和錯誤一起重定向到一個文件(追加)

2.2.輸入重定向:

Command < filename > filename2Command命令以filename文件作為標準輸入,以filename2文件作為標準輸出
Command < filenameCommand命令以filename文件作為標準輸入
Command << delimiter?從標準輸入中讀入,知道遇到delimiter分界符

2.3.綁定重定向

Command >&m把標準輸出重定向到文件描述符m中
Command < &-關閉標準輸入
Command 0>&-同上


3.shell重定向的一些高級用法

3.1.重定向標準錯誤

例子1:
command 2> /dev/null
如果command執(zhí)行出錯,將錯誤的信息重定向到空設備
例子2:
command > out.put 2>&1
將command執(zhí)行的標準輸出和標準錯誤重定向到out.put(也就是說不管command執(zhí)行正確還是錯誤,輸出都打印到out.put)。


3.2.exec用法
exec命令可以用來替代當前shell;換句話說,并沒有啟動子shell,使用這一條命令時任何現(xiàn)有環(huán)境變量將會被清除,并重新啟動一個shell(重新輸入用戶名和密碼進入)。
exec command
其中,command通常是一個shell腳本。
對文件描述符操作的時候用(也只有再這時候),它不會覆蓋你當前的shell


例子1:
#!/bin/bash
#file_desc


exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2


其中:
首先,exec 3<&0 0<name.txt的意思是把標準輸入重定向到文件描述符3(0表示標準輸入),然后把文件name.txt內容重定向到文件描述符0,實際上就是把文件name.txt中的內容重定向到文件描述符3。然后通過exec打開文件描述符3;

然后,通過read命令讀取name.txt的第一行內容line1,第二行內容line2,通過Exec 0<&3關閉文件描述符3;

最后,用echo命令輸出line1和line2。最好在終端運行一下這個腳本,親自嘗試一下。


例子2:
exec 3<>test.sh;
#打開test.sh可讀寫操作,與文件描述符3綁定
?
while read line<&3
?do
? ? echo $line;
done
#循環(huán)讀取文件描述符3(讀取的是test.sh內容)
exec 3>&-
exec 3<&-
#關閉文件的,輸入,輸出綁定


參考:

http://zqwt.012.blog.163.com/blog/static/1204468420103272857116/

http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html

http://blog.csdn.net/flowingflying/article/details/5201199

總結

以上是生活随笔為你收集整理的Linux shell的标准输入、输出和错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。