中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell 之文件名匹配和命令執行(四)

發布時間:2020-06-30 19:42:07 來源:網絡 閱讀:1799 作者:上帝之子521 欄目:開發技術

        今天我們來學習下 shell 腳本中的文件名匹配和命令執行的順序與結果。我們學習這個的目的是可以熟悉的在 shell 腳本中寫出快速的找到文件的命令。它可以匹配文件名中的任何字符串,匹配文件名中的單個字符以及匹配文件名中的字母或數字符號。

        首先我們來看看匹配文件的符號的定義,匹配字符串類型的符號稱之為元字符。匹配文件名中的任意字符串,同時也包括空字符串

        舉例:ls /etc/*.conf     ls /etc/h*.co*f。結果如下

shell 之文件名匹配和命令執行(四)

        我們看到成功的匹配到了 /etc 目錄下的 h 開頭的 con*f 結尾的所有文件,那么我們以后在文件的查找中就很方便了。

        下來我們來看看?匹配文件,那么它是能匹配文件名中的任何單個字符

        舉例:ls /etc/hos?.conf    ls /etc/??g.conf。結果如下所示

shell 之文件名匹配和命令執行(四)

        下來繼續來看看 [ ] 匹配文件,[ ... ] 匹配 [ ] 中所包含的任意一個字符。有兩種匹配方式:a> 雜亂匹配:ls /etc/[wsdcr]syslog.conf;b> 范圍匹配:ls [0-9][a-zA-Z].txt

shell 之文件名匹配和命令執行(四)

        我們看到已經匹配出來了。[ !... ] 匹配 [ ] 中非感嘆號!之后的任意一個字符,它與上一條規則剛好相反。舉例:ls [!0-9]*.txt。此條是匹配非數字開頭的后綴名為 txt 的所有文件。如下

shell 之文件名匹配和命令執行(四)

       下來我們來看看一個綜合應用:查找一個以數字開頭,接著包括兩個小寫英文字母,然后再接任意兩個字符的以 .conf 結尾的文件名。(如:5abcui.conf 是符合條件的)

#! /bin/bash

ls [0-9][a-z][a-z]???.conf

        我們來看看結果

shell 之文件名匹配和命令執行(四)

        我們在平時的輸出 log 中通常會以特定字符+年月日來進行保存,那么我們的創建 log 的方式就如下

shell 之文件名匹配和命令執行(四)

        如果我們能熟練的使用匹配字符,那么便可以大大減少在查找文件名上的工作量,這是一種非常有效的模式匹配方法。

        下來我們接著看看命令執行的順序和結果。我們知道在一般的命令中,它是有返回執行結果的,成功則返回 1,失敗返回 0;同樣的,在Linux中,也是有命令的返回結果的,只不過是它比較特殊,成功時返回 0,失敗時返回非 0。下來我們看看示例,如下

shell 之文件名匹配和命令執行(四)

        我們看到在 ls abcs.log 時,由于沒有這個文件,因此它的返回值為 2(非 0);在 ls 2.txt 時,這個文件是存在的,因此它的返回值為 0。

        下來我們來看看命令的執行控制:a> 使用 && 符號;b> 使用 || 符號;c> 命令的組合使用“;”

        a> 使用 && 符號

            格式:命令 1 && 命令 2 && ··· ;說明:如果命令 1 執行成功,那么執行命令 2 ···

            舉例:cp /etc/sysctl.conf /mnt/ && echo "Copy file success"

shell 之文件名匹配和命令執行(四)

        我們看到在有文件存在的情況下,便執行后面的 echo 命令,打印出了 Copy file success。在前面的命令沒有執行成功的情況下,沒有繼續執行后面的 echo 命令。我們在編譯源碼時:./configure && make  && make install ,它的用處是用于腳本的執行的調試。

        b> 使用 || 符號

            格式:命令 1 || 命令 2 || ···;說明:如果 || 左邊的命令執行失敗了,那么接著執行右邊的命令。

            舉例:cp hello.txt copy.txt || echo "Copy file failed"

shell 之文件名匹配和命令執行(四)

        它的用處也是用于支持腳本的執行的調試。

        c> 命令的組合使用

            格式 1:“;”一次下達兩個以上的命令

            格式 2:( 命令 1;命令 2;... ) 在當前 shell 中執行

            格式 3:{ 命令 1;命令 2;... } 在子 shell 中執行 

        舉例:

            1、ls /usr/;cd;echo "OK"

shell 之文件名匹配和命令執行(四)

            2、(ls; cat a.txt; cd) || echo "success"

shell 之文件名匹配和命令執行(四)

        我們看到在 || 后,執行前面的命令后,如果執行成功則后面的命令不會執行。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏尼特右旗| 云龙县| 太仆寺旗| 赞皇县| 克什克腾旗| 民县| 南投县| 仁布县| 通化县| 万源市| 垣曲县| 资兴市| 高雄市| 迁西县| 克山县| 昌乐县| 娱乐| 温宿县| 广西| 普陀区| 巴彦淖尔市| 芦山县| 顺昌县| 铜梁县| 富民县| 田阳县| 东阿县| 陈巴尔虎旗| 张家港市| 镶黄旗| 西吉县| 墨玉县| 台前县| 海盐县| 哈密市| 连云港市| 阿拉尔市| 盖州市| 双流县| 朝阳市| 登封市|