什么是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 +)
匹配零个或前一个