& 表示任務在后台執行,如要在后台運行
例如 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