(# 条评论取自文档)
command > filename # Docs: Redirect stdout to a file.
和
command 1> filename # Docs: Redirect stdout to file "filename."
答案1
从Bash 手册中有关重定向的部分(强调我的):
输出重定向导致文件名由扩展产生单词打开以在文件描述符上写入n, 或者标准输出(文件描述符 1)如果n未指定。如果文件不存在则创建;如果它确实存在,则会被截断为零大小。
>foo
所以,和之间没有区别1>foo
。
答案2
标准输出是隐式文件描述符(如果未列出),因此它们实际上是相同的东西。使用1>
不是我见过的风格。
% grep _FILENO /usr/include/unistd.h
#define STDIN_FILENO 0 /* standard input file descriptor */
#define STDOUT_FILENO 1 /* standard output file descriptor */
#define STDERR_FILENO 2 /* standard error file descriptor */