日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

#4 什么是shell与bash的特性

發(fā)布時(shí)間:2025/1/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 #4 什么是shell与bash的特性 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Shell:

? 操作接口,為用戶(hù)提供簡(jiǎn)單易用的操作界面,

? Bell實(shí)驗(yàn)室:bourne shell --> sh

? Bill joy:C shell --> csh --> tcsh

? David korn:korn shell --> ksh

? Gun:bourne again shell --> bash(默認(rèn)的Linux標(biāo)準(zhǔn)shell)

? Zsh:


默認(rèn)系統(tǒng)中所支持的shell:

? ~]# cat /etc/shells


bash特性:


一、命令別名(自定義命令)alias(查看別名命令)

alias命令可以用來(lái)定義和顯示命令的別名。

但是使用alias命令定義的別名,其生命期僅為當(dāng)前shell的生命期;


對(duì)于每個(gè)用戶(hù)來(lái)說(shuō),都有一個(gè)私有的bash配置文件,用于保存別名:

? ?~/.bashrc


注意:

? ?1.alias命令的效果僅限于當(dāng)前shell的生命期;

? ?2.如果修改.bashrc配置文件,其中保存的別名并不會(huì)立即生效,只有在重新加載該文件的內(nèi)容之后,才會(huì)生效,且永久生效;

? ?3.為了能夠保證我們?cè)O(shè)置的別名永久有效,通常兩種操作都要做;

?

撤銷(xiāo)別名:

unalias:

unalias:name(別名名稱(chēng))


二、命令歷史:

Bash進(jìn)程會(huì)保存其會(huì)話(huà)中用戶(hù)曾經(jīng)執(zhí)行過(guò)的命令,以方便用戶(hù)重復(fù)執(zhí)行某個(gè)命令;

通過(guò)bash提供的歷史命令文件來(lái)持久保存此前執(zhí)行過(guò)的命令,每個(gè)用戶(hù)都有其自己私有的歷史文件;

登錄shell的時(shí)候,bash會(huì)自動(dòng)讀取~/.bash_history文件中所記錄的所有命令;


history命令:

? ? -c:清空歷史緩沖區(qū)中的歷史命令;

? ? -d offset:刪除特定歷史命令條目;


重復(fù)執(zhí)行前一個(gè)命令的方法:

? ? 1.使用上方向鍵,回車(chē)執(zhí)行;

? ? 2.Ctrl+p,回車(chē)執(zhí)行;

? ? 3.!-1,回車(chē)執(zhí)行;

? ? 4.!!,回車(chē)執(zhí)行;


重復(fù)執(zhí)行歷史緩沖區(qū)中的命令:

? ? !#(數(shù)字)重復(fù)執(zhí)行歷史命令中編號(hào)為“#”的命令

? ? !string(字符串):從歷史緩沖區(qū)中查找最近一次執(zhí)行過(guò)的以“String”開(kāi)頭的命令,并執(zhí)行;

? ? !?string(字符串):從歷史緩沖區(qū)中查找最近一次執(zhí)行過(guò)的包含“String”的命令,并執(zhí)行;

? ? !-#(數(shù)字):重復(fù)執(zhí)行歷史緩沖區(qū)中倒數(shù)第“#”條命令;


Ctrl+r:在歷史緩沖區(qū)中實(shí)施搜索,回車(chē)執(zhí)行即可;

? ? ? ?

重復(fù)使用歷史命令中的一部分:

? ? ? ? !$:表示最后一次命令中最后一個(gè)參數(shù);

? ? ? ? 先按ECS,然后按.:表示最后一次命令中最后一個(gè)參數(shù);

? ? ? ? Alt+.:表示最后一次命令中最后一個(gè)參數(shù);

? ? ? ? !^:表示第一個(gè)位置的參數(shù)

? ? ? ? !:#(數(shù)字):表示最后一次命令中第“#”個(gè)位置的參數(shù);

? ? ? ? !#(數(shù)字):#(數(shù)字):表示在歷史緩沖區(qū)中第“#”個(gè)命令的第“#”個(gè)參數(shù)

? ? ? ? !string(字符串):^|$|*|#:


與歷史相關(guān)的bash變量:

? ? ? ? Histsize;

? ? ? ? Histfilesize;

? ? ? ? Histtimeformat;

? ? ? ? ? ? ? Histtimeformat=“%F %T”(顯示時(shí)間)

? ? ? ? Histcontrol;

? ? ? ? ? ? ?ignoredups:忽略連續(xù)且相同的命令的歷史緩存;

? ? ? ? ? ? ?ignorespace:忽略以空白字符開(kāi)頭的命令;

? ? ? ? ? ? ?ignoreboth:以上兩個(gè)功能都啟用;


三、快捷鍵

? ? ?C-->Ctrl

? ? ?M-->Alt

? ? ?E-->Esc

? ? ?del-->backspace


在命令行模式下使用的快捷鍵:

C-l:clear,清屏;

C-a:將光標(biāo)跳轉(zhuǎn)至命令行的行首;

C-e:將光標(biāo)跳轉(zhuǎn)至命令行的行尾;

c-u:刪除光標(biāo)所在位置至行首的命令行信息;

C-k:刪除光標(biāo)所在位置至行尾的命令行信息;

C-c:結(jié)束前臺(tái)進(jìn)程,取消命令的運(yùn)行;


四、命令補(bǔ)全機(jī)制:

? ? ?兩個(gè)方面的理解:

? ? ? ? 命令本身的字符串的補(bǔ)全

? ? ? ? 參數(shù)的補(bǔ)全


shell命令的執(zhí)行過(guò)程:

? ? ?1.Shell會(huì)根據(jù)用戶(hù)鍵入“enter”來(lái)判斷用戶(hù)的輸入結(jié)束;

? ? ?2.shell會(huì)將收集的命令信息,根據(jù)空白字符來(lái)分段(token),第一分段被理解為命令字段;

? ? ?3.判斷第一字段是內(nèi)部命令還是外部命令,如果是內(nèi)部命令,則直接運(yùn)行,如果是外部命令,通過(guò)path變量所指示的路徑信息,去查找相關(guān)的位置,以確定是否存在同名文件,如果有,就執(zhí)行;否者就報(bào)錯(cuò);

? ? ?4.判斷選項(xiàng)是否正確,判斷參數(shù)是否正確;

使用tab鍵可以完成命令補(bǔ)全:

如果給出的字符串不能作為唯一的標(biāo)識(shí),則bash不予補(bǔ)全;再次敲擊tab鍵,bash會(huì)給出參考列表;如果參考列表中的內(nèi)容過(guò)多,bash會(huì)詢(xún)問(wèn)是否顯示該列表;

根據(jù)提供的參數(shù)路徑來(lái)進(jìn)行補(bǔ)全,如果參數(shù)沒(méi)有任何提示信息,則默認(rèn)從工作目錄進(jìn)行查找;


五、命令行展開(kāi):

? ? ?~:bash會(huì)自動(dòng)將其展開(kāi)為當(dāng)前登錄用戶(hù)的家目錄;

? ? ?~string(字符串):bash會(huì)自動(dòng)將其張開(kāi)為以“string”為用戶(hù)名的家目錄;

? ? ?~+:調(diào)用shell變量“pwd”的值;

? ? ?~-:調(diào)用shell變量“oldpwd”的值;

? ? ?{}:在花括號(hào)中可以填充一個(gè)以“,”分隔的路徑列表,bash會(huì)將其展開(kāi)為多個(gè)獨(dú)立的路徑

? ??

六、命令的執(zhí)行結(jié)果:

? ? ? ? ? 任何一個(gè)Linux命令都有兩種執(zhí)行結(jié)果;

? ? ? ? ? ? ? 其一:命令的正常輸出結(jié)果;

? ? ? ? ? ? ? ? 跟用戶(hù)需求相關(guān)的返回內(nèi)容;

? ? ? ? ? ? ? ? ``(英文狀態(tài)下~鍵):反向單引號(hào),反引號(hào)

? ? ? ? ? ? ? ? $():標(biāo)準(zhǔn)的命令引用格式

