久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Linux重定向怎么用

153次閱讀
沒有評論

共計 2764 個字符,預(yù)計需要花費(fèi) 7 分鐘才能閱讀完成。

這篇文章給大家分享的是有關(guān) Linux 重定向怎么用的內(nèi)容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

Linux 重定向是指修改原來默認(rèn)的一些東西,對原來系統(tǒng)命令的默認(rèn)執(zhí)行方式進(jìn)行改變,比如說簡單的我不想看到在顯示器的輸出而是希望輸出到某一文件中就可以通過 Linux 重定向來進(jìn)行這項工作。

Linux 默認(rèn)輸入是鍵盤,輸出是顯示器。你可以用重定向來改變這些設(shè)置。比如用 wc 命令的時候本來是要手動輸入一篇文字來計算字符數(shù)的,用了重定向后可以直接把一個已經(jīng)寫好的文件用‘’指向這條命令,就直接可以統(tǒng)計這個文件的字符數(shù)等了。輸出也是一樣,你可以把屏幕輸出重定向到一個文件里,再到文件里去看結(jié)果。重定向操作符可以用來將命令輸入和輸出數(shù)據(jù)流從默認(rèn)位置重定向到其他位置,其輸入或輸出數(shù)據(jù)流的位置稱為句柄;常見的句柄有三種,當(dāng)然句柄可以自行擴(kuò)展,一般的 OS 都提供類似的功能。句柄 句柄代號 句柄描述
STDIN 0 鍵盤輸入
STDOUT 1 輸出信息到提示符窗口
STDERR 2 輸出錯誤信息到提示符窗口

默認(rèn)的 重定向輸入操作符是 0,而默認(rèn)的 重定向輸出操作符是 1。鍵入 或 操作符之后,必須指定數(shù)據(jù)的讀寫位置,可以是文件名或其他現(xiàn)有的句柄。
要指定重定向到現(xiàn)有句柄,請使用與 字符,后面接要重定向的句柄號(即 句柄號)。
例如,下面的命令可以將句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):2 1
下表列出了可用于重定向輸入和輸出數(shù)據(jù)流的操作符:

Linux 重定向操作符 功能描述
將命令輸出寫入文件或設(shè)備,而不是命令提示符或句柄
從文件而不是從鍵盤或句柄讀入命令輸入
將命令輸出添加到文件末尾而不刪除文件中已有的信息
將一個句柄的輸出寫入到另一個句柄的輸入中
從一個句柄讀取輸入并將其寫入到另一個句柄輸出中
| 從一個命令中讀取輸出并將其寫入另一個命令的輸入中;也稱為管道操作符

現(xiàn)在我們回過頭來看看上面的那條語句 mysh mylog.txt 2 1 就可明白:

mylog.txt 意思是將標(biāo)準(zhǔn)輸出重定向到 mylog.txt,等價于 mysh 1 mylog.txt;

2 1 意思是將錯誤輸出重定向到句柄 1 標(biāo)準(zhǔn)輸出;綜合起來就是 mysh 命令執(zhí)行過程中產(chǎn)生的標(biāo)準(zhǔn)輸出和錯誤輸出都會被重定向到 mylog.txt 中;

重定向的功能十分強(qiáng)大,有興趣的可以去嘗試各種不同的組合,看看前后位置變下會有什么結(jié)果?

某些時候我們可能并不希望記錄什么標(biāo)準(zhǔn)輸出或者是錯誤輸出,那可以用 mysh null 2 null 或者 mysh /dev/null 2 /dev/null;

I/ O 重定向詳解

1、基本概念(這是理解后面的知識的前提,請務(wù)必理解)

a、I/ O 重定向通常與 FD 有關(guān),shell 的 FD 通常為 10 個,即 0~9;

b、常用 FD 有 3 個,為 0(stdin,標(biāo)準(zhǔn)輸入)、1(stdout,標(biāo)準(zhǔn)輸出)、2(stderr,標(biāo)準(zhǔn)錯誤輸出),默認(rèn)與 keyboard、monitor、monitor 有關(guān);

c、用 來改變讀進(jìn)的數(shù)據(jù)信道(stdin),使之從指定的檔案讀進(jìn);

d、用 來改變送出的數(shù)據(jù)信道(stdout, stderr),使之輸出到指定的檔案;

e、0 是 的默認(rèn)值,因此 與 0 是一樣的;同理,與 1 是一樣的;

f、在 IO 重定向 中,stdout 與 stderr 的管道會先準(zhǔn)備好,才會從 stdin 讀進(jìn)資料;

