干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十年專(zhuān)注于品牌網(wǎng)站建設(shè) 十余年專(zhuān)注于網(wǎng)站建設(shè)_小程序開(kāi)發(fā)_APP開(kāi)發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
小程序
tel-icon全國(guó)服務(wù)熱線(xiàn):400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開(kāi)百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

介紹Linux中的幾種標(biāo)準(zhǔn)文件描述符

百恒網(wǎng)絡(luò) 2017-09-25 9057

Linux系統(tǒng)將每個(gè)對(duì)象當(dāng)作文件處理,這包括輸入和輸出進(jìn)程。Linux用文件描述符(file descriptor)來(lái)標(biāo)識(shí)每個(gè)文件對(duì)象。文件描述符是一個(gè)非負(fù)整數(shù),可以唯一標(biāo)識(shí)會(huì)話(huà)中打開(kāi)的文件。每個(gè)進(jìn)程一次多可以有九個(gè)文件描述符。出于特殊目的,bash shell保留了前三個(gè)文件描述符(0、1和2),詳情見(jiàn)下表。

Linux的標(biāo)準(zhǔn)文件描述符

Linux的標(biāo)準(zhǔn)文件描述符

這三個(gè)特殊文件描述符會(huì)處理腳本的輸入和輸出。shell用它們將shell默認(rèn)的輸入和輸出導(dǎo)向到相應(yīng)的位置。下面南昌網(wǎng)絡(luò)公司-百恒網(wǎng)絡(luò)就來(lái)為大家介紹一下這些標(biāo)準(zhǔn)文件描述符,供大家參考!

一、STDIN

STDIN文件描述符代表shell的標(biāo)準(zhǔn)輸入。對(duì)終端界面來(lái)說(shuō),標(biāo)準(zhǔn)輸入是鍵盤(pán)。shell從STDIN 文件描述符對(duì)應(yīng)的鍵盤(pán)獲得輸入,在用戶(hù)輸入時(shí)處理每個(gè)字符。

在使用輸入重定向符號(hào)(<)時(shí),Linux會(huì)用重定向指定的文件來(lái)替換標(biāo)準(zhǔn)輸入文件描述符。 它會(huì)讀取文件并提取數(shù)據(jù),就如同它是鍵盤(pán)上鍵入的。

許多bash命令能接受STDIN的輸入,尤其是沒(méi)有在命令行上指定文件的話(huà)。下面是個(gè)用cat 命令處理STDIN輸入的數(shù)據(jù)的例子。

$ cat

this is a test

this is a test

this is a second test.

this is a second test.

當(dāng)在命令行上只輸入cat命令時(shí),它會(huì)從STDIN接受輸入。輸入一行,cat命令就會(huì)顯示出 一行。

但你也可以通過(guò)STDIN重定向符號(hào)強(qiáng)制cat命令接受來(lái)自另一個(gè)非STDIN文件的輸入。

$ cat < testfile

This is the first line.

This is the second line.

This is the third line.

$

現(xiàn)在cat命令會(huì)用testfile文件中的行作為輸入。你可以使用這種技術(shù)將數(shù)據(jù)輸入到任何能從 STDIN接受數(shù)據(jù)的shell命令中。

二、STDOUT

STDOUT文件描述符代表shell的標(biāo)準(zhǔn)輸出。在終端界面上,標(biāo)準(zhǔn)輸出就是終端顯示器。shell 的所有輸出(包括shell中運(yùn)行的程序和腳本)會(huì)被定向到標(biāo)準(zhǔn)輸出中,也就是顯示器。

默認(rèn)情況下,大多數(shù)bash命令會(huì)將輸出導(dǎo)向STDOUT文件描述符。同時(shí),你也可以用輸出重定向來(lái)改變。

$ ls -l > test2

$ cat test2

total 20

-rw-rw-r-- 1 rich rich 53 2014-10-16 11:30 test

-rw-rw-r-- 1 rich rich 0 2014-10-16 11:32 test2

-rw-rw-r-- 1 rich rich 73 2014-10-16 11:23 testfile

$

