この行では:
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
。
次の点も役に立ちます。