bash中“ <”的用法是什么

时间:2019-04-14 10:35:19

标签: bash

我无法区分这两行代码,因为每个命令的输出都是相同的

cat volcanoes.txt 
cat < volcanoes.txt

2 个答案:

答案 0 :(得分:5)

<读取一个文件(在右侧指定)并将其通过管道传递到左侧命令的STDIN中。

cat接受输入并将其输出到STDOUT。

如果您为cat提供参数,它将从那里获取输入。否则,它将从STDIN中获取。

<cat结合使用通常没有用。

答案 1 :(得分:2)

cat volcanoes.txt传递 volcanoes.txt 作为参数,cat将尝试在磁盘上找到并打开。

cat < volcanoes.txt在没有参数的情况下运行cat 解释器 将打开{em> volcanoes.txt 为{{1 }}的标准输入。

举一个更清晰的例子,尝试对多个文件进行测试:

cat

现在您可以通过比较看到差异

echo 1 > a
echo 2 > b

vs

grep . a b

在第一个中,cat a b | grep . a作为参数传递,因此b会自行打开它们并知道每一行数据的来源,因此它会告诉您每个数据文件线来自。

grep

第二种方法,$: grep . a b a:1 b:2 读取两个文件,并将内容作为单个匿名流放在cat的stdin上,与您说{{ 1}}。这样,grep仅知道数据来自stdin,而不能为您提供其他信息。

cat < volcanoes.txt

对于grep,由于$: cat a b | grep . 1 2 的作用和功能,它在功能上是相同的,但是在机械上仍然有所不同,对于某些程序,该差异可能会严重或至少是相关的。