我懂了
<command> >> <filepath>
将命令行附加到文件
和
<command> > <filepath>
用给定的命令替换文件的全部内容。
如何将命令传递给文件,以便只有最后一行的文件是否被覆盖?
答案1
这与简单的覆盖和附加不同,不是内置在 shell 中的。您必须分两步进行,首先删除最后一行,然后附加:
X=$(head -n -1 filepath)
echo "$X" > filepath
command >> filepath
或者您可以一次性用新内容覆盖:
X=$(head -n -1 test)
(echo "$X"; command) > test
请注意,在这两种情况下,我们首先将要保留在变量中的旧行作为单独的命令捕获。这是因为一旦带有“>”指令的命令开始执行,shell 就会清除文件,任何读取这些行的尝试都将为时已晚。