wc:統(tǒng)計(jì)一個(gè)文件中的行數(shù)、字?jǐn)?shù)及字節(jié)數(shù);

? ? ? ? ? ?-c:只顯示字節(jié)數(shù);

? ? ? ? ? ?-l:只顯示行數(shù);

? ? ? ? ? ?-w:只顯示字?jǐn)?shù);

?

? ? ? ? ? ? ? 其二:命令的執(zhí)行狀態(tài)返回值;

? ? ? ? ? ? ? ? 跟命令執(zhí)行成功與否相關(guān)的返回內(nèi)容;

? ? ? ? ? ? ? ? 保存在bash的一個(gè)特殊變量中:$?

? ? ? ? ? ? ? ? 0:命令執(zhí)行成功

? ? ? ? ? ? ? ? 1,2,127:bash內(nèi)置狀態(tài)返回值;

? ? ? ? ? ? ? ? ? ?1:表示小問(wèn)題

? ? ? ? ? ? ? ? ? ?2:表示嚴(yán)重問(wèn)題

? ? ? ? ? ? ? ? ? ?127:表示命令本身問(wèn)問(wèn)題;

? ? ? ? ? ? ? ? 3-126,128-255:用戶(hù)自定義狀態(tài)信息;


七、引用功能:

‘’:強(qiáng)引用

? ? ?凡是被單引號(hào)引用的內(nèi)容,bash一律將其視為普通字符,即便其本身有特殊功能和作用也是如此。但單引號(hào)本身是個(gè)例外。

?“”:弱引用

? ? ?被雙引號(hào)引用的內(nèi)容中,有些特殊字符仍然會(huì)保留其特殊含義,比如說(shuō):$、\、”


八、轉(zhuǎn)義功能:

? ? ? ? ?\:bash中定義的轉(zhuǎn)義字符:只能使其后一個(gè)字符失去特殊意義;


九、Globbing(文件名通配,簡(jiǎn)稱(chēng)為glob):

? ? ? ? ? 元字符(基本字符):

? ? ? ? ? ? ? *:匹配任意長(zhǎng)度的任意字符,某些特殊位置的“.”字符不能被匹配;

? ? ? ? ? ? ? ?:匹配任意單個(gè)字符,必須且只有一個(gè)字符被匹配;

? ? ? ? ? ? ?[]: 匹配指定范圍內(nèi)的任意單個(gè)字符,必須且只有一個(gè)字符被匹配

? ? ? ? ? ? ? ? ? ? ?在“[]”中范圍的顯示的模式:

? ? ? ? ? ? ? ? ? ? ? [a-z]:a,A,b,B,c,C...y,Y,z

? ? ? ? ? ? ? ? ? ? ? [A-Z]:A,b,B,c,C…y,Y,z,Z

? ? ? ? ? ? ? ? ? ? ? 字符集:

? ? ? ? ? ? ? ? ? ? ? ? [:lower:]:表示所有小寫(xiě)字字母;

? ? ? ? ? ? ? ? ? ? ? ? ? ? [[:lower:]]:通配任意單個(gè)小寫(xiě)字母;

? ? ? ? ? ? ? ? ? ? ? ? [:upper:]:表示所有的大寫(xiě)字母;

? ? ? ? ? ? ? ? ? ? ? ? ? ? [[:upper:]]:通配任意單個(gè)大寫(xiě)字母;

? ? ? ? ? ? ? ? ? ? ? ? [:alpha:]:表示所有字母字符;

? ? ? ? ? ? ? ? ? ? ? ? [:digit:]:表示所有的十進(jìn)制數(shù)字 ? ?10

? ? ? ? ? ? ? ? ? ? ? ? [:alnum:]:表示所有的大小寫(xiě)字母以及十進(jìn)制數(shù)字

? ? ? ? ? ? ? ? ? ? ? ? [:space:]:表示空白字符

? ? ? ? ? ? ? ? ? ? ? ? [:punct:]:表示所有的標(biāo)點(diǎn)符號(hào)

? ? ? ? ? ? ? ? ? ? ? ? ^: 取反匹配,[^]表示不要的意思


十、輸入輸出重定向:

? ? ? ? ? 在使用計(jì)算機(jī)的時(shí)候,實(shí)現(xiàn)某種功能的主題是:程序

? ? ? ? ? 程序=指令+數(shù)據(jù) ? ? ? ??

? ? ? ? ? 數(shù)據(jù):文件,io

? ? ? ? ?可以用于輸入的設(shè)備:文件

? ? ? ? ? ?鍵盤(pán)文件、文件系統(tǒng)中的常規(guī)文件、網(wǎng)卡設(shè)備、聲卡設(shè)備等;?

? ? ? ? ?可以用于輸出的設(shè)備:文件

? ? ? ? ? ?顯示器、文件系統(tǒng)中的常規(guī)文件、網(wǎng)卡設(shè)備、聲卡設(shè)備等;


? ? ? ? ?每一種程序都有三種形式的數(shù)據(jù)流:

? ? ? ? ? ?輸入數(shù)據(jù)流:為程序獲取數(shù)據(jù)的數(shù)據(jù)流;默認(rèn)的輸入數(shù)據(jù)流的來(lái)源就是鍵盤(pán);

? ? ? ? ? ?輸出數(shù)據(jù)流:將程序所處理的數(shù)據(jù)結(jié)果展示給用戶(hù)的數(shù)據(jù)流;默認(rèn)的輸出數(shù)據(jù)流的終點(diǎn)是顯示器;

? ? ? ? ? ?錯(cuò)誤數(shù)據(jù)流:將程序無(wú)法處理或處理過(guò)程中出現(xiàn)問(wèn)題的結(jié)果展示給用戶(hù)的數(shù)據(jù)流:默認(rèn)的錯(cuò)誤數(shù)據(jù)流的終點(diǎn)是顯示器;


? ? ? ? ? ?從鍵盤(pán)實(shí)現(xiàn)的輸入數(shù)據(jù)流稱(chēng)為標(biāo)準(zhǔn)輸入; ? ?

? ? ? ? ? ?到顯示器上的輸出數(shù)據(jù)流稱(chēng)為標(biāo)準(zhǔn)輸出;

? ? ? ? ? ?到顯示器上的錯(cuò)誤數(shù)據(jù)流稱(chēng)為標(biāo)準(zhǔn)錯(cuò)誤輸出,簡(jiǎn)稱(chēng)標(biāo)準(zhǔn)錯(cuò)誤;

? ? ? ? ? ? ??

? ? ? ? ? ?文件描述符:file descriptor,簡(jiǎn)稱(chēng):FD

? ? ? ? ? ? ? 0:標(biāo)準(zhǔn)輸入,stdin

? ? ? ? ? ? ? 1:標(biāo)準(zhǔn)輸出,stdout

? ? ? ? ? ? ? 2:標(biāo)準(zhǔn)錯(cuò)誤,stderr


? ? ? ? ? ?IO重定向:采用非標(biāo)準(zhǔn)設(shè)備文件實(shí)現(xiàn)的IO操作;

? ? ? ? ? ??

? ? ? ? ? ?簡(jiǎn)單來(lái)說(shuō):

? ? ? ? ? ? ?不是從鍵盤(pán)設(shè)備完成的數(shù)據(jù)流輸入就可以稱(chēng)為輸入重定向或重定向輸入;

? ? ? ? ? ? ?不是到顯示器設(shè)備的正確輸出數(shù)據(jù)流就被稱(chēng)為輸出重定向或重定向輸出; ? ? ? ? ??

? ? ? ? ? ? ?不是到顯示器設(shè)備的錯(cuò)誤輸出數(shù)據(jù)流就被稱(chēng)為錯(cuò)誤重定向或重定向錯(cuò)誤;




? ? ? ? ? ? ? ? >:覆蓋輸出重定向

? ? ? ? ? ? ? ? ~]# set -C ? ? ? ?//開(kāi)啟防誤覆蓋開(kāi)關(guān)

? ? ? ? ? ? ? ? ? 在此開(kāi)關(guān)開(kāi)啟后,可以使用“>”符號(hào)繼續(xù)覆蓋重定向

? ? ? ? ? ? ? ? ~]# set +C ? ? ? ?//關(guān)閉防誤覆蓋開(kāi)關(guān)

? ? ? ? ? ? ? ?>>:追加輸出重定向

?

? ? ? ? ? ? ? ?錯(cuò)誤重定向:

? ? ? ? ? ? ? ? ?2>:覆蓋錯(cuò)誤重定向;

? ? ? ? ? ? ? ? ?2>>: 追加錯(cuò)誤重定向;


? ? ? ? ? ? ? ? 合并標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出的重定向:

? ? ? ? ? ? ? ? ?1)&>,&>> ? (4.0以上的bash才支持的符號(hào))

? ? ? ? ? ? ? ? ?2)command >|>> path/to/somefile 2>&1

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? /dev/null:blackhole,bitbucket(位桶 垃圾桶),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? Ls /tmp/a.txt &> /dev/null

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?||(等號(hào))

? ? ? ? ? ? ? ? Ls /tmp/a.txt > /dev/null 2>&1

?

? ? ? ? ? ? ? ? 輸入重定向:

? ? ? ? ? ? ? ? ? ? <:

? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? <<:here document(此處文檔)?

? ? ? ? ? ? ? ? ? ?<<<:here string(此處字符串)


十一、管道

? ? ? ?|:

? ? ? ? ? Command1 | command2 | command3 | ...

? ? ? ? 注意:所有的用于管道連接的命令,都應(yīng)該是能夠有標(biāo)準(zhǔn)輸出數(shù)據(jù)流的命令;


??

? ? ? ? ? ? ? ? ? tee:T


十二、變量

? ? ? ? ?變量:一段連續(xù)的內(nèi)存空間,cell--8bit,為這一段內(nèi)存空間取名,稱(chēng)為變量名;在這段內(nèi)存空間中所儲(chǔ)存的數(shù)據(jù),稱(chēng)為變量值;


? ? ? ? ?賦值操作:

? ? ? ? ? ? =:賦值操作符

? ? ? ? ? ? 賦值方法:VARNAME=VALUE(中間不能加括號(hào))


? ? ? ? ? ? VARNAME的命名規(guī)范:

? ? ? ? ? ? ? ?1.只能以字符或“_”為首字符,不能使用數(shù)字,后面可以使任意字母、數(shù)字和下劃線(xiàn);

? ? ? ? ? ? ? ?2.大小寫(xiě)嚴(yán)格區(qū)分:

? ? ? ? ? ? ? ?3.見(jiàn)名知意;

? ? ? ? ? ? ? ?4.書(shū)寫(xiě)規(guī)范;?

? ? ? ? ? ? ? ? ?1)全大寫(xiě):FILES

? ? ? ? ? ? ? ? ?2)駝峰式:Myfiles

? ? ? ? ? ? ? ?5.不能與已知變量名相同

? ? ? ? ?

? ? ? ? ?根據(jù)不同的編程語(yǔ)言,變量可以分為兩類(lèi);

? ? ? ? ? ?強(qiáng)變量: ?

? ? ? ? ? ? ? 必須在使用前先聲明,而且要聲明其類(lèi)型,嚴(yán)格區(qū)分變量類(lèi)型;

? ? ? ? ? ? ? 255

? ? ? ? ? ? ? ? ?字符類(lèi)型:3Bytes

? ? ? ? ? ? ? ? ?整數(shù)型:1Bytes 11111111

? ? ? ? ? ? ? ? ?null ? ? ? ?

? ? ? ? ? ?弱變量:可以隨時(shí)使用隨時(shí)聲明,甚至可以不聲明即使用;不對(duì)變量類(lèi)型做硬性要求,如果沒(méi)有指明變量類(lèi)型,統(tǒng)一按照字符型對(duì)待;


? ? ? ? ? ?bash的變量即為弱變量;

? ? ? ? ? ?python


? ? ? ? ? ?應(yīng)用變量的值:$(VARNAME)==>$VARNAME,也稱(chēng)為變量替換;


