unix shell cat a>>一个不起作用

时间:2014-09-04 03:20:08

标签: bash shell unix cat

我想在终端上复制两次文件的内容,
但我不会生成相同的文件,
所以我输入cat a >> a,这个工作不会停止,
我杀了工作并打开文件a,发现文件的内容有很多行...
我知道cat a > b ; cat a >> b是工作,
但我想知道为什么这段代码(cat a >> a)不起作用? 请告诉我如果有人知道我的问题会发生什么。

感谢。

3 个答案:

答案 0 :(得分:3)

cat a >> a无效,因为您已为read和append打开了文件a。您继续读取要添加更多数据的文件,永远不会到达文件末尾。

答案 1 :(得分:1)

虽然cat正在从文件开头读取行,但这些行已经被>> a附加到文件的末尾。

cat到达文件的前一端时,它不再是结束了。已添加新行,cat继续读取这些行。这些行也将被>> a追加,然后由cat读取并再次附加并再次读取,依此类推,直到您中止该过程或磁盘空间不足为止。

答案 2 :(得分:0)

这是做你想做的正确方法:

echo "$(cat a)" >>a

因为cat同时读写(所以你可以cat非常大的文件)我们需要在将输出附加到“a”文件之前捕获输出...