乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Linux 命令行中的2>&1究竟是什么意思?

       蘇醒的貝殼 2020-03-14

      我們在Linux下經(jīng)常會碰到:

      nohup command>/dev/null 2>&1 &

      這樣形式的命令。

      我們把這條命令大概分解一下。

      (1)首先,就是一個nohup表示當(dāng)前用戶和系統(tǒng)的會話下的進(jìn)程忽略響應(yīng)HUP消息,也就是不掛斷地運行命令。

      (2)& 符號是把該命令以后臺的job的形式運行。

      (3)那么就剩下command>/dev/null 2>&1,其中command>/dev/null較好理解,/dev/null表示一個空設(shè)備,就是把 command的執(zhí)行結(jié)果重定向到空設(shè)備中,說白了就是不顯示任何信息。

      (4)最后,2>&1又是什么含義?

      2>&1 幾個基本符號及其含義

      • /dev/null 表示空設(shè)備文件

      • 0 表示stdin標(biāo)準(zhǔn)輸入

      • 1 表示stdout標(biāo)準(zhǔn)輸出

      • 2 表示stderr標(biāo)準(zhǔn)錯誤

      command > /dev/null相當(dāng)于執(zhí)行了command 1 > /dev/null。執(zhí)行command產(chǎn)生了標(biāo)準(zhǔn)輸出stdout(用1表示),重定向到/dev/null的設(shè)備文件中。

      分析 2>&1

      對于2>&1的理解,2就是標(biāo)準(zhǔn)錯誤,1是標(biāo)準(zhǔn)輸出,那么這條命令不就是相當(dāng)于把標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出么?是的。

      為什么是&1而不是1,這里& 符號是什么?& 符號可以理解為引用(reference)。&1 就是對標(biāo)準(zhǔn)輸出的引用。

      command>a 2>a 與 command>a 2>&1的區(qū)別

      通過上面的分析,對于command>a 2>&1這條命令,等價于command 1>a 2>&1。

      可以理解為執(zhí)行command產(chǎn)生的標(biāo)準(zhǔn)輸入重定向到文件a中,標(biāo)準(zhǔn)錯誤也重定向到文件a中。

      那么是否就說command 1>a 2>&1等價于command 1>a 2>a呢?

      其實不是,command 1>a 2>&1與command 1>a 2>a 還是有區(qū)別的,區(qū)別就在于前者只打開一次文件a,后者會打開文件兩次,并導(dǎo)致stdout被stderr覆蓋。&1的含義就可以理解為用標(biāo)準(zhǔn)輸出的引用,引用的就是重定向標(biāo)準(zhǔn)輸出產(chǎn)生打開的a。從IO效率上來講,command 1>a 2>&1比 command 1>a 2>a的效率更高。

      演示一下效果

      //test.sh shell 程序

      #!/bin/sh

      t

      date

      其中t指令并不存在,執(zhí)行會報錯,會輸出到stderr。date能正常執(zhí)行,執(zhí)行會輸出當(dāng)前時間,會輸出到stdout。

      Linux 命令行中的2>&1究竟是什么意思?

      chmod +x test.sh為test.sh增加執(zhí)行權(quán)限。

      Linux 命令行中的2>&1究竟是什么意思?

      執(zhí)行 ./test.sh > test.log,如下所示:

      Linux 命令行中的2>&1究竟是什么意思?

      我們發(fā)現(xiàn) stderr 并沒有被重定向到 test.log 中,stderr 直接輸出到屏幕上了。

      執(zhí)行 ./test.sh > test.log 2>&1,如下所示:

      Linux 命令行中的2>&1究竟是什么意思?

      這次,我們發(fā)現(xiàn)stdout 和 stderr 都被重定向到了 test.log 中了。

      Linux 命令行中的2>&1究竟是什么意思?

      原文鏈接:

      https://blog.csdn.net/ggxiaobai/article/details/53507530

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多