首頁 > 軟體

Linux 基礎入門教學----命令執行順序控制與管道

2020-06-16 17:55:34

介紹

順序執行、選擇執行、管道、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


IT145.com E-mail:sddin#qq.com