tr a < /etc/hosts | sort -r |pr -d > /etc/hosts

tdh*_*son 9 shell io-redirection tr

在这一行:

tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts 
Run Code Online (Sandbox Code Playgroud)

预期的结果是什么?我知道小写的 'a' 会变成大写的 'A' 但接下来是什么?由于重定向到相同的文件名,原始文件会被覆盖吗?

Mic*_*mer 17

预期的结果是一个空白/etc/hosts文件。

重定向> /etc/hosts发生并在程序开始运行并开始读取文件 之前截断tr文件。

要将输出写入/etc/hosts,您可以使用文件的副本(或之后将输出文件移动到位),或使用sponge来自 moreutils命令,命令将吸收标准输入并写入文件:

tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts
Run Code Online (Sandbox Code Playgroud)

在这种情况下,每个“A”在/etc/hosts将被替换为“A”,所有的线将被以相反的具体的语言环境来分类一个空行将每行之间插入,且结果将被放入/etc/hosts


您可能还会发现有用的: