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

tr a < /etc/hosts | sort -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ファイルのコピーを使用するか(または後で出力ファイルをその場所に移動する)、次を使用できます。spongemoreutilsのコマンド、標準入力を受け取り、ファイルに書き込みます。

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

この場合、各「a」は次のようになり/etc/hostsます。交換済み「A」を使用すると、すべての行がロケールに基づいて逆順にソート各行の間に空行が挿入されます。、結果をに入れます/etc/hosts


次の点も役に立ちます。

関連情報