Linux | 深入理解 2 &1的含義 及 后面的 &

A.首先了解下1和2在Linux中代表什么

在Linux系統(tǒng)中0 1 2是一個文件描述符

名稱代碼操作符Linux 下文件描述符(Debian 為例)


image.png

從上表看的出來送漠,我們平時使用的

echo "hello" > t.log

(將“hello"標準輸出到 t.log 文件)

其實也可以寫成

echo "hello" 1> t.log

B.關于2>&1的含義

(關于輸入/輸出重定向本文就不細說了启具,不懂的可以參考這里冲九,主要是要了解> < << >> <& >& 這6個符號的使用)

1、含義:將標準錯誤輸出重定向到標準輸出

2酱鸭、符號>&是一個整體,不可分開,分開后就不是上述含義了炼蹦。

比如有些人可能會這么想:2是標準錯誤輸入,1是標準輸出狸剃,>是重定向符號掐隐,那么"將標準錯誤輸出重定向到標準輸出"是不是就應該寫成"2>1"就行了?是這樣嗎钞馁?

如果是嘗試過虑省,你就知道2>1的寫法其實是將標準錯誤輸出重定向到名為"1"的文件里去了

3、寫成2&>1也是不可以的

C.為什么2>&1要放在后面

考慮如下一條shell命令

ls / /aabb >log 2>&1 &

為什么2>&1一定要寫到>log后面僧凰,才表示標準錯誤輸出和標準輸出都定向到log中探颈?

我們不妨把1和2都理解是一個指針,然后來看上面的語句就是這樣的:

本來1----->屏幕 (1指向屏幕)
執(zhí)行>log后, 1----->log (1指向log)
執(zhí)行2>&1后训措, 2----->1 (2指向1伪节,而1指向log,因此2也指向了log)

最后一個&表示把條命令放到后臺執(zhí)行

我來舉一個簡單的例子,看看如何使用 & 號將下面這個命令放到后臺運行:

cp -R original/dir/ backup/dir/

這個命令的目的是將 original/dir/ 的內(nèi)容遞歸地復制到 backup/dir/ 中绩鸣。雖然看起來很簡單怀大,但是如果原目錄里面的文件太大,在執(zhí)行過程中終端就會一直被卡住呀闻。

所以化借,可以在命令的末尾加上一個&號,將這個任務放到后臺去執(zhí)行:

cp -R original/dir/ backup/dir/ &

任務被放到后臺執(zhí)行之后捡多,就可以立即繼續(xù)在同一個終端上工作了蓖康,甚至關閉終端也不影響這個任務的正常執(zhí)行。

再來分析下

ls / /aabb  2>&1 >log &

本來1----->屏幕 (1指向屏幕)
執(zhí)行2>&1后局服, 2----->1 (2指向1钓瞭,而1指向屏幕,因此2也指向了屏幕)
執(zhí)行>log后, 1----->log (1指向log淫奔,2還是指向屏幕)
所以這就不是我們想要的結(jié)果山涡。

簡單做個試驗測試下上面的想法:

代碼如下:

ls / /aabb

顯示結(jié)果:

ls: cannot access /aabb: No such file or directory

/:

123  boot    etc        lib        lp    opt  run  sys  var

aaa  czw1801  hello sxt  lib64      media  proc  sbin  tmp

bin  dev      home      lost+found  mnt    root  srv  usr

分別有 錯誤輸出 和 標準輸出

運行下面指令:

ls / /aabb  2>&1 >log &

正確應為:ls / /aabb >log 2>&1 &

按Enter退回終端,cat log 查閱


image.png

會看到只輸出了 ls / 的內(nèi)容,未輸出 / aabb的內(nèi)容

D.每次都寫">log 2>&1"太麻煩鸭丛,能簡寫嗎竞穷?

有以下兩種簡寫方式

&>log

>&log

比如上面小節(jié)中的寫法就可以簡寫為:

ls / /aabb &>log &

上面兩種方式都和">log 2>&1"一個語義。

那么 上面兩種方式中&>和>&有區(qū)別嗎鳞溉?

語義上是沒有任何區(qū)別的瘾带,但是第一中方式是最佳選擇,一般使用第一種

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熟菲,一起剝皮案震驚了整個濱河市看政,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抄罕,老刑警劉巖允蚣,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呆贿,居然都是意外死亡嚷兔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門做入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冒晰,“玉大人,你說我怎么就攤上這事竟块『耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵彩郊,是天一觀的道長前弯。 經(jīng)常有香客問我,道長秫逝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任询枚,我火速辦了婚禮违帆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘金蜀。我一直安慰自己刷后,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布渊抄。 她就那樣靜靜地躺著尝胆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪护桦。 梳的紋絲不亂的頭發(fā)上含衔,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音,去河邊找鬼贪染。 笑死缓呛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的杭隙。 我是一名探鬼主播哟绊,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼痰憎!你這毒婦竟也來了票髓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤铣耘,失蹤者是張志新(化名)和其女友劉穎炬称,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涡拘,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡玲躯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳄乏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跷车。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖橱野,靈堂內(nèi)的尸體忽然破棺而出朽缴,到底是詐尸還是另有隱情,我是刑警寧澤水援,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布密强,位于F島的核電站,受9級特大地震影響蜗元,放射性物質(zhì)發(fā)生泄漏或渤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一奕扣、第九天 我趴在偏房一處隱蔽的房頂上張望薪鹦。 院中可真熱鬧,春花似錦惯豆、人聲如沸池磁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽地熄。三九已至,卻和暖如春芯杀,著一層夾襖步出監(jiān)牢的瞬間端考,已是汗流浹背雅潭。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跛梗,地道東北人寻馏。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像核偿,于是被迫代替她去往敵國和親诚欠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348