2021-05-12 14:32:11
Linux 基礎入門教學----命令執行順序控制與管道
介紹
順序執行、選擇執行、管道、cut 命令、grep 命令、wc 命令、sort 命令等,高效率使用 Linux 的技巧。
一、命令執行順序的控制
1.順序執行多條命令
通常情況下,我們每次只能在終端輸入一條命令,按下回車執行,執行完成後,我們再輸入第二條命令,然後再按回車執行…… 你可能會遇到如下使用場景:我需要使用apt-get
安裝一個軟體,然後安裝完成後立即執行安裝的軟體(或命令工具),又恰巧你的主機才更換的軟體源還沒有更新軟體列表(比如之前我們的環境中,每次重新開始實驗就得sudo apt-get update,現在已經沒有這個問題了),那麼你可能會有如下一系列操作:
$ sudo apt-get update
# 等待——————————然後輸入下面的命令
$ sudo apt-get install some-tool
# 等待——————————然後輸入下面的命令
$ some-tool
這時你可能就會想要是我可以一次性輸入完,讓它自己去一次執行各命令就好了,這就是我們這一小節要解決的問題。
簡單的順序執行你可以使用;
來完成,比如上述操作你可以:
$ sudo apt-get update;sudo apt-get install some-tool;some-tool
# 讓它自己執行
2.有選擇的執行命令
關於上面的操作,不知你有沒有思考過一個問題,如果我們在讓它自動順序執行命令時,前面的命令執行不成功,而後面的命令又依賴與上一條命令的結果,那麼就會造成花了時間,最終卻得到一個錯誤的結果,而且有時候直觀的看你還無法判斷結果是否正確。那麼我們需要能夠有選擇性的來執行命令,比如上一條命令執行成功才繼續下一條,或者不成功又該做出其它什麼處理,比如我們使用which
來查詢是否安裝某個命令,如果找到就執行該命令,否則什麼也不做(雖然這個操作沒有什麼實際意義,但可幫你更好的理解一些概念):
$ which cowsay>/dev/null && cowsay -f head-in ohch~
你如果沒有安裝cowsay
,你可以先執行一次上述命令,你會發現什麼也沒發生,你再安裝好之後你再執行一次上述命令,你也會發現一些驚喜。
上面的&&
就是用來實現選擇性執行的,它表示如果前面的命令執行結果(不是表示終端輸出的內容,而是表示命令執行狀態的結果)返回0則執行後面的,否則不執行,你可以從$?
環境變數獲取上一次命令的返回結果:
學習過 C 語言的使用者應該知道在 C 語言裡面&&
表是邏輯與,而且還有一個||
表示邏輯或,同樣 Shell 也有一個||
,它們的區別就在於,shell中的這兩個符號除了也可用於表示邏輯與和或之外,就是可以實現這裡的命令執行順序的簡單控制。||
在這裡就是與&&
相反的控制效果,當上一條命令執行結果為≠0($?≠0)時則執行它後面的命令:
$ which cowsay>/dev/null || echo "cowsay has not been install, please run 'sudo apt-get install cowsay' to install"
除了上述基本的使用之外,我們還可以結合這&&
和||
來實現一些操作,比如:
$ which cowsay>/dev/null && echo "exist" || echo "not exist"
我畫個流程圖來解釋一下上面的流程:
思考
上面我們講到將&&
和||
結合起來使用,那麼是否以任意順序都行?比如上面我們是&&
在前||
在後,反過來可以麼?會不會有問題?
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2015-08/121444p2.htm
相關文章