输入/输出重定向
输出重定向
在终端中,可以使用 > 或 >> 将输出重定向到文件中,其中 > 表示覆盖文件,>> 表示添加到文件的尾行。
txt
command > file例如,echo 命令将输出指定的变量或字符串,可以通过输出重定向快速写入内容到文件,例如想在 .bashrc 的尾行加入一条内容 alias ll='ls -lh --color=auto':
bash
echo "alias ll='ls -lh --color=auto'" >> .bashrc这将在尾行追加该内容,你也可以使用 > 覆盖整个文件。
输入重定向
可以将文件内容使用 < 输入给命令:
txt
command < filewc -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 程序中,例如在终端中输入以下命令,回车后将允许你继续输入内容,直到你再此输入 maker,maker是一个标记,你可以将他替换为任意字符串。
txt
$ wc -m << maker
> Acovia docs
> maker
12
$组合重定向
如果你希望将多个文件描述符的内容写入文件,可以组合写入,格式如下:
txt
command > out.log 2>&1& 将合并这两个输入符的输出。