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

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

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

一、命令行擴(kuò)展

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

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

大括號(hào)擴(kuò)展,可以生成多個(gè)字符串

波形符擴(kuò)展,擴(kuò)展至用戶主目錄路徑

變量擴(kuò)展,將文本替換為shell變量中存儲(chǔ)的值

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

路徑名擴(kuò)展,幫助按模式匹配選擇一個(gè)或多個(gè)文件

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

1.1.路徑名擴(kuò)展和模式匹配

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

元字符和匹配項(xiàng)表

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

使用示例:

創(chuàng)建一些示例

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

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

所有以a開頭的文件名

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

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

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

1.2.大括號(hào)擴(kuò)展

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

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

1.3.波形符擴(kuò)展

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

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

1.4.變量擴(kuò)展

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

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

[user@host -]$ VARIABLENAME=value

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

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

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

1.5.命令替換

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

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

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

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

例如:

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

如果要保護(hù)較長(zhǎng)的字符串,則使用單引號(hào)(‘)或雙引號(hào)(")來(lái)括起字符串。它們的作用略有不同。單引號(hào)將阻止所有shell擴(kuò)展。雙引號(hào)則阻止大部分shell擴(kuò)展。

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

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

二、綜合示例

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

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

提示: 如 ~/Documents目錄不存在,請(qǐng)使用mkdir命令-p選項(xiàng)創(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)建本實(shí)驗(yàn)要使用的一組空白練習(xí)文件。使用shell的Tab補(bǔ)全功能可以輕松查找文件路徑名。在/home/student 目錄中創(chuàng)建名為tv_seasonX_episodeY.ogg的12個(gè)文件。將X替換為季數(shù),Y替換為該季中的集數(shù),共兩季,每季六集。

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

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

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

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

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

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

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

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

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

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

6.2.利用一個(gè)命令,直接在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)前目錄。使用最簡(jiǎn)單的語(yǔ)法來(lái)指定目標(biāo)目錄。您想要將前兩個(gè)章節(jié)將發(fā)送給編輯進(jìn)行審閱。僅將這兩個(gè)章節(jié)移到editor目錄,以避免在審閱期間修改它們。從chapters子目錄開始,使用帶有范圍的大括號(hào)擴(kuò)展來(lái)指定要移動(dòng)的章節(jié)文件名和目標(biāo)目錄的相對(duì)路徑。

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

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

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

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

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

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

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

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

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

8.2.使用一個(gè)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章的作者想要試驗(yàn)可能的修訂。將這兩個(gè)文件從~/Documents/my_bestseller/chapters 目錄復(fù)制到]~/Documents/my_bestseller/changes 目錄,以防止這些修訂會(huì)修改原始文件。前往~/Documents/my_bestseller目錄。使用方括號(hào)模式匹配來(lái)指定要在cp命令的文件名參數(shù)中匹配的章節(jié)號(hào)。

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命令來(lái)進(jìn)行替換,制作mystery_chapter5.odf 的另一個(gè)副本,并且附上當(dāng)前的時(shí)間戳(即自時(shí)期1970-01-0100:00UTC起的秒數(shù)),確保文件名獨(dú)一無(wú)二。

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

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

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

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

11.1.刪除changes目錄。更改changes目錄的父目錄,再嘗試使用不帶-r遞歸選項(xiàng)的rm命令來(lái)刪除空目錄。

rm mystery*
cd ..
rm changes
rmdir changes
ls

11.2.使用帶有-r選項(xiàng)的rm命令來(lái)刪除vacation目錄。返回到student用戶的主目錄。

rm -r vacation
ls
cd 

12. 創(chuàng)建~/Documents/project_plans/season2_project_plan.odf 文件的硬鏈接,取名為-/Documents/backups/season2_project_plan.odf.back,硬鏈接可防意外刪除原始文件,并在您更改原始文件時(shí)使備份文件保持更新。提示:如果~/Documents/backups目錄不存在,請(qǐng)使用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擴(kuò)展匹配文件名的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Linux shell擴(kuò)展匹配文件名的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

    Linux磁盤管理方法介紹

    這篇文章介紹了Linux磁盤管理的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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í)行一個(gè)命令,每次消除500個(gè)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)用示例、腳本自動(dòng)化技巧,以及在企業(yè)級(jí)應(yīng)用中的實(shí)踐建議,強(qiáng)調(diào)操作前備份數(shù)據(jù)的重要性,并推薦了相關(guān)學(xué)習(xí)資源,需要的朋友可以參考下
    2026-04-04
  • Shell腳本美化登錄界面裝飾圖(含農(nóng)歷)

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

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

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

    選擇適合你需求的腳本語(yǔ)言,對(duì)于大多數(shù)自動(dòng)化任務(wù),Bash腳本是一個(gè)不錯(cuò)的選擇,因?yàn)樗子诰帉懞屠斫?對(duì)于更復(fù)雜的任務(wù),你可能需要使用Python或其他編程語(yǔ)言,下面給大家分享在Linux中編寫自動(dòng)化腳本執(zhí)行重復(fù)性任務(wù)通常涉及的步驟,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Linux?syslog命令使用教程

    Linux?syslog命令使用教程

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

最新評(píng)論

阿鲁科尔沁旗| 灌阳县| 攀枝花市| 武穴市| 河南省| 都兰县| 太仆寺旗| 巩义市| 仲巴县| 康保县| 外汇| 尼勒克县| 安泽县| 绍兴县| 鄢陵县| 铁岭县| 禄丰县| 靖安县| 托克托县| 通渭县| 西峡县| 河北区| 射洪县| 富阳市| 米泉市| 宜宾市| 曲阳县| 新干县| 盐山县| 石狮市| 台南县| 星子县| 祁连县| 闽侯县| 合作市| 伊通| 鹤壁市| 区。| 新乐市| 龙南县| 建宁县|