Shell 元字符

Shell 元字符是特定的字符,通常是符号,在 Shell 中具有特殊含义。
bash 支持的元字符如下所示:

  • | : 将命令的输出发送到左侧作为符号右侧命令的输入
  • & :在后台运行进程,允许我们继续在命令行上工作
  • ; : 允许我们在一行中列出多个命令,以该字符分隔
  • () :将命令分组并将其输出发送到同一位置
  • < :从该符号右侧列出的文件中获取左侧命令的输入
  • : 将左边命令的输出发送到这个符号右边命名的文件中

  • 空格 tab键
    注意:创建文件名和目录名时不要使用这些元字符。这些字符在 shell 中具有特殊意义。
    重定向元字符
    命令重定向由以下 shell 元字符启用:
  • 标准输入的重定向 (<)
  • 标准输出的重定向 (>)
  • 标准错误的重定向 (2>)
  • 管道字符 (|)

重定向标准输出

大于 (> ) 元字符将标准输出定向到文件,而不是将输出打印到屏幕。

# command > filename

或者

# command 1> filename

如果文件不存在,系统会创建它。
当我们使用单个大于 (>) 元字符时,如果文件已存在,该命令将覆盖文件的原始内容。
当我们使用两个大于号 (>>) 字符时,该命令会将输出添加到文件的原始内容。

$ command >> filename

文件描述符

每个进程都使用文件描述符。
文件描述符确定命令输入的来源以及输出和错误消息的目的地。
该表解释了文件描述符。

文件描述符编号文件描述符缩写定义
0标准输入标准命令输入
1标准输出标准命令输出
2标准错误标准命令错误
www. On IT Road .com

重定向标准输入

小于 (< ) 元字符将文件作为标准输入处理,而不是从键盘读取输入。

# command < filename

或者

# command 0< filename

例如,使用 data.txt 文件作为 mailx 命令的输入。

# mailx -s test test@example.com < data.txt

命令重定向

默认情况下,shell 从标准输入(键盘)接收或者读取输入,并将输出和错误消息显示到标准输出(屏幕)。
输入重定向强制命令从文件而不是从键盘读取输入。
输出重定向将命令的输出发送到文件中,而不是将输出发送到屏幕。

重定向标准错误

使用文件描述符编号 (2) 和大于号 (>) 的命令会将任何标准错误消息重定向到 /dev/null 文件。

$ command 2> /dev/null

以下示例显示了重定向到 data.txt 文件的标准输出和标准错误。

$ ls /tmp 1> data.txt 2>&1

注意:语法 2>&1 指示 shell 将 stderr (2) 重定向到接收 stdout (1) 的同一文件。

Linux下如何使用命令重定向

管道符

管道字符将标准输出从一个命令重定向到另一个命令的标准输入。
第一个命令将输出写入标准输出,第二个命令从前一个命令读取标准输出作为标准输入。

$ command | command

例如,使用 who 命令的标准输出作为 wc -l 命令的标准输入。

$ who | wc -l 
35

要查看位于 /etc 目录中的所有子目录的列表,请输入以下命令。

$ ls -F /etc | grep "/" X11/
acct/
apache/
apache2/

使用 head 命令的输出作为 'xargs ls' 命令的输入。

head -10 data.txt | xargs ls
日期:2020-09-17 00:13:57 来源:oir作者:oir