Shell命令之間的連接符號


& 表示任務在后台執行,如要在后台運行

例如 cp -R original/dir/ backup/dir/

   這個命令的目的是將 original/dir/ 的內容遞歸地復制到 backup/dir/ 中。雖然看起來很簡單,但是如果原目錄里面的文件太大,在執行過程中終      端就會一直被卡住。所以,可以在命令的末尾加上一個 & 號,將這個任務放到后台去執行:

cp -R original/dir/ backup/dir/ &
任務被放到后台執行之后,就可以立即繼續在同一個終端上工作了,甚至關閉終端也不影響這個任務的正常執行。需要注意的是,如果要求這個任務輸出內容到標准輸出中(例如 echo 或 ls),即使使用了 &,也會等待這些輸出任務在前台運行完畢。

隱藏之后的后續命令 https://linux.cn/article-10587-1.html?pr

&& 表示前一條命令執行成功時,才執行后一條命令 ,如 echo ‘1‘ && echo ‘2’

 

| 表示管道,上一條命令的輸出,作為下一條命令參數,如 echo ‘yes’ | wc -l

 

|| 表示上一條命令執行失敗后,才執行下一條命令,如 cat nofile || echo “fail”

 

command>/dev/null 2>&1 &

/dev/null 表示空設備文件

   0 表示stdin標准輸入

   1 表示stdout標准輸出

    2 表示stderr標准錯誤

    & 表示等同於的意思,2>&1,表示2的輸出重定向等同於1

       

      command (命令)>/dev/null

          其實這條命令是一個縮寫版,對於一個重定向命令,肯定是command > a這種形式,它默認等於command 1>a,即將標准輸出結果重定向到文件a中。所以command > /dev/null相當於執行了command 1 > /dev/null。執行command產生了標准輸出stdout(用1表示),重定向到/dev/null的設備文件中。

       2>&1

            通過上面command > /dev/null等價於command 1 > /dev/null,那么對於2>&1也就好理解了,2就是標准錯誤,1是標准輸出,那么這條命令不就是相當於把標准錯誤重定向到標准輸出么。但是是&1而不是1,這里&是什么?這里&相當於等效於標准輸出。

2>&1,意思是錯誤輸出等同於標准輸出。所以使得./test.sh >test.log,可以把標准輸出和錯誤輸出全部導入日志test.log里。
注意:2>&1,中間不能有空格。
注意:2>&1,必須寫在最后,否則會失去原有意義。
后續組合命令    https://blog.csdn.net/kang19970201/article/details/98968271


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM