作为形象。所有命令都是相似的。
我知道如何使用它,但是我真的不知道细节。
有人知道吗?非常感谢你。
# does `cat` read fd and print?
$ cat file
# does `cat` read from stdin and print?
$ cat < file
$ cat - < file
# with heredoc or herestring, what methods `cat` command use to read from heredoc?stdin?
$ cat << EOF
heredoc> test
heredoc> EOF
test
$ cat <<< "test"
$ cat - << EOF
heredoc> test
heredoc> EOF
test
$ cat - <<< "test"
# and I dont why these commands works?
$ cat <(echo "test")
$ cat - <<(echo "test")
# why this command doesn't work?
$ cat - <(echo "test")
最佳答案
一些非常有用的Bash手册中的一些阅读 Material :
<filename
)-使标准输入重定向到文件filename
<<WORD
)-使标准输入从下一行重定向到脚本源,直到但不包括WORD
<<<"string"
)-导致将标准输入重定向到字符串string
(就好像该字符串已写入临时文件,然后将标准输入重定向到该文件一样)<(command)
)-启动执行command
的进程,并在命令行上插入一个类似于文件名的名称,以便从该"file"中读取产生Posix建议使用
-
指示源文件是标准输入,这是许多命令所共有的。如果未指定文件,许多命令将从标准输入中读取。有些像cat
,实现了两种指示意图是从标准输入中读取的方式。请注意,
-
和<(command)
都是文件名参数,而<filename
,<<WORD
和<<<"string"
是重定向。因此,尽管它们从表面上看起来很相似,但在幕后却大不相同。他们的共同点是他们必须与投入有关。其中一些(但不是here-docs/strings)具有与输出有关的类似物,使用>
而不是<
。