tr a A < /etc/hosts |排序-r |pr -d > /etc/hosts

tr a A < /etc/hosts |排序-r |pr -d > /etc/hosts

在这一行中:

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


您可能还会发现有用:

相关内容