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


對應剛接觸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為真。
---------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM