<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    十一:稍微認(rèn)識(shí)一些厲害的家伙:特殊字符

    這里要介紹的是一堆特別的家伙,當(dāng)然,這里是先打個(gè)照面,混臉熟,他們會(huì)在很多地方出現(xiàn),有著特殊的含義,執(zhí)行著特定的功能,這里就先叫他們”特殊字符“吧(注意在使用他們的時(shí)候不要使用中文輸入法,要不會(huì)出現(xiàn)問(wèn)題)

    執(zhí)行命令的順序

    1:分號(hào),“;”
    第一次接觸他的場(chǎng)景或許是在多命令順序執(zhí)行的時(shí)候。比如說(shuō)你現(xiàn)在剛登陸系統(tǒng),你在家目錄下,你想查看一下/etc某個(gè)目錄下的內(nèi)容,那么你需要cd,回車,如果層次深,那么你或許需要執(zhí)行多次,最后ls一下。有了分號(hào)的幫助,那么就可以這么寫(xiě)

    cd /;cd etc;cd XXX;ls 
    命令之間使用分號(hào)隔開(kāi),你設(shè)置好的命令便會(huì)依次執(zhí)行。設(shè)想一下,你需要在你的Linux中搭建一個(gè)LAMP的web環(huán)境,在搭建環(huán)境的過(guò)程中你會(huì)有很多命令要執(zhí)行,你如果一次的去執(zhí)行他們,那么會(huì)花費(fèi)你不少時(shí)間,因?yàn)橥瓿僧?dāng)前命令執(zhí)行完畢你需要鍵入下一個(gè)命令,有人值守的安裝可是很痛苦的,如果這其中有了分號(hào)來(lái)幫助你實(shí)現(xiàn)命令的順序執(zhí)行,那么絕對(duì)會(huì)事半功倍。

    但是,使用分號(hào)來(lái)順序執(zhí)行命令有一個(gè)缺點(diǎn),那就是一旦其中某個(gè)命令出錯(cuò),執(zhí)行的過(guò)程不會(huì)停止,依舊向后繼續(xù)執(zhí)行。這一點(diǎn)并不好,如果命令不涉及改變環(huán)境變量,搭建某某運(yùn)行環(huán)境還好,一旦出錯(cuò),那么定位起來(lái)費(fèi)時(shí)費(fèi)力,所以分號(hào)最好使用在影響小的命令組合中。



    2:邏輯與,”&&“
    和一般編程語(yǔ)言中的邏輯與類似,他有著這樣的格式”命令1&&命令2“,如果命令1執(zhí)行沒(méi)有出錯(cuò),那么命令2才會(huì)執(zhí)行,后續(xù)命令依次類推,但是只要有一個(gè)命令報(bào)錯(cuò),便不會(huì)繼續(xù)向后執(zhí)行,執(zhí)行過(guò)程停留在報(bào)錯(cuò)的命令上。這一個(gè)特性就比分號(hào)來(lái)得好,可以考慮使用它做一個(gè)通用的環(huán)境安裝腳本。

    3:邏輯或,”||“
    這里需要注意一下,和常見(jiàn)編程語(yǔ)言中的邏輯或不太一樣,編程語(yǔ)言中的邏輯或是”條件A或者條件B或者條件C等等條件N,這些條件中有一個(gè)滿足,則整個(gè)表達(dá)式成立“,這里的邏輯或的含義是”命令A(yù)||命令B,命令A(yù)執(zhí)行正確則不執(zhí)行命令B,反之亦然“


    *對(duì)于一個(gè)命令而言,如果能快速的得知是否執(zhí)行正確?你可以試試
    命令 && echo suc || echo fail
    對(duì)于一個(gè)你指定的命令,如果他執(zhí)行正確,那么邏輯與的echo suc便會(huì)執(zhí)行,邏輯或便不會(huì)執(zhí)行;倘若命令執(zhí)行失敗,那么邏輯與的echo suc便不會(huì)執(zhí)行,這樣一來(lái),邏輯或的前半部分只有命令執(zhí)行失敗的結(jié)果,所以邏輯或的echo fail便會(huì)執(zhí)行。

    一些特殊字符會(huì)展開(kāi)一些特殊內(nèi)容
    1:匹配任意內(nèi)容,“*”
    “*”在文件搜索的時(shí)候已經(jīng)有所接觸,是匹配任意字符的意思,但是那是限于文件搜索,如果我們使用echo命令來(lái)顯示“*”呢?我們會(huì)發(fā)現(xiàn),echo打印了當(dāng)前目錄下的所有內(nèi)容,而沒(méi)有打印“*”

    再試試ls *

    在含有“*”的命令中,shell會(huì)在執(zhí)行前將“*”解析為匹配的內(nèi)容,所以echo不認(rèn)識(shí)“*”,沒(méi)有打印他,ls 沒(méi)有因?yàn)闆](méi)有“*”這個(gè)目錄而報(bào)錯(cuò),進(jìn)而正常顯示了當(dāng)前目錄及其子目錄下的所有內(nèi)容。
    其他相關(guān)的特殊符號(hào)可以在文件搜索的部分找到,戳我

    2:家目錄,“~”
    之前提過(guò),使用“cd”和“cd ~”作用相同,都是定位到當(dāng)前用戶的家目錄,如果你在波浪線前面指定一個(gè)用戶,那么會(huì)直接定位到該用戶的家目錄去,就像“cd ~duyt”。

    3:算術(shù)表達(dá)式,$((表達(dá)式))
    在表達(dá)式中可以填入整數(shù)運(yùn)算的表達(dá)式,儼然一副計(jì)算器的樣子,算術(shù)表達(dá)式支持加減乘除,取余(%),求冪(**)等操作,其中,加減乘除取余,不再贅述,運(yùn)算符和一般編程語(yǔ)言的相同,都是“+-*/”,求冪則寫(xiě)為$((2**10)),這樣便會(huì)輸出2的10次方的結(jié)果。


    4:花括號(hào)匹配,{}
    這家伙和方括號(hào)“[]”有類似的地方,都能匹配括號(hào)里的內(nèi)容,但是花括號(hào)更常見(jiàn)于這個(gè)場(chǎng)景:你需要新建一些文件,這些文件可能是你馬上使用的日志文件,或者學(xué)習(xí)筆記,甚至是日記,他們的文件名有類似有不同,不同可能是順序的日期或其他數(shù)字,那么花括號(hào)可以幫你完成這個(gè)工作。
    touch 2015-01-{01..31},這樣以來(lái),會(huì)馬上新建以順序日期命名的文件,可以省去很多重復(fù)的工作。

    刪除的時(shí)候也可以使用花括號(hào)。

    花括號(hào)包含以下幾種形式
    1:{X,X,X},匹配多個(gè)字符,使用逗號(hào)隔開(kāi)。
    2:{1..9},或者{A..Z}等其他類似的寫(xiě)法,這樣寫(xiě)會(huì)匹配一個(gè)范圍內(nèi)的字符。
    3:{{X,X},{X,X}},嵌套匹配,這樣寫(xiě)法,是會(huì)產(chǎn)生四種匹配的
    但是,花括號(hào)和方括號(hào)又有著不同,方括號(hào)重點(diǎn)在匹配上,而花括號(hào)重點(diǎn)在返回匹配的字符。


    這是,編程的感覺(jué)嗎?看看變量和引用

    1:變量定義
    好簡(jiǎn)單的,“變量名=變量值”,在shell中直接鍵入var=helloworld,那么你就有了一個(gè)var變量!

    2:那么引用呢?
    也好簡(jiǎn)單的,使用”$變量名”

    3:引用一個(gè)命令的結(jié)果,“或者$()
    比如:echo `ls`或者 echo $(ls),那么打印的將是當(dāng)前目錄的內(nèi)容

    當(dāng)然了,演示的部分很簡(jiǎn)單,只是使用了ls命令,引用可以用在更多復(fù)雜的命令組合和場(chǎng)景中。

    控制特殊字符的匹配
    1:雙引號(hào)
    雙引號(hào)可以用來(lái)控制參數(shù)個(gè)數(shù),排除部分特殊字符的作用。就參數(shù)個(gè)數(shù)而言,當(dāng)你使用echo打印一些字符
    echo a b c    d,那么echo會(huì)接受4個(gè)參數(shù),打印之后,空格,制表符,換行符等把單詞分割為不同參數(shù)的多余字符會(huì)被過(guò)濾掉。


    當(dāng)我們把含有分隔符號(hào)的參數(shù)使用雙引號(hào)引起來(lái),單詞,或者說(shuō)參數(shù)的分割就失效了,命令會(huì)把雙引號(hào)內(nèi)的內(nèi)容作為一個(gè)參數(shù)來(lái)看待。


    echo是如此,使用ls的時(shí)候,尤其是ls那些含有分隔符號(hào)的文件名的時(shí)候,雙引號(hào)就能幫你大忙了。
    但是在雙引號(hào)中,shell的特殊字符,除了 $,\ (反斜杠),和 `(倒引號(hào))之外, 將會(huì)失去它們的特殊含義,被當(dāng)作普通字符來(lái)看待。這就意味著,剛才提到的參數(shù)分割,星號(hào)(*)匹配, 波浪線(家目錄),和花括號(hào)匹配都將失效。參數(shù)引用,命令結(jié)果引用還有算術(shù)表達(dá)式仍然生效。


    2:?jiǎn)我?hào),完全失效!
    是的,單引號(hào)引起來(lái)的所有內(nèi)容都會(huì)原樣輸出,所有特殊字符都會(huì)失效功能!

    3:轉(zhuǎn)義字符,反斜杠
    有些時(shí)候,顯示出個(gè)別特殊字符正式我們所需要的,這時(shí)候,反斜杠就可以幫到我們。就比如,過(guò)去我們常常聽(tīng)到“襯衫的價(jià)格是九磅十五便士”,那么貨幣單位就有可能需要轉(zhuǎn)義,原樣顯示。當(dāng)然了,美元符號(hào)才需要轉(zhuǎn)義,英鎊不需要。


    不過(guò)要注意,某些組合是有特殊含義的
    \t:按下tab鍵,這可是制表符
    \r:回車符號(hào)
    \n:新起一行
    \b:退格鍵
    目前,shell中一些任性的家伙我們已經(jīng)有了一個(gè)初步的認(rèn)識(shí)。

    posted on 2015-07-07 17:19 都較瘦 閱讀(153) 評(píng)論(0)  編輯  收藏 所屬分類: Linux

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    博客定位:囿于目前的水平,博客定位在記錄自己的學(xué)習(xí)心得和隨手的練習(xí)

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 精品国产亚洲一区二区三区| 亚洲国产成人手机在线电影bd| 国产精品免费无遮挡无码永久视频| 亚洲国产精品成人精品软件| 四虎免费影院4hu永久免费| 久久国产精品国产自线拍免费| 2020久久精品亚洲热综合一本 | 亚洲精品中文字幕无码蜜桃| 美丽的姑娘免费观看在线播放 | 日韩在线免费视频| 日本一区二区在线免费观看| 青青草原精品国产亚洲av| 国产大片免费观看中文字幕| 久久aⅴ免费观看| 激情小说亚洲色图| 777亚洲精品乱码久久久久久 | 亚洲成色999久久网站| 国产成人精品免费直播| 久久久久久久岛国免费播放 | 18级成人毛片免费观看| a免费毛片在线播放| 亚洲精品人成网在线播放影院| 亚洲综合网站色欲色欲| 免费黄网在线观看| 50岁老女人的毛片免费观看| 一个人看的免费视频www在线高清动漫| 色噜噜亚洲男人的天堂| 久久亚洲精品国产精品黑人| 亚洲国产91精品无码专区| 黄瓜视频高清在线看免费下载| 国产婷婷成人久久Av免费高清| 激情婷婷成人亚洲综合| ass亚洲**毛茸茸pics| 久久精品国产精品亚洲艾| 亚洲精品第一国产综合精品99| 成年人性生活免费视频| 免费专区丝袜脚调教视频| 国产麻豆成人传媒免费观看 | 国产精品久久香蕉免费播放| 在线视频观看免费视频18| **一级一级毛片免费观看|