裸 < 有什么作用?

Exp*_*lls 10 bash

bash 如果您运行类似的命令,似乎不会抱怨

$ < some-file-that-exists
Run Code Online (Sandbox Code Playgroud)

似乎什么都没有发生。

你也可以使用

$ <<<"any string"
Run Code Online (Sandbox Code Playgroud)

甚至过程替换。

那么这到底是做什么的,为什么允许这样做。它对任何事情都有用吗?

Kyl*_*nes 20

<为可以在重定向指令之前或之后发生的命令设置重定向。IE

$ < file wc
Run Code Online (Sandbox Code Playgroud)

效果很好

$ wc < file
Run Code Online (Sandbox Code Playgroud)

但是,如果您不发出命令,bash 会设置重定向并且不执行任何其他操作。对于输入重定向,如果文件存在且可读,则这相当于您看到的内容,什么都没有。如果文件不存在或不可读,bash 将发出错误信号。对于输出重定向,如果输出文件不存在,则将创建该文件。如果>使用,任何现有的输出文件都将被截断;如果>>使用则不截断。


joh*_*n64 5

< 默认情况下从 stdin 或文件读取。您的表达式对输入没有任何作用,因为您在阅读后没有做任何事情。

如果您在最后执行 < some-file-that-exists > outputfile,那么您将看到您刚刚读入了第一个文件的内容并将其写入了第二个文件。

<<< 这里是 doc 格式,因此它从字符串而不是文件中读取。cat <<<"any string" 以查看您已阅读的内容。

  • 为了将来参考,请编辑您的答案以添加详细信息而不是添加评论 (2认同)
  • “如果您在最后执行 &lt; some-file-that-exists &gt; outputfile ,那么您将看到您刚刚读入了第一个文件的内容并将其写入了第二个文件。” 这是错误的;如果没有命令,输出文件将被截断为零字节。 (2认同)