有 3 个文件描述符,stdin、stdout 和 stderr (std=standard,标准)。
基本上你可以
关于查看这些内容的小提示:使用 less 命令,你可以查看 stdout (它会保留在缓冲区中) 和 stderr,stderr 会打印在屏幕上,但在你尝试“浏览”缓冲区时会被清除。
这将会使程序的输出写入到一个文件。
ls -l > ls-l.txt
在这里,将创建一个名为 'ls-l.txt' 的文件,它将包含你输入命令 'ls -l' 并执行后在屏幕上看到的内容。这将会使程序的 stderr 输出写入到一个文件。
grep da * 2> grep-errors.txt
在这里,将创建一个名为 'grep-errors.txt' 的文件,它将包含你看到的 'grep da *' 命令输出的 stderr 部分。这将会使程序的 stdout 输出被写入到 stderr。
grep da * 1>&2
在这里,命令的 stdout 部分被发送到 stderr,你可能会通过不同方式观察到这一点。这将会使程序的 stdout 输出被写入到 stderr。
grep * 2>&1
在这里,命令的 stderr 部分被发送到 stdout。如果你通过管道传递给 less 命令,你会看到通常会“消失”(因为它们被写入 stderr)的行现在被保留了(因为它们在 stdout 上)。这会将程序的所有输出都放到一个文件中。这有时适用于 cron 条目,如果你希望命令以完全静默的方式运行。
rm -f $(find / -name core) &> /dev/null
这(考虑到 cron 条目)将删除任何目录中名为 'core' 的所有文件。请注意,如果你要清除其输出,你应该非常确定命令正在做什么。