Linux Bash萬用字元介紹
Bash萬用字元是使用萬用字元字元匹配多個檔名或路徑的過程。Bash提供了一些可用於萬用字元的特殊字元,例如*,?和[]。
*字元是一個萬用字元,可以匹配檔名或路徑中的零個或多個字元。例如,命令ls *將列出當前目錄中的所有檔案,而命令ls *.txt將列出當前目錄中所有副檔名為“.txt”的檔案。
?字元類似於*字元,但它只匹配單個字元。例如,命令ls ?.txt將匹配諸如“a.txt”或“b.txt”之類的檔名,但不匹配“abc.txt”。
[]字元用於指定字元類,該字元類可用於匹配作為該類成員的任何單個字元。例如,命令ls [abc]*.txt將匹配諸如“a.txt”、“b.txt”或“c.txt”之類的檔名,但不匹配“d.txt”。
匹配任何字串
在Bash中,萬用字元*可用於匹配任何字串。*字元是一個特殊字元,用於匹配檔名或路徑中任意數量的字元(包括零個字元)。
例如,命令ls *將列出當前目錄中的所有檔案,而不管其名稱如何。命令ls *file*將列出當前目錄中名稱中任何位置包含字串“file”的所有檔案。
你也可以使用*字元來匹配具有特定副檔名的任何檔案,例如ls *.txt將匹配當前目錄中所有副檔名為.txt的檔案。
需要注意的是,Bash的萬用字元只適用於檔案系統中的檔案,而不適用於目錄或命令輸出。你可以使用find或grep等其他命令來匹配檔案或命令輸出中的字串。
匹配單個字元
在Bash中,萬用字元?可用於匹配單個字元。?字元類似於*字元,但它只匹配單個字元。當你需要匹配包含單個未知字元的特定模式時,這很有用。
例如,命令ls file?.txt將匹配諸如“filea.txt”或“fileb.txt”之類的檔名,但不匹配“fileabc.txt”或“file.txt”。如果你想匹配所有以“file”開頭並以“.txt”結尾但在中間還有一個字母的檔案,這將非常有用。
你還可以將?字元與其他萬用字元字元結合使用。例如,命令ls file?*將匹配諸如“filea.txt”或“fileabcd”或“fileabc”之類的檔名。
可以使用[]匹配特定字元集。例如,ls file[abc]*.txt將匹配“filea.txt”、“fileb.txt”、“filec.txt”,但不匹配“filed.txt”。
匹配字元範圍
在Bash中,可以使用方括號[]指定字元範圍,稱為字元類,該字元類可用於匹配作為該類成員的任何單個字元。
例如,命令ls file[a-z].txt將匹配諸如“filea.txt”或“fileb.txt”或“filec.txt”到“filez.txt”之類的檔名,但不匹配“fileA.txt”或“file1.txt”。
你還可以使用方括號內的感嘆號!來否定該類,以匹配該類中不存在的任何字元。例如,ls file[!a-z].txt將匹配諸如“fileA.txt”或“file1.txt”之類的檔名,但不匹配“filea.txt”或“fileb.txt”。
你還可以指定多個範圍,例如[a-zA-Z]將匹配任何大小寫字母字元。這對於匹配檔名中特定模式的多個變體非常有用。
需要注意的是,字元範圍區分大小寫,萬用字元將根據範圍中的字元相應地匹配檔名。
隱藏檔案
在包括Linux和macOS在內的Unix類系統中,以點.開頭的檔案和目錄被認為是隱藏檔案。使用ls等命令或在檔案瀏覽器中檢視目錄內容時,通常不會預設顯示這些檔案和目錄。
要在終端中顯示隱藏檔案和目錄,可以使用ls命令的-a或--all選項。例如,命令ls -a將列出當前目錄中的所有檔案和目錄,包括隱藏檔案。
或者,可以使用ls -A顯示所有檔案和目錄,包括隱藏檔案,但忽略"."和".."檔案,它們分別被認為是當前目錄和父目錄。
你還可以使用ls -la顯示所有檔案和目錄,包括以詳細格式顯示隱藏檔案的許可權、所有者和時間戳。
也可以使用bash中的萬用字元字元匹配隱藏檔案。例如,命令ls .*將匹配當前目錄中的所有隱藏檔案和目錄。
總結
總之,Bash提供了一些特殊字元,例如*、?和[],這些字元可用於萬用字元,即使用萬用字元匹配多個檔名或路徑的過程。*字元可以匹配任何字串,?字元匹配單個字元,[]字元允許你指定稱為字元類的字元範圍。
Linux和macOS中的隱藏檔案和目錄是以點.開頭的檔案和目錄,通常在使用ls等命令或在檔案瀏覽器中檢視目錄內容時不會預設顯示。要顯示隱藏檔案和目錄,可以使用ls命令的-a或-A選項。