在一行中運行兩個或多個命令可以節省大量時間,並在Linux中提高效率。在Linux中,有三種方法可以在一行中運行多個命令: |
;
Command 1 ; Command 2 首先運行Command1,然后運行Command2&&
Command 1 && Command 2 當Command1運行成功並結束,然后運行Command2||
Command 1 || Command 2 當Command1運行失敗時才運行Command2
其中最簡單的是分號(;),使用方式如下:
cmd1; cmd2; cmd3
cmd1將首先運行,不管cmd1運行成功還是出現錯誤,cmd2都會在它之后運行,當cmd2命令完成時,cmd3將會運行。
[root@localhost ~]# mkdir /root/new_folder; cd /root/new_folder; touch test_file; pwd ; ls -l /root/new_folder total 0 -rw-r--r--. 1 root root 0 Sep 2 22:01 test_file [root@localhost new_folder]#
在上面命令匯總,首先mkdir創建了一個文件夾在/root目錄中,cd 進入前面創建的目錄,touch創建一個空文件,然后pwd顯示當前位置,ls -l查看目錄中的文件。
分號(;)后面的空格可帶可不帶,但空格使命令行更容易讀懂。
有時候希望確保Linux命令中,只有在前一個命令成功結束時,下一個命令才會運行。這就是邏輯和運算符&&
出現的地方:
cmd1 && cmd2 && cmd3
如果你使用基於Centos的發行版,你一定遇到過這個使用&&概念的命令:
[root@localhost ~]# yum makecache && yum -y update
命令行匯總的前半部分時更新緩存,后半部分更新所有安裝包。
舉個例子,如果new_folder已經存在,那么mkdir命令將返回錯誤。; 和&& 的差異可以在下面的截圖中看到:
當第一個命令出現錯誤時,&&
分隔的命令會停止執行后面的命令。
可以使用邏輯操作符(||)運行命令行,但是只有在前一個命令出現錯誤時才運行下一個命令:
cmd1 || cmd2 || cmd3
如果cmd1運行失敗,則運行cmd2。如果cmd2運行成功,cmd3將不會運行。
在上面的截圖中,創建文件夾的命令失敗,因為該文件夾已經存在。因為這個命令失敗了,所以下一個命令cd /root/new_folder被成功執行。這個命令已經成功運行,下一個命令pwd將不運行。
例如,可以檢查文件是否存在,並相應地打印消息。
[root@localhost ~]# [ -f file.txt ] && echo "File exists" || echo "File doesn't exist"
在創建file.txt文件之前和之后運行上面的命令,看看區別:
在一行中運行兩個或多個命令可以節省大量時間,並在Linux中提高效率。
本文原創地址:https://www.linuxprobe.com/linux-terminal-multi-cmd.html