在这一行中:
tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts
预期结果是什么?我知道小写“a”会更改为大写“A”,但接下来会发生什么?由于重定向到相同的文件名,原始文件是否会被覆盖?
答案1
预期结果是一个空白/etc/hosts
文件。
发生重定向> /etc/hosts
并且截断文件 在程序开始运行之前并tr
开始从文件中读取。
要将输出写入/etc/hosts
,您可以使用该文件的副本(或随后将输出文件移动到位),或者使用sponge
来自 moreutils 的命令,它将吸收标准输入并写入文件:
tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts
在这种情况下,中的每个“a”/etc/hosts
将是被取代使用“A”,所有行都将是根据您的区域设置反向排序,每行之间将插入一个空行,并将结果放入/etc/hosts
。
您可能还会发现有用: