6 个我喜欢在命令行中使用的 Linux 元字符

在 Linux 命令行中使用元字符是提高效率的好方法。
39 位读者喜欢这篇文章。

在我的 Linux 旅程早期,我学会了如何使用命令行。这是 Linux 与众不同的地方。我可以失去图形用户界面 (GUI),但这对于完全重建机器来说是不必要的。许多 Linux 计算机以无头模式运行,您可以在命令行中完成所有管理任务。它使用了许多大家熟悉的基本命令,例如 lsls-lls-lcdpwdtop 等等。

Linux 上的 Shell 元字符

您可以通过使用元字符来扩展这些命令中的每一个。我不知道你称它们为什么,但元字符让我的生活更轻松了。

管道 |

假设我想知道我的系统上运行的所有 Firefox 实例。我可以使用带有 -efps 命令来列出我的系统上运行的所有程序的实例。现在我想只看到那些涉及 Firefox 的实例。我使用我最喜欢的元字符之一,管道 | 将结果传递给 grep,它搜索模式。 

$ ps -ef | grep firefox 

输出重定向 >

另一个我喜欢的元字符是输出重定向 >。我使用它来打印 Intel 提到的所有实例的结果,这是 dmesg 命令的结果。您可能会发现这在硬件故障排除中很有帮助。 

$ dmesg | grep amd > amd.txt
$ cat amd.txt
[ 0.897] amd_uncore: 4 amd_df counters detected
[ 0.897] amd_uncore: 6 amd_l3 counters detected
[ 0.898] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).

星号 *

星号 * 或通配符是查找具有相同扩展名的文件时的最爱,例如 .jpg.png。我首先进入我系统上的 Picture 目录,并使用如下命令: 

$ ls *.png
BlountScreenPicture.png
DisplaySettings.png
EbookStats.png
StrategicPlanMenu.png
Screenshot from 01-24 19-35-05.png

波浪号 ~

波浪号 ~ 是快速返回 Linux 系统上的主目录的一种方法,只需输入以下命令: 

$ cd ~
$ pwd
/home/don

美元符号 $

作为元字符的 $ 符号具有不同的含义。当用于匹配模式时,它表示以给定字符串结尾的任何字符串。例如,当同时使用元字符 |$ 时: 

$ ls | grep png$
BlountScreenPicture.png
DisplaySettings.png
EbookStats.png
StrategicPlanMenu.png
Screenshot from 01-24 19-35-05.png

脱字符 ^

^ 符号将结果限制为以给定字符串开头的项目。例如,当同时使用元字符 |^ 时: 

$ ls | grep ^Screen
Screenshot from 01-24 19-35-05.png

许多这些元字符是 正则表达式 的入门,因此还有很多东西可以探索。您最喜欢的 Linux 元字符是什么,它们是如何节省您的工作的?

标签
User profile image.
教育家、企业家、开源倡导者、终身学习者、Python 教师。教育心理学硕士,教育领导学硕士,Linux 系统管理员。

11 条评论

最后一个元字符的名称不应该拼写为“Caret”吗?

“脱字符”甚至不是命令行 shell 的元字符。 它是从 shell 运行的程序中使用的元字符,这些程序将给定参数用作正则表达式。
这与“*”不同,后者由 shell“模式”(不是正则表达式)解释。

还有更多有用的 shell 元字符
- 美元符号 ($) 用于环境变量的值
- 成对的反引号 (`) 用于将子命令的输出插入到另一个命令的命令行中:这是我最喜欢的,仅次于 I/O 重定向器(“|”、“<”、“>”),因为它仅在内存中捕获输出,而无需任何命名变量。

回复 作者 ScottNesbitt

实际上,您只需输入“cd”并按回车键即可更改到您的主目录。 除非您要引用子目录,否则您不需要波浪号,例如:“cd ~/.ssh”

cd <enter> 也带您回到您的主目录。

波浪号 ~ 本身会扩展到您的主目录。 同样值得注意的是,您可以通过在其登录名前加上 ~ 来引用其他人的主目录

例如
cd ~/dave 将在您的主目录下查找子目录“dave”

但是
cd ~dave 将查找用户 dave 的主目录。

并且 bash 的 <tab> 补全也适用于此,
例如
cd ~grah<tab> 将从 /etc/passwd 中扩展以 “grah” 开头的用户名。

脱字符是我最喜欢的新元字符,至少在 bash 中是这样。 它只是重复最后一个命令并进行替换。 这里有一些例子。

$ unzip -l somefile.zip
$ ^-l^

$ beet ls -a some album
$ ^ls^rm -df

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.