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