? ? ? ? ? ?bahs的變量種類(lèi):

? ? ? ? ? ? ?全局標(biāo)量(環(huán)境變量):作用范圍是整個(gè)shell進(jìn)程,包括其子shell;

? ? ? ? ? ? ?本地變量:作用范圍僅僅只是當(dāng)前登錄的shell,不包含子shell;

? ? ? ? ? ? ?局部變量:作用范圍僅僅只是當(dāng)前的程序段,一般用于函數(shù);

? ? ? ? ? ? ?默認(rèn)全局變量:

? ? ? ? ? ? ? ?位置參數(shù)變量:$1,$2,$3,...$n

? ? ? ? ? ? ? ?特殊變量:

? ? ? ? ? ? ? ? ?$?,$#,$*,$@,$$,...

? ? ? ? ? ? ? ? ?$?:展開(kāi)為最近一次所執(zhí)行的命令的狀態(tài)返回值(退出狀態(tài));

? ? ? ? ? ? ? ? ?$#:位置參數(shù)的個(gè)數(shù),以十進(jìn)制表示;

? ? ? ? ? ? ? ? ?$*:從1開(kāi)始展開(kāi)為位置參數(shù)。當(dāng)使用雙引號(hào)引用展開(kāi)的時(shí)候,它展開(kāi)為以特殊變量“IFS”的第一個(gè)字符分隔的值

? ? ? ? ? ? ? ? ?$@:從1開(kāi)始展開(kāi)為位置參數(shù)。當(dāng)使用雙引號(hào)引用展開(kāi)的時(shí)候,它展開(kāi)為一個(gè)單獨(dú)的字符串;

? ? ? ? ? ? ? ? ?$$:展開(kāi)為當(dāng)前shell的進(jìn)程標(biāo)識(shí)服;

? ? ? ? ? ? ? ? ?$0:展開(kāi)為shell或者shell腳本的文件名;


? ? ? ? ? ? ?

? ? ? ? ? ? 變量的使用:

? ? ? ? ? ? ? 聲明本地變量;

? ? ? ? ? ? ? ? 變量的賦值:VARNAME=VALUE,

? ? ? ? ? ? ? 撤銷(xiāo)變量:~]# unset VARNAME ?

? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? 聲明環(huán)境變量:

? ? ? ? ? ? ? ? export VARNAME

? ? ? ? ? ? ? ? export VARNAME=VALUE


? ? ? ? ? ? ? ? declare

? ? ? ? ? ? ? ? ? ?-a:聲明索引數(shù)組(如果支持);

? ? ? ? ? ? ? ? ? ?-A:聲明關(guān)聯(lián)數(shù)組(如果支持);

? ? ? ? ? ? ? ? ? ?-i:聲明整型變量;

? ? ? ? ? ? ? ? ? ?-l:聲明變量并將變量值中的字母轉(zhuǎn)換為小寫(xiě)字母;

? ? ? ? ? ? ? ? ? ?-u:聲明變量并將變量值中的字母轉(zhuǎn)換為大寫(xiě)字母;

? ? ? ? ? ? ? ? ? ?-x:聲明變量并將其導(dǎo)出為環(huán)境變量;

? ? ? ? ? ? ? ? ? ?-r:聲明變量為只讀變量(常量);


? ? ? ? ? ? ? 查看環(huán)境變量:

? ? ? ? ? ? ? ? set:

? ? ? ? ? ? ? ? export:

? ? ? ? ? ? ? ? enV:?


? ? ? ? ? ? ? 聲明局部變量:

? ? ? ? ? ? ? ? local VARNAME=VALUE


? ? ? ? ? ? ? 配置文件:

? ? ? ? ? ? ? ? 通用配置文件:/etc/bashrc、/etc/profile

? ? ? ? ? ? ? ? 私人配置文件:~/.bashrc、~/.bash_profile


? ? ? ? ? ? ? 注意:一般情況下,聲明變量都是現(xiàn)做現(xiàn)用,并不需要改配置文件;


十三、bash的特性之多命令執(zhí)行;

? ? ~]# COMMAND1 $(COMMAND2)

? ? ~]# COMMAND1|COMMAND1...進(jìn)程之間通信(IPC)

? ? 順序執(zhí)行結(jié)構(gòu):

? ? ? ~]# COMMAND1;COMMAND2;...

? ? 選擇執(zhí)行結(jié)構(gòu):

? ? ? 邏輯運(yùn)算:

? ? ? ? 與:邏輯乘法,&&,雙目運(yùn)算符

? ? ? ? ? ? 0:SUCCESS --> true(真)

? ? ? ? ? ? 1-255:FAILURE --> false(假)


? ? ? ? ? ? true && true = true

? ? ? ? ? ? true && ?false = false

? ? ? ? ? ? false && true = false?

? ? ? ? ? ? false && false = false

? ? ? ??

? ? ? ? ?“與”的短路邏輯運(yùn)算:只要第一個(gè)操作數(shù)為false,則其邏輯運(yùn)算的結(jié)果一定為false;


? ? ? ? ?COMMAND1 && COMMAND2

? ? ? ? ? ?如果COMMAND1能夠成功執(zhí)行,則COMMAND2會(huì)被執(zhí)行;

? ? ? ? ? ?如果COMMAND1執(zhí)行失敗,則COMMAND2不會(huì)被執(zhí)行;


? ? ? ? ?! COMMAND1 && COMMAND2?

? ? ? ? ? ?如果COMMAND1能夠成功執(zhí)行,則COMMAND2不會(huì)被執(zhí)行;

? ? ? ? ? ?如果COMMAND1執(zhí)行失敗,則COMMAND2會(huì)被執(zhí)行;


? ? ? ? 或:邏輯加法,||,雙目運(yùn)算符

? ? ? ? ? ? true || true = true?

? ? ? ? ? ? true || false = true?

? ? ? ? ? ? false || true = true ? ? ? ? ? ??

? ? ? ? ? ? false || false = false

? ? ? ? ?“或”的短路邏輯運(yùn)算;只要第一個(gè)操作數(shù)為true,則其邏輯運(yùn)算的結(jié)果一定為true;


? ? ? ? ?COMMAND1 || COMMAND2?

? ? ? ? ? ?只要COMMAND1能夠成功執(zhí)行,COMMAND2就沒(méi)有必要執(zhí)行了;

? ? ? ? ? ?只有當(dāng)COMMAND1執(zhí)行失敗的時(shí)候,COMMAND2才會(huì)被執(zhí)行;


? ? ? ? ?! COMMAND1 || COMMAND2

? ? ? ? ? ?如果COMMAND1能夠成功執(zhí)行,則COMMAND2會(huì)被執(zhí)行;

? ? ? ? ? ?如果COMMAND1執(zhí)行失敗,則COMMAND2不會(huì)被執(zhí)行;


? ? ? ? 非:邏輯取反,!,單目運(yùn)算符

? ? ? ? ? !STRING:讀取命令歷史空間的內(nèi)容;


? ? ? ? ? ? ! true = false

? ? ? ? ? ? ! false = true


? ? ? ? ? ? ! COMMAND


? ? ? ? ? ? ! COMMAND1 && COMMAND2 相對(duì)于 COMMAND1 || COMMAND2?

? ? ? ? ? ? ! COMMAND1 || COMMAND2 相對(duì)于 COMMAND1 && COMMAND2?


? ? ? ? 德摩根丁璐:

? ? ? ? ? ! (A && B) == ! A || ! B

? ? ? ? ? ! (A || B) == ! A && ! B


? ? ? ? 邏輯運(yùn)算符號(hào)優(yōu)先級(jí):

? ? ? ? ? ? ! > &&> ||


? ? ? ? 異或:雙目運(yùn)算符

? ? ? ? ? 比對(duì)兩個(gè)操作數(shù)是否不同;如果不同,則邏輯運(yùn)算結(jié)果為真;如果相同,則邏輯運(yùn)算結(jié)果為假;?


轉(zhuǎn)載于:https://blog.51cto.com/12486569/1908686

總結(jié)

以上是生活随笔為你收集整理的#4 什么是shell与bash的特性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。