什么是 Linux 元字符? 你需要知道的一切

Linux Bash shell 最强大的特性是它能够有效地处理文件并重定向它们的输入和输出。 Linux 使用称为元字符的特殊字符或符号为 shell 命令添加与文件搜索和命令连接相关的特殊含义。

元字符有助于在 Linux 上列出、删除和复制文件。 但是,每个元字符的功能根据您使用的命令而有所不同。

本文提供了有关 Linux 中不同类型元字符的深入指南。 最后,我们解释了这些特殊字符如何帮助连接和扩展命令。

文件匹配元字符

Linux shell 允许您在键入命令时通过在文件或目录名称之间使用元字符来保存击键。 这些字符可帮助您引用一组文件或目录以列出、移动或执行其他活动。

以下是 Linux shell 可以解释的一些文件匹配元字符:

  • *(星号): 匹配单个或多个出现的字符
  • ? (问号):匹配单个字符或模式出现
  • [ ] (方括号):匹配方括号内指定的任何连字符分隔的数字、符号或字母

在 Linux 中练习元字符的理想方法是在 /tmp 目录。

sudo mkdir /tmp/meta

现在导航到 /tmp/元 使用 cd 命令创建目录并使用 touch 创建新的空文件,如下所示:

touch apple.txt cider.sh vinegar.php cat.txt lemon.txt juice.sh catfish.sh 

使用以下命令测试“*” 元字符并显示输出:

ls c*
Output:
catfish.sh cat.txt cider.sh
ls c*h
Output:
catfish.sh cider.sh
ls *r*
Output:
cider.sh vinegar.php
sudo rm *p*

上述命令将删除名称中包含字母“p”的所有文件。 您可以使用 ls 命令验证更改,如下所示:

ls
Output:
catfish.sh cat.txt cider.sh juice.sh lemon.txt

以下是“?” 用于模式匹配的元字符:

ls a?*
Output:
apple.txt
ls c?t*
Output:
catfish.sh cat.txt

最后一个命令匹配任何以开头的文件 C 并且有 作为第三个字母(cat.txt、catfish.sh 等)。

现在使用 [av]* 带有 ls 命令的选项以列出以其中任一开头的所有文件 一个 或者 v, 如下:

ls [av]*
Output:
apple.txt vinegar.sh

可以修改上面的命令,只列出以字母结尾的文件

ls [ac]*[t]
Output:
apple.txt catfish.txt cat.txt

同样,您可以使用连字符分隔的字母来定义范围和列表文件,如下所示:

ls [a-j]*
Output:
apple.txt catfish.sh cat.txt cider.sh juice.sh

文件重定向元字符

为了更好地理解 Bash 中的重定向,Linux 中的每个进程都有文件描述符,称为标准输入 (标准输入/0), 标准输出 (标准输出/1) 和标准误差 (标准错误/2)。 它们确定命令输入的来源,并决定将输出和错误消息发送到哪里。

重定向元字符通过重定向内容 I/O 流来帮助您修改这些操作。 通常,Linux shell 从键盘读取命令输入并将输出写入屏幕。 输入重定向允许命令从文件而不是键盘读取内容,而输出重定向将命令输出保存到文件中。

换句话说,Linux 文件重定向元字符允许您将内容重定向到 (>) 和从 () 文件。 三个主要的重定向元字符是:

  1. :将文件内容定向到命令。 例如,命令输出 少.bashrc 是相同的 少<.bashrc>.
  2. >:将命令输出定向到文件。 命令 ls /etc > 列表.txt 将输出保存到 lists.txt 文件。
  3. >>:将命令输出附加到文件内容。

wc 代表字数,您可以使用它来显示文件在将其附加到输出之前和之后之间的差异。

相关:了解 Linux 上的标准 I/O

大括号扩展元字符

大括号扩展元字符允许您跨目录、文件名或其他命令行参数扩展字符。 例如,您可以创建一个新目录 支撑 在 – 的里面 /tmp 文件夹并使用 touch 命令创建一组文件,如下所示:

sudo mkdir /tmp/brace; cd /tmp/brace
touch test{1,2,3,4,5}

现在,您可以使用 ls 命令检查 touch 是否创建了文件。

ls
Output:
test1 test2 test3 test4 test5

您可以指定多个列表以根据列表中元素的组合生成文件名。 例如:

touch {apple,cider,vinegar}.{fruit,liquid,sour}
touch {a,b,c}.{1,2,3}

最后一条命令将在当前目录中创建以下文件:

第一个命令使用两组大括号将每组中的文件名与另一组相关联。 您也可以将最后一个命令写为 触摸 {a..c}。 {1..3} 指定 a 和 c 以及 1 和 3 之间的范围。

除了创建文件之外,您还可以使用大括号扩展将文件删除或复制到其他位置。

其他一些 Linux 元字符

下面是一些必须知道的用于命令连接和扩展的元字符的表格,包括它们的名称、描述和练习示例:

名称 描述 例子
管道 (|) 将命令输出作为输入连接到其他命令。 猫 /etc/passwd | grep 根
分号 (;) 允许一个接一个地执行顺序命令。 cd /等; ls -la ; chmod +x /tmp/script.php
与号 (&) 在后台运行进程或命令。 查找 / -perm -u=s -type f &
美元 ($) 展开算术表达式并将其传递给 shell echo “此目录中的文件总数为:$(ls | wc -l)”
空重定向 (2>) 将标准错误消息定向到 /dev/null 文件 your_command 2>/dev/null
回旋 (^) 匹配以 ^ 开头的任何模式 cd /etc/ssh ; ls | grep ^s

Save Linux 元字符的击键

Linux 元字符也称为通配符,可为命令添加特殊含义并控制其行为。 元字符优化用户在生产环境中的工作性能,同时处理文件/目录和连接/扩展 Linux shell 命令。

此外,元字符也是正则表达式的构建块。 此外,如果您想成为亲 Linux 用户,了解元字符及其用法是一项重要技能。