unix – 为什么不将文件名列表导入cat?

前端之家收集整理的这篇文章主要介绍了unix – 为什么不将文件名列表导入cat?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
cat没有从管道输入中获取文件名列表的设计原理是什么?为什么设计师选择以下不起作用?
ls *.txt | cat

而不是这样,他们选择我们需要将文件名作为参数传递给cat:

ls *.txt | xargs cat
当你说ls * .txt |猫不工作,你应该说这不会像你期望的那样工作.事实上,它的工作方式与它的工作方式相同.

来自男人:

cat - Concatenate FILE(s),or standard input,to standard output

假设下一个输出

$ls *.txt
file1.txt
file2.txt

… cat的输入将是:

file1.txt
file2.txt

……这正是标准输出中猫的输出

在某些shell中,它相当于:

cat <(ls *.txt)

要么

ls *.txt > tmpfile; cat tmpfile

因此,猫正在按照他们的设计师所希望的那样工作.

另一方面,你期望的是cat将其输入解释为一组文件名来读取和连接它们的内容,但是当你输入cat时,那个输入就像一个孤独的文件.

猜你在找的Bash相关文章