最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux使用shell擴展匹配文件名的方法詳解

 更新時間:2026年04月10日 09:38:20   作者:晴天¥  
本文介紹了Bash中的命令行擴展,如大括號擴展、波形符擴展、路徑名擴展、變量擴展、命令替換等,通過示例,展示了如何使用這些擴展功能創(chuàng)建目錄、文件,管理和組織文件,使用通配符進行模式匹配,以及如何使用引號和轉(zhuǎn)義字符防止參數(shù)擴展,需要的朋友可以參考下

一、命令行擴展

當(dāng)在Bashshell提示符中鍵入命令時,shell在運行該命令行之前可以通過多個擴展對其進行處理。也可以使用這些shell擴展來執(zhí)行原本很難或不可能完成的復(fù)雜任務(wù)。

Bash執(zhí)行的主要擴展有:

大括號擴展,可以生成多個字符串

波形符擴展,擴展至用戶主目錄路徑

變量擴展,將文本替換為shell變量中存儲的值

命令替換,將文本替換為命令的輸出

路徑名擴展,幫助按模式匹配選擇一個或多個文件

路徑名擴展以前稱為通配,是Bash最有用的功能之一。使用此功能,可以更加輕松地管理多個文件。使用“擴展”的元字符來匹配要尋找的文件名和路徑名,可以一次性針對集中的一組文件執(zhí)行命令。

1.1.路徑名擴展和模式匹配

路徑名擴展將表示通配符或字符類別的特殊字符模式擴展為與該模式匹配的文件名列表。在shell運行您的命令之前,它會將模式替換為匹配的文件名列表。如果該模式與任何內(nèi)容都不匹配,則shell將嘗試使用該模式作為其運行的命令的字面參數(shù)。下表列出了用于模式匹配的常見元字符和模式類。

元字符和匹配項表

模式匹配項
*由零個或更多字符組成的任何字符串
任何一個字符
[abc...]括起的類(位于兩個方括號之間)中的任何一個字符
[!abc...]不在括起的類中的任何一個字符
[^abc...]不在括起的類中的任何一個字符
[[:aIpha:]]任何字母字符
[[:lower:]]任何小寫字符
[[:upper:]]任何大小字符
[[:aInum:]]任何字母字符或數(shù)字
[[:punct:]]除空格和字母數(shù)字以外的任何可打印字符
[[:digit:]]從0到9的任何單個數(shù)字
[[:space:]]任何單個空格字符,可能包括制表符、換行符、回車符、換行符或空格

使用示例:

創(chuàng)建一些示例

mkdir glob; cd glob
touch alpha bravo charlie delta echo able baker cast dog easy

示例1:使用*進行簡單模式匹配,分別匹配以“a”開頭的所有文件名和所有含“a”的所有文件名。

所有以a開頭的文件名

所有含“a”的所有文件名

匹配以“a”或“c”開頭的所有文件名

示例2:使用問號(?)字符來匹配其中的一些文件名。這兩個字符分別僅匹配四個和五個字符的文件名

1.2.大括號擴展

大括號擴展用于生成任意字符串。大括號包含字符串的逗號分隔列表或順序表達式。結(jié)果包含大括號定義之前或之后的文本。大括號擴展可以互相嵌套。也可以使用雙點語法(..),將它擴展為一個序列。例如,大括號內(nèi)的{m..p}雙點語法擴展為mnop。

注意:最常用的場景就是批量創(chuàng)建目錄或則文件

1.3.波形符擴展

波形符(~)可匹配當(dāng)前用戶的主目錄。如果開頭為斜杠(\)以外的字符串,shell就會將該斜杠之前的字符串解譯為用戶名;如果存在匹配項,則用該用戶的主目錄絕對路徑來替換此字符串。如果找不到匹配的用戶名,shell將使用實際波形符加上該字符串。

在以下示例中,echo命令用于顯示波形符字符的值。也可使用echo命令顯示大括號和變量擴展字符等的值。

1.4.變量擴展

變量的作用類似于可以在內(nèi)存中存儲值的命名容器。通過變量,可以從命令行或在shell腳本內(nèi)輕松訪問和修改存儲的數(shù)據(jù)。

您可以通過以下語法將數(shù)據(jù)作為值分配給變量:

[user@host -]$ VARIABLENAME=value

可以使用變量擴展將變量名稱轉(zhuǎn)換為命令行上的值。如果字符串以美元符號($)開頭,那么shell就會嘗試將該字符串的其余部分用作變量名稱,并將它替換為變量中包含的任何值。

要預(yù)防因其他shell擴展而引起的錯誤,您可以將變量的名稱放在大括號中,${VARIABLENAME}

注意:變量名稱只能包含字母(大寫和小寫)、數(shù)字和下劃線。變量名稱區(qū)分大小寫,不能以數(shù)字開頭。

