對應剛接觸linux命令的小伙伴們來說,這些符號一定是很困擾的下面我們一起來看這些符號區別和用法
& 表示任務在后台執行,如要在后台運行
如:
[root@localhost local]# java -jar test.jar > log.txt &
運行 test.jar程序 ,並且置於后台執行,執行的日志重定向 到當前默認的log.txt文件中
&& 表示前一條命令執行成功時,才執行后一條命令
如:
[root@localhost tmp]# ls -l && cd ..
總用量 4
-rw-r–r–. 1 root root 2252 1月 4 22:25 log.txt
-rw——-. 1 root root 0 1月 3 23:23 yum.log
[root@localhost /]#
| 表示管道,上一條命令的輸出,作為下一條命令參數(輸入)
如 :
[root@localhost ~]# ps -aux | grep aux
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root 53 0.0 0.0 0 0 ? S 16:33 0:00 [ata_aux]
root 2379 4.0 0.1 110224 1172 pts/2 R+ 22:55 0:00 ps -aux
root 2380 0.0 0.0 103316 868 pts/2 D+ 22:55 0:00 grep aux
查詢全部進程后輸出結果在進行過濾跟 進行中包含aux的進程。
|| 表示上一條命令執行失敗后,才執行下一條命令,
如:
[root@localhost tmp]# als -l || cd ..
-bash: als: command not found
[root@localhost /]#
來看>符號是指:將正常信息重定向
如: find / -name “*.txt” > /tmp/log.txt
在跟目錄下根據名字來查找*.tx輸入的日志放置/tmp/log.txt文件中
&>可以將錯誤信息或者普通信息都重定向輸出
---------------------
&& 和 || 屬於邏輯運算符號
& 和 | 屬於位操作符
--------------------------------------------------------------------------------------------------------------------
一、&&和&的區別
1.1 相同點:
&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
1.2不同點:
1.2.1. &&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式。
例如,對於if(str != null && !str.equals(“”))表達式。
當str為null時,后面的表達式不會執行,所以不會出現NullPointerException
如果將&&改為&,則會拋出NullPointerException異常。
再比如,If(x==33 & ++y>0) y會增長,If(x==33 && ++y>0)不會增長
1.2.2.&作為為運算時,&是按位與操作,參加運算的兩個數據按照二進制位進行“與”運算。
如果兩個相應的二進制位都為1,那該位的結果值就是1,否則為0,即0&0=0,0&1=0,1&1=1,1&0=0。
比如:3&5並不等於8,應該按位與,00000011&00000001=00000001。
備注:這道題先說兩者的共同點,再說出&&和&的特殊之處,並列舉一些經典的例子來表明自己理解透徹深入、實際經驗豐富。
--------------------------------------------------------------------------------------------------------------------
二、|| 和 | 的區別
2.1 相同點 :當二者表示或的時候,二者都true則true,否則為false。
2.2 不同點:
2.2.1 || 也存在短路的問題,當前者為true時,則不會判斷后面的表達(與上面的&&類似)
2.2.2 |是按位或操作,參加運算的兩個數據按照二進制位進行“或”運算,如果兩個相應的二進制位中只要有一個為1,則該位結果就是1,即為0|1=1、1|1=1、1|0=1、0|0=0。
||是邏輯或運算符,直接看意思,a||b,若a、b中有一個為真,則a||b結果為真。
--------------------------------------------------------------------------------------------------------------------
補充下:~與!
~是一個單目運算符,用來對一個二進制位按位取反,即0變成1,1變成0,比如~00001111=11110000。
!是邏輯非運算符,我們還是直接來看他的意思,!a的意思是:若a為真,則!為假,若a為假則!a為真。
---------------------