通過(guò)輸出重定向符號(hào),通常會(huì)顯示到顯示器的所有輸出會(huì)被shell重定向到指定的重定向文件。你也可以將數(shù)據(jù)追加到某個(gè)文件。這可以用>>符號(hào)來(lái)完成。

$ who >> test2

$ cat test2

total 20

-rw-rw-r-- 1 rich rich 53 2014-10-16 11:30 test

-rw-rw-r-- 1 rich rich 0 2014-10-16 11:32 test2

-rw-rw-r-- 1 rich rich 73 2014-10-16 11:23 testfile

rich pts/0 2014-10-17 15:34 (192.168.1.2)

$

who命令生成的輸出會(huì)被追加到test2文件中已有數(shù)據(jù)的后面。 但是,如果你對(duì)腳本使用了標(biāo)準(zhǔn)輸出重定向,你會(huì)遇到一個(gè)問(wèn)題。下面的例子說(shuō)明了可能會(huì)出現(xiàn)什么情況。

$ ls -al badfile > test3

ls: cannot access badfile: No such file or directory

$ cat test3

$

當(dāng)命令生成錯(cuò)誤消息時(shí),shell并未將錯(cuò)誤消息重定向到輸出重定向文件。shell創(chuàng)建了輸出重 定向文件,但錯(cuò)誤消息卻顯示在了顯示器屏幕上。注意,在顯示test3文件的內(nèi)容時(shí)并沒(méi)有任何錯(cuò)誤。test3文件創(chuàng)建成功了,只是里面是空的。

shell對(duì)于錯(cuò)誤消息的處理是跟普通輸出分開(kāi)的。如果你創(chuàng)建了在后臺(tái)模式下運(yùn)行的shell腳本,通常你必須依賴(lài)發(fā)送到日志文件的輸出消息。用這種方法的話(huà),如果出現(xiàn)了錯(cuò)誤信息,這些信息是不會(huì)出現(xiàn)在日志文件中的。你需要換種方法來(lái)處理。

三、STDERR

shell通過(guò)特殊的STDERR文件描述符來(lái)處理錯(cuò)誤消息。STDERR文件描述符代表shell的標(biāo)準(zhǔn)錯(cuò)誤輸出。shell或shell中運(yùn)行的程序和腳本出錯(cuò)時(shí)生成的錯(cuò)誤消息都會(huì)發(fā)送到這個(gè)位置。

默認(rèn)情況下,STDERR文件描述符會(huì)和STDOUT文件描述符指向同樣的地方(盡管分配給它們的文件描述符值不同)。也就是說(shuō),默認(rèn)情況下,錯(cuò)誤消息也會(huì)輸出到顯示器輸出中。

但從上面的例子可以看出,STDERR并不會(huì)隨著STDOUT的重定向而發(fā)生改變。使用腳本時(shí),你常常會(huì)想改變這種行為,尤其是當(dāng)你希望將錯(cuò)誤消息保存到日志文件中的時(shí)候。

以上就是南昌網(wǎng)絡(luò)公司為大家介紹的關(guān)于Linux中的三種標(biāo)準(zhǔn)文件描述符,大家可以了解一下,希望對(duì)大家今后的學(xué)習(xí)有所幫助。此外,百恒網(wǎng)絡(luò)專(zhuān)注于網(wǎng)站建設(shè)、微信開(kāi)發(fā)、南昌物聯(lián)網(wǎng)開(kāi)發(fā)、APP開(kāi)發(fā)制作等服務(wù),如有需要,歡迎大家來(lái)電咨詢(xún),洽談合作!

400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開(kāi)百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專(zhuān)線(xiàn) 備案專(zhuān)線(xiàn)
 
×
乡城县| 贡觉县| 蒙山县| 瓦房店市| 临颍县| 佛坪县| 郓城县| 天全县| 满城县| 甘谷县| 扶沟县| 嘉义市| 奇台县| 庄浪县| 招远市| 报价| 永丰县| 博野县| 台前县| 元谋县| 米泉市| 高碑店市| 远安县| 布拖县| 平果县| 乌苏市| 德钦县| 河南省| 政和县| 临城县| 宝清县| 宁明县| 上虞市| 都匀市| 韶关市| 庆云县| 田林县| 孝昌县| 平遥县| 神木县| 闽侯县|