g、管道“|”(pipe line): 上一個命令的 stdout 接到下一個命令的 stdin;

h、tee 命令是在不影響原本 I/O 的情況下,將 stdout 復(fù)制一份到檔案去;

i、bash(ksh)執(zhí)行命令的過程:分析命令-變量求值-命令替代(“ 和 $())-重定向-通配符展開-確定路徑-執(zhí)行命令;

j、() 將 command group 置于 sub-shell 去執(zhí)行,也稱 nested sub-shell,它有一點非常重要的特性是:繼承父 shell 的 Standard input, output, and error plus any other open file descriptors。

k、exec 命令:常用來替代當(dāng)前 shell 并重新啟動一個 shell,換句話說,并沒有啟動子 shell。使用這一命令時任何現(xiàn)有環(huán)境都將會被清除。exec 在對文件描述符進(jìn)行操作的時候,也只有在這時,exec 不會覆蓋你當(dāng)前的 shell 環(huán)境。

2、基本 IO

cmd file 把 stdout 重定向到 file 文件中;

cmd file 把 stdout 重定向到 file 文件中(追加);

cmd 1 fiel 把 stdout 重定向到 file 文件中;

cmd file 2 1 把 stdout 和 stderr 一起重定向到 file 文件中;

cmd 2 file 把 stderr 重定向到 file 文件中;

cmd 2 file 把 stderr 重定向到 file 文件中(追加);

cmd file 2 1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);

cmd file file2 cmd 命令以 file 文件作為 stdin,以 file2 文件作為 stdout;

cat file 以讀寫的方式打開 file;

cmd file cmd 命令以 file 文件作為 stdin;

cmd delimiter Here document,從 stdin 中讀入,直至遇到 delimiter 分界符。

3、進(jìn)階 IO

n 使用系統(tǒng)調(diào)用 dup (2) 復(fù)制文件描述符 n 并把結(jié)果用作標(biāo)準(zhǔn)輸出;

n 標(biāo)準(zhǔn)輸入復(fù)制自文件描述符 n;

– 關(guān)閉標(biāo)準(zhǔn)輸入(鍵盤);

– 關(guān)閉標(biāo)準(zhǔn)輸出;

n – 表示將 n 號輸入關(guān)閉;

n – 表示將 n 號輸出關(guān)閉;

上述所有形式都可以前導(dǎo)一個數(shù)字,此時建立的文件描述符由這個數(shù)字指定而不是缺省的 0 或 1。如:

… 2 file 運(yùn)行一個命令并把錯誤輸出 (文件描述符 2) 定向到 file。

… 2 1 運(yùn)行一個命令并把它的標(biāo)準(zhǔn)輸出和輸出合并。(嚴(yán)格的說是通過復(fù)制文件描述符 1 來建立文件描述符 2,但效果通常是合并了兩個流。)

我們對 2 1 詳細(xì)說明一下:2 1 也就是 FD2=FD1,這里并不是說 FD2 的值 等于 FD1 的值,因為 是改變送出的數(shù)據(jù)信道,也就是說把 FD2 的“數(shù)據(jù)輸出通道”改為 FD1 的“數(shù)據(jù)輸出通道”。如果僅僅這樣,這個改變好像沒有什么作用,因為 FD2 的默認(rèn)輸出和 FD1 的默認(rèn)輸出本來都是 monitor,一樣的!但是,當(dāng) FD1 是其他文件,甚至是其他 FD 時,這個就具有特殊的用途了。請大家務(wù)必理解這一點。

exec 0exec 1 outfilename # 打開文件 outfilename 作為 stdout。

exec 2 errfilename # 打開文件 errfilename 作為 stderr。

exec 0 – # 關(guān)閉 FD0。

exec 1 – # 關(guān)閉 FD1。

exec 5 – # 關(guān)閉 FD5。

感謝各位的閱讀!關(guān)于“Linux 重定向怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計2764字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁乡县| 乌兰县| 云龙县| 邢台市| 涟水县| 深州市| 东台市| 九寨沟县| 忻城县| 凉山| 嘉义市| 四会市| 滦南县| 宁南县| 东丽区| 含山县| 溆浦县| 永春县| 绥芬河市| 凌云县| 桐城市| 施秉县| 淮安市| 资中县| 大安市| 正蓝旗| 鄂托克前旗| 黄大仙区| 嫩江县| 东乡县| 灵山县| 库车县| 南丹县| 石门县| 台北市| 宜宾市| 桐庐县| 洪洞县| 黄梅县| 林甸县| 邵东县|