什麼是Linux元字符以及如何使用它們

根據維基百科,元字符是具有特殊含義的任何字符,例如克拉(^),美元符號($)或星號(*)。

就Linux而言,這些元字符數量相當多,其含義因所運行的命令或程序而異。

作為元字符的完全停止(。)

謙虛的句號用於在運行諸如cdfind或sh等命令時捐獻當前位置,但在諸如awkgrepsed的應用程序中,它用於表示任何字符。

例如,以下命令將查找當前文件夾和下面的所有mp3文件。

找 。 -name * .mp3

如果您在當前工作目錄(pwd)中運行該命令,則假設您將mp3文件保存在主文件夾中的音樂文件夾中,則可能會返回結果。

現在看看這個命令:

ps -ef | grep f..efox

ps命令列出您的計算機上正在運行的所有進程。 grep命令接收輸入行並蒐索模式。

因此,ps -ef命令獲取正在運行的進程的列表並將其提供給grep,其中搜索列表中具有f..efox的任何行。 可以表示任何角色。

如果你有firefox運行,你會得到一個匹配。 同樣,如果您有一個名為fonefox或freefox運行的程序,它們也會返回。

星號作為元字符(*)

星號是更廣為人知的元字符,在搜索模式時用來表示0或更多。

例如:

找 。 -name * .mp3

* .mp3返回以.mp3結尾的任何文件名的匹配項。 同樣,我可以用grep命令使用星號,如下所示:

ps -ef | grep F * efox

值得注意的是,這有點不同,因為星號意味著零或更多,以及尋找Firefox,facefox和fonefox它也可以找到flutefox,ferretfox,甚至只是fefox。

作為元字符的克拉(^)

克拉(^)用於表示一行或一個字符串的開頭。 那麼它是如何使用的?

ls命令用於列出文件夾中的所有文件,如下所示:

LS

如果你想知道文件夾中以“gnome”等特定字符串開頭的所有文件,則可以使用克拉指定該字符串。

例如:

ls | grep ^ gnome

請注意,這只列出了以gnome開頭的文件。 如果你想要在任何地方有文件名的gnome的文件,那麼你會再次回到星號。

在上面的例子中,ls返回一個文件名列表,並將該列表傳遞給grep,用於模式匹配。 grep知道克拉符號意味著找到任何以它後面的字符開頭的東西,在這種情況下,它是一個侏儒。

美元符號作為元字符($)

美元符號在Linux中可以有多種含義作為元字符。

當用來匹配模式時,它意味著與克拉相反並表示任何以特定字符串結尾的模式。

例如:

ls | grep png $

這列出了所有以png結尾的文件。

美元符號也用於訪問bash shell中的環境變量。

例如:

出口狗=莫莉
迴聲$狗

線出口狗= molly創建一個稱為狗的環境變量,並將其值設定為molly。 要訪問環境變量,使用$符號。 使用$符號時,echo $ dog語句顯示為molly,但沒有它,echo dog語句只顯示單詞dog。

轉義元字符

有時你不希望元字符有特殊的含義。 如果你有一個名為f.refox的文件和一個名為firefox的文件,該怎麼辦?

現在看看下面的命令:

ls | grep f.refox

你覺得返回什麼? 因為它們都匹配模式,所以f.refox和firefox都會返回。

要僅返回f.refox,您需要跳出句號來實際表示完整句號,如下所示:

ls | grep f \\ refox

常見的元字符及其含義

Linux元字符列表
字符 含義
任何角色
* 零個或多個字符
^ 匹配以模式開始的任何行或字符串(即^ gnome)
$ 匹配以模式結尾的任何行或字符串(即gnome $)
\ 轉義下一個字符以消除其特殊含義
[] 匹配列表或範圍之一(即[“abc”,“def”]或[1..9]
+ 匹配一個或多個在前(即grep a +)
匹配零個或前一個