![Shell 重定向 - 遵循名称,而不是描述符](https://linux22.com/image/151560/Shell%20%E9%87%8D%E5%AE%9A%E5%90%91%20-%20%E9%81%B5%E5%BE%AA%E5%90%8D%E7%A7%B0%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%8F%8F%E8%BF%B0%E7%AC%A6.png)
我有一个在后台运行的 shell 脚本,它唯一做的就是运行 1 个命令,其中的 STDOUT 被附加到一个文件中。
my_blocking_command >> my_file
我想阻止行数增长太多,所以我运行:
[ "$(cat my_file)" -ge 30 ] && tail -n20 my_file | sponge my_file
当文件被覆盖时,问题就会出现 - 文件描述符不再指向当前文件my_file
-my_blocking_command
写入的文件描述符不指向我想要的文件。
我如何确保命令输出的所有内容始终重定向到my_file
,即使它被覆盖? (跟随名称,而不是文件描述符,例如tail --follow=name
)
或者也许有更好的方法来做到这一点?