Skip to content

输入/输出重定向

输出重定向

在终端中,可以使用 >>> 将输出重定向到文件中,其中 > 表示覆盖文件,>> 表示添加到文件的尾行。

txt
command > file

例如,echo 命令将输出指定的变量或字符串,可以通过输出重定向快速写入内容到文件,例如想在 .bashrc 的尾行加入一条内容 alias ll='ls -lh --color=auto'

bash
echo "alias ll='ls -lh --color=auto'" >> .bashrc

这将在尾行追加该内容,你也可以使用 > 覆盖整个文件。

输入重定向

可以将文件内容使用 < 输入给命令:

txt
command < file

wc -m 命令可以统计字数,通过输入重定向,即可统计文件字数,例如统计 README.md 文件字符数:

bash
wc -m < README.md

内容将以字符串传递给前方命令,即使该命令和 wc -m README.md 效果一样,但前者通过倾向于统计字符串个数,后者倾向于读取文件内字符串个数。

过滤文件描述符的输出重定向

文件描述符是操作系统中用于标识打开的文件的一个整数。

在 Unix 和 Linux 系统中,每个进程在启动时会自动打开三个标准的文件描述符:

  • 0:标准输入(stdin)

  • 1:标准输出(stdout)

  • 2:标准错误(stderr)

使用 n> 的方式来过滤输出,其中 n 为指定的文件描述符。

例如要将错误信息输出到文件 error.log 中,可以使用如下格式的命令

txt
command 2> error.log

同样的,你可以用 n>> 的方式将输出追加到文件尾行。

Here Document

使用 << 可以交互式将输入内容输入到 Shell 程序中,例如在终端中输入以下命令,回车后将允许你继续输入内容,直到你再此输入 makermaker是一个标记,你可以将他替换为任意字符串。

txt
$ wc -m << maker
> Acovia docs
> maker
12
$

组合重定向

如果你希望将多个文件描述符的内容写入文件,可以组合写入,格式如下:

txt
command > out.log 2>&1

& 将合并这两个输入符的输出。