1.5.命令替換

命令替換允許命令的輸出替換命令行上的命令本身。當(dāng)命令括在括號中并且前面有美元符號($)時,會發(fā)生命令替換。$(command)形式可以互相嵌套多個命令擴展。

1.6.防止參數(shù)被擴展

在Bashshell中,許多字符有特殊含義。為防止命令行的某些部分上執(zhí)行shell擴展,您可以為字符和字符串加引號(`)或執(zhí)行轉(zhuǎn)義(\)。

反斜杠(\)是Bashshell中的轉(zhuǎn)義字符。它可以防止其后的字符被擴展。

例如:

在上面的示例中,保護美元符號免于擴展,Bash將其視為常規(guī)字符,因此也就未在$HOME上執(zhí)行變量擴展。

如果要保護較長的字符串,則使用單引號(‘)或雙引號(")來括起字符串。它們的作用略有不同。單引號將阻止所有shell擴展。雙引號則阻止大部分shell擴展。

雙引號可抑制美元符號($)、反斜杠(\)、反引號(`)和感嘆號(!)以外的特殊字符在引用文本內(nèi)發(fā)揮作用。這會阻止路徑名擴展,但仍允許進行命令替換和變量擴展。

使用單引號則可以按字面解譯引號之間的所有文本。

二、綜合示例

1.使用ssh命令,以student用戶身份登錄serverb計算機。系統(tǒng)的配置支持使用SSH密鑰來進行身份驗證。

2.在Documents目錄中創(chuàng)建一個名為project_plans的目錄。Documents目錄應(yīng)該放到student用戶的主目錄中。在project_plans目錄中創(chuàng)建兩個空文件,取名為season1_project_plan.odf 和 season2_project_plan.odf.

提示: 如 ~/Documents目錄不存在,請使用mkdir命令-p選項創(chuàng)建該目錄。

mkdir -p ~/Documents
cd Documents
mkdir project_plans
touch season{1,2}_project_plan.odf

mkdir -p ~/Documents/project_plans
touch ~/Documents/project_plans/{season1,season2}_project_plan.odf
ls -lR Documents/

3.創(chuàng)建本實驗要使用的一組空白練習(xí)文件。使用shell的Tab補全功能可以輕松查找文件路徑名。在/home/student 目錄中創(chuàng)建名為tv_seasonX_episodeY.ogg的12個文件。將X替換為季數(shù),Y替換為該季中的集數(shù),共兩季,每季六集。

touch tv_season{1,2}_episode{1..6}.ogg
ls tv*

4.作為一名成功的連載懸疑小說作者,您正在為出版下一部暢銷書編輯章節(jié)。創(chuàng)建八個名為mystery_chapterX.odf的文件。將X替換為數(shù)字1到8。

touch mystery_chapter{1..8}.odf
ls mys*

5.使用一個命令在Videos目錄下創(chuàng)建兩個子目錄,名稱為season1和season2,以整理電視劇集。將適當(dāng)?shù)碾娨晞〖频诫娨暭咀幽夸浿小H使用兩個命令,通過相對語法指定目的地。

5.1.利用一個命令,直接在Videos目錄下創(chuàng)建名為season1,season2的子目錄

5.2.僅使用兩個命令,將適當(dāng)?shù)碾娨晞〖频诫娨暭咀幽夸浿?/p>

mv tv_season1* Videos/season1
mv tv_season2* Videos/season2
ls -R Videos

6.利用單個命令創(chuàng)建一個兩級目錄層次結(jié)構(gòu),以整理懸疑小說章節(jié)。在Documents目錄下創(chuàng)建my_bestseller 子目錄,并在新的my_bestseller 目錄下創(chuàng)建chapters子目錄。利用一個命令,直接在my_bestseller目錄下再創(chuàng)建3個子目錄。將這些子目錄命名為editor、changes和vacation。您不需要使用mkdir-p命令來創(chuàng)建父目錄,因為已存在my_bestseller 父目錄。

6.1.在Documents目錄下創(chuàng)建my_bestseller目錄。在my_bestseller目錄下創(chuàng)建chapters目錄。

mkdir -p Documents/my_bestseller/chapters
ls -R Documents

6.2.利用一個命令,直接在my_bestseller目錄下創(chuàng)建名為editor、changes和vacation的子目錄

mkdir Documents/my_bestseller/{editor,changes,vacation}
ls -R Documents

7.切換為chapters目錄。使用波形符(~)主目錄快捷鍵,將所有圖書章節(jié)移到chapters目錄中,即您現(xiàn)在的當(dāng)前目錄。使用最簡單的語法來指定目標(biāo)目錄。您想要將前兩個章節(jié)將發(fā)送給編輯進行審閱。僅將這兩個章節(jié)移到editor目錄,以避免在審閱期間修改它們。從chapters子目錄開始,使用帶有范圍的大括號擴展來指定要移動的章節(jié)文件名和目標(biāo)目錄的相對路徑。

7.1.更改到chapters目錄,再使用波形符(~)主目錄快捷鍵,將所有的圖書章節(jié)移到chapters目錄中。

cd Documents/my_bestseller/chapters
mv ~/mystery_chapter* .
ls

7.2.將前兩章移至editor目錄,使用帶有范圍的大括號擴展來指定要移動的章節(jié)文件名和目標(biāo)目錄的相對路徑。

mv mystery_chapter{1..2}.odf ../editor
ls
ls ../editor

7.3.使用單個命令,將第7章和第8章從chapters目錄移到vacation目錄。使用帶有字符串列表的大括號擴展指定章節(jié)文件名,而不使用通配符字符。

mv mystery_chapter{7,8}.odf ../vacation
ls
ls ../vacation

8.將您的工作目錄更改為~/Videos/season2,然后將本季的第一集復(fù)制到 vacation目錄。使用一個cd命令,從工作目錄更改為~/Documents/my_bestseller/vacation目錄。列出其文件。使用上一工作目錄參數(shù),返回到season2目錄。(如果最近一次用cd命令更改目錄是通過一個命令而非多個cd命令來實現(xiàn)的,此參數(shù)會成功。)從season2目錄,將第2集文件復(fù)制到vacation目錄。再次使用快捷鍵返回到vacation目錄。

8.1.將您的工作目錄更改為~/Videos/season2,然后將本季的第一集復(fù)制到vacation目錄。

cd ~/Videos/season2
cp *episode1.ogg ~Documents/my_bestseller/vacation

8.2.使用一個cd命令從你的工作目錄更改為~/Documents/my_bestseller/vacation目錄,列出其文件,然后使用 - 參數(shù)返回到上一目錄。將第2集文件復(fù)制到vacation目錄。使用帶有 - 參數(shù)的cd命令返回到vacation目錄。

cd ~/Documents/my_bestseller/vacation
ls 
cd - 
cp *episode2.ogg ~/Documents/my_bestseller/vacation
cd -

9.第5章和第6章的作者想要試驗可能的修訂。將這兩個文件從~/Documents/my_bestseller/chapters 目錄復(fù)制到]~/Documents/my_bestseller/changes 目錄,以防止這些修訂會修改原始文件。前往~/Documents/my_bestseller目錄。使用方括號模式匹配來指定要在cp命令的文件名參數(shù)中匹配的章節(jié)號。

cd ~/Documents/my_bestseller
cp chapters/mystery_chapter[56].odf changes
ls chapters
ls changes

10.將您的當(dāng)前目錄更改為changes目錄,通過命令替換使用date +%F命令將mystery_chapter5.odf復(fù)制到包含完整日期的新文件。使用mystery_chapter5_YYYY-MM-DD.odf名稱格式。通過date +%s命令來進行替換,制作mystery_chapter5.odf 的另一個副本,并且附上當(dāng)前的時間戳(即自時期1970-01-0100:00UTC起的秒數(shù)),確保文件名獨一無二。

cd changes
cp mystery_chapter5.odf mystery_chapter5_$(date +%F).odf
cp mystery_chapter5.odf mystery_chapter5_$(date +%s).odf
ls

11.進一步審閱后,您決定不需要修訂情節(jié)。刪除changes目錄。

如有必要,前往changes目錄并刪除該目錄中的所有文件。如果是當(dāng)前工作目錄,您無法刪涂該目錄。

更改到changes目錄的父目錄。嘗試使用rm命令(不帶-r遞歸選項)來刪除空目錄。此嘗試應(yīng)該會失敗。最后,使用rmdir命令刪除空目錄,而這會成功。度假結(jié)束后,您不再需要vacation目錄。通過使用rm命令(帶遞歸選項)刪除該目錄。完成時,返回到student用戶的主目錄。

11.1.刪除changes目錄。更改changes目錄的父目錄,再嘗試使用不帶-r遞歸選項的rm命令來刪除空目錄。

rm mystery*
cd ..
rm changes
rmdir changes
ls

11.2.使用帶有-r選項的rm命令來刪除vacation目錄。返回到student用戶的主目錄。

rm -r vacation
ls
cd 

12. 創(chuàng)建~/Documents/project_plans/season2_project_plan.odf 文件的硬鏈接,取名為-/Documents/backups/season2_project_plan.odf.back,硬鏈接可防意外刪除原始文件,并在您更改原始文件時使備份文件保持更新。提示:如果~/Documents/backups目錄不存在,請使用mkdir命令創(chuàng)建該目錄。

12.1.創(chuàng)建~/Documents/project_plans/season2_project_plan.odf 文件的硬鏈接,取名為-/Documents/backups/season2_project_plan.odf.back

mkdir -p ~/Documents/backups
ln ~/Documents/project_plans/season2_project_plan.odf \
~/Documents/backups/season2_project_plan.odf.back
ls -lR ~/Documents/

以上就是Linux使用shell擴展匹配文件名的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Linux shell擴展匹配文件名的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Shell腳本~(波浪號)避坑指南

    詳解Shell腳本~(波浪號)避坑指南

    這篇文章主要介紹了在Shell腳本中使用~波浪號表示用戶家目錄時的規(guī)則,并提供了三種推薦的方法來定義和切換到用戶家目錄下的特定目錄,感興趣的可以了解一下
    2025-12-12
  • Linux Shell+Curl網(wǎng)站健康狀態(tài)檢查腳本,抓出中國博客聯(lián)盟失聯(lián)站點

    Linux Shell+Curl網(wǎng)站健康狀態(tài)檢查腳本,抓出中國博客聯(lián)盟失聯(lián)站點

    這篇文章主要介紹了Shell+Curl網(wǎng)站健康狀態(tài)檢查腳本,抓出中國博客聯(lián)盟失聯(lián)站點,需要的朋友可以參考下
    2016-02-02
  • Linux磁盤管理方法介紹

    Linux磁盤管理方法介紹

    這篇文章介紹了Linux磁盤管理的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法

    讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法

    這篇文章主要介紹了讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法,cron默認(rèn)只支持以分為單位執(zhí)行Shell腳本的,需要的朋友可以參考下
    2014-10-10
  • Bash的For循環(huán)(根據(jù)每次遞增的數(shù))

    Bash的For循環(huán)(根據(jù)每次遞增的數(shù))

    需要執(zhí)行一個命令,每次消除500個id,通常寫的是遞增1的,記一筆,怕忘了
    2013-08-08
  • linux?shell編程指南之字符串與數(shù)組

    linux?shell編程指南之字符串與數(shù)組

    這篇文章主要給大家介紹了關(guān)于linux?shell編程指南之字符串與數(shù)組的相關(guān)資料,字符串與數(shù)組是Shell編程中常用的數(shù)據(jù)類型,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Linux使用parted命令管理大磁盤分區(qū)

    Linux使用parted命令管理大磁盤分區(qū)

    文章介紹了parted工具的基本使用方法,涵蓋創(chuàng)建、調(diào)整和刪除分區(qū),支持大容量磁盤和多種分區(qū)表格式,還提供了Java調(diào)用示例、腳本自動化技巧,以及在企業(yè)級應(yīng)用中的實踐建議,強調(diào)操作前備份數(shù)據(jù)的重要性,并推薦了相關(guān)學(xué)習(xí)資源,需要的朋友可以參考下
    2026-04-04
  • Shell腳本美化登錄界面裝飾圖(含農(nóng)歷)

    Shell腳本美化登錄界面裝飾圖(含農(nóng)歷)

    這篇文章主要介紹了Shell腳本美化登錄界面裝飾圖(含農(nóng)歷),本文腳本實現(xiàn)輸出一個佛祖像和農(nóng)歷日期,需要的朋友可以參考下
    2015-02-02
  • 在Linux中自動化腳本執(zhí)行重復(fù)性任務(wù)的詳細(xì)步驟

    在Linux中自動化腳本執(zhí)行重復(fù)性任務(wù)的詳細(xì)步驟

    選擇適合你需求的腳本語言,對于大多數(shù)自動化任務(wù),Bash腳本是一個不錯的選擇,因為它易于編寫和理解,對于更復(fù)雜的任務(wù),你可能需要使用Python或其他編程語言,下面給大家分享在Linux中編寫自動化腳本執(zhí)行重復(fù)性任務(wù)通常涉及的步驟,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Linux?syslog命令使用教程

    Linux?syslog命令使用教程

    syslog?是?Linux?和類?Unix?系統(tǒng)中用于記錄系統(tǒng)消息的標(biāo)準(zhǔn)協(xié)議,它允許應(yīng)用程序、守護進程和內(nèi)核將日志消息發(fā)送到集中式日志管理系統(tǒng),本文給大家介紹了Linux?syslog命令使用教程,需要的朋友可以參考下
    2025-03-03

最新評論

渑池县| 通化县| 宁德市| 罗田县| 乌审旗| 当雄县| 巴南区| 宁化县| 牟定县| 海原县| 连江县| 黔东| 白山市| 武义县| 修文县| 称多县| 文成县| 常山县| 连云港市| 平远县| 平原县| 华容县| 高密市| 翼城县| 南投市| 瓮安县| 东明县| 山东| 潞西市| 江孜县| 霍林郭勒市| 漳平市| 松原市| 博白县| 乌鲁木齐县| 交城县| 皋兰县| 莱阳市| 和硕县| 合川市| 延川县|