在linux中,&和&&, |和|| ,&> 與 >的區別

對應剛接觸linux命令的小夥伴們來講,這些符號必定是很困擾的下面咱們一塊兒來看這些符號區別和用法java

& 表示任務在後臺執行,如要在後臺運行
如:linux

[root@localhost local]# java -jar test.jar > log.txt &
運行 test.jar程序 ,而且置於後臺執行,執行的日誌重定向 到當前默認的log.txt文件中bash

&& 表示前一條命令執行成功時,才執行後一條命令
如:日誌

[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 /]#進程

| 表示管道,上一條命令的輸出,做爲下一條命令參數(輸入)io

如 :
[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的進程。test

|| 表示上一條命令執行失敗後,才執行下一條命令,後臺

如:二進制

[root@localhost tmp]# als -l || cd ..
-bash: als: command not found
[root@localhost /]#grep

來看>符號是指:將正常信息重定向

如: find / -name 「*.txt」 > /tmp/log.txt
在跟目錄下根據名字來查找*.tx輸入的日誌放置/tmp/log.txt文件中

&>能夠將錯誤信息或者普通訊息都重定向輸出
---------------------

&& 和 || 屬於邏輯運算符號

& 和 | 屬於位操做符

   --------------------------------------------------------------------------------------------------------------------

1、&&和&的區別

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、|| 和 | 的區別

2.1 相同點 :當兩者表示或的時候,兩者都true則true,不然爲false。

2.2 不一樣點:

2.2.1 ||  也存在短路的問題,當前者爲true時,則不會判斷後面的表達(與上面的&&相似)

2.2.2 |是按位或操做,參加運算的兩個數據按照二進制位進行「或」運算,若是兩個相應的二進制位中只要有一個爲1,則該位結果就是1,即爲0|1=一、1|1=一、1|0=一、0|0=0。

||是邏輯或運算符,直接看意思,a||b,若a、b中有一個爲真,則a||b結果爲真。

 --------------------------------------------------------------------------------------------------------------------

補充下:~與!

~是一個單目運算符,用來對一個二進制位按位取反,即0變成1,1變成0,好比~00001111=11110000。

!是邏輯非運算符,咱們仍是直接來看他的意思,!a的意思是:若a爲真,則!爲假,若a爲假則!a爲真。---------------------

相關文章
相關標籤/搜索