当我在 CLI 上输入以下提示时实际会发生什么:cat demo.txt >> cat example.txt?

当我在 CLI 上输入以下提示时实际会发生什么:cat demo.txt >> cat example.txt?

假设我们有一个仅包含单词“demo”的文本文件 demo.txt 和一个仅包含单词“sample”的文本文件sample.txt。

据我所知,这cat demo.txt >> sample.txt会将 demo.txt 的内容附加到sample.txt 的内容中。

但是当我在重定向符号的两侧都有 cat 命令时会发生什么?我已经尝试过使用单重定向和双重定向进行相同的操作。我已经研究了足够多的内容,知道如果您不希望某些内容被覆盖,您确实希望使用双重定向而不是单重定向。我还知道 cat 命令是连接的缩写(令我惊讶的是“cat”命令可以兼作 txt 打印“函数”)。

cat demo.txt >> cat sample.txt我不明白它是如何工作的,我认为应该产生结果是什么?

答案1

首先处理重定向,并将其与命令及其参数分开处理。重定向在单个命令中的位置是任意的。

您显示的命令,

cat demo.txt >> cat sample.txt

相当于

cat demo.txt sample.txt >> cat

或者,如果你愿意的话,

>> cat cat demo.txt sample.txt

该命令作为一个整体,将两个文件的串联附加demo.txtsample.txt一个名为cat.

shell 将首先打开cat(您重定向到的文件)进行追加,如果尚不存在则创建它,然后将其用作命令的标准输出流cat demo.txt sample.txt

有关的:


我倾向于紧密地编写重定向,重定向运算符和(在本例中)文件之间没有空格。我也倾向于在最后写重定向。

cat demo.txt sample.txt >>cat

有些人喜欢在命令开头编写输入重定向,例如

<file.in cat >file.out

但我个人并不使用它,因为它对我来说看起来很奇怪。

相关内容