为什么“ls > foo”会产生一个包含“foo”的文件?

Dav*_*aux 16 command-line

我删除了目录中的所有文件,然后ls > foo在同一目录中运行。

运行cat foo显示新创建的文件“foo”包含“foo”。为什么文件“foo”不为空?当ls执行,有目录中没有文件呢,对吧?

dan*_*der 23

>该前命令行指令发生ls执行命令。shell 必须准备好保存ls命令可能产生的输出,因此它必须创建并打开文件以进行写入。

lsshell 执行时,该foo文件存在,因此ls输出“foo”,这是您在文件中找到的内容foo

  • 如果你不喜欢那样,你可以做类似`ls | 的事情。(sleep 2; cat > foo)`,其中 2 是在使用 `cat` 打开该文件之前等待的 2 秒。 (2认同)