linux命令分號&&和&,_和__的用法介紹
Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。在用linux命令時候,我們可以一行執(zhí)行多條命令或者有條件的執(zhí)行下一條命令,下面我們講解一下linux命令分號&&和&,|和||的用法。
linux命令分號&&和&,|和||的用法
“;”分號用法
方式:command1 ; command2
用;號隔開每個命令, 每個命令按照從左到右的順序,順序執(zhí)行, 彼此之間不關(guān)心是否失敗, 所有命令都會執(zhí)行。
“| ”管道符用法
上一條命令的輸出,作為下一條命令參數(shù)
方式:command1 | command2
Linux所提供的管道符“|”將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。連續(xù)使用管道意味著第一個命令的輸出會作為 第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推
利用一個管道
# rpm -qa|grep licq
這條命令使用一個管道符“|”建立了一個管道。管道將rpm -qa命令的輸出(包括系統(tǒng)中所有安裝的RPM包)作為grep命令的輸入,從而列出帶有l(wèi)icq字符的RPM包來。
利用多個管道
# cat /etc/passwd | grep /bin/bash | wc -l
這條命令使用了兩個管道,利用第一個管道將cat命令(顯示passwd文件的內(nèi)容)的輸出送給grep命令,grep命令找出含有“/bin /bash”的所有行;第二個管道將grep的輸出送給wc命令,wc命令統(tǒng)計出輸入中的行數(shù)。這個命令的功能在于找出系統(tǒng)中有多少個用戶使用bash
“&”符號用法
&放在啟動參數(shù)后面表示設(shè)置此進程為后臺進程
方式:command1 &
默認情況下,進程是前臺進程,這時就把Shell給占據(jù)了,我們無法進行其他操作,對于那些沒有交互的進程,很多時候,我們希望將其在后臺啟動,可以在啟動參數(shù)的時候加一個'&'實現(xiàn)這個目的。
“&&”符號用法
shell 在執(zhí)行某個命令的時候,會返回一個返回值,該返回值保存在 shell 變量 $? 中。當 $? == 0 時,表示執(zhí)行成功;當 $? == 1 時(我認為是非0的數(shù),返回值在0-255間),表示執(zhí)行失敗。
有時候,下一條命令依賴前一條命令是否執(zhí)行成功。如:在成功地執(zhí)行一條命令之后再執(zhí)行另一條命令,或者在一條命令執(zhí)行失敗后再執(zhí)行另一條命令等。shell 提供了 && 和 || 來實現(xiàn)命令執(zhí)行控制的功能,shell 將根據(jù) && 或 || 前面命令的返回值來控制其后面命令的執(zhí)行。
語法格式如下:
command1 && command2 [&& command3 ...]
命令之間使用 && 連接,實現(xiàn)邏輯與的功能。
只有在 && 左邊的命令返回真(命令返回值 $? == 0),&& 右邊的命令才會被執(zhí)行。
只要有一個命令返回假(命令返回值 $? == 1),后面的命令就不會被執(zhí)行。
“||”符號用法
邏輯或的功能
語法格式如下:
command1 || command2 [|| command3 ...]
命令之間使用 || 連接,實現(xiàn)邏輯或的功能。
只有在 || 左邊的命令返回假(命令返回值 $? == 1),|| 右邊的命令才會被執(zhí)行。這和 c 語言中的邏輯或語法功能相同,即實現(xiàn)短路邏輯或操作。
只要有一個命令返回真(命令返回值 $? == 0),后面的命令就不會被執(zhí)行。 –直到返回真的地方停止執(zhí)行。
舉例,ping命令判斷存活主機
ping -c 1 -w 1 192.168.1.1 &> /dev/null && result=0 ||result=1
if [ "$result" == 0 ];then
echo "192.168.1.1 is UP!"
else
echo "192.168.2.1 is DOWN!"
fi
注意 &>要連起來寫。
補充:Linux基本命令
基本命令
?、賚s 意為list 列出當前文件夾中的文件
-l 顯示文件的屬性 可用ll來表示
?、赼lias 別名 看看是否有別名的文件
?、踓d dir 跳躍目錄 -P選項 將路徑中的鏈接文件替換成鏈接指向的文件路徑
?、躳wd 查看當前工作的文件夾名 使用-P的選項,會直接進入到其中,相當于cd
相關(guān)閱讀:Linuxshell腳本不執(zhí)行問題實例分析
shell腳本不執(zhí)行問題:某天研發(fā)某同事找我說幫他看看他寫的shell腳本,死活不執(zhí)行,報錯。我看了下,腳本很簡單,也沒有常規(guī)性的錯誤,報“:badinterpreter:Nosuchfileordirectory”錯。看這錯,我就問他是不是在windows下編寫的腳本,然后在上傳到linux服務(wù)器的……果然。原因:在DOS/windows里,文本文件的換行符為rn,而在*nix系統(tǒng)里則為n,所以DOS/Windows里編輯過的文本文件到了*nix里,每一行都多了個^M。解決:
1)重新在linux下編寫腳本;
2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)附:sh-x腳本文件名,可以單步執(zhí)行并回顯結(jié)果,有助于排查復雜腳本問題。
Linux命令相關(guān)文章: