重定向更新主机文件的头输出

重定向更新主机文件的头输出

可能的重复:
如何使 iconv 用转换后的输出替换输入文件?

我正在编写一个脚本来更改文件的内容hosts,但我陷入了head输出重定向。

如果我这样做,head -n -1 hosts >hosts我的hosts文件将结果为空,是的,它有超过 1 行。

答案1

这是因为当您重定向到该文件时,您的 shell 会截断该文件。这发生在 head 有机会阅读之前。

您可以使用临时文件:

head -n1 hosts > hosts.tmp && mv hosts.tmp hosts

或者使用spongemoreutils 包:

head -n1 hosts | sponge hosts

相关内容