ファイルがありますが、authorized_keys
重複したコンテンツを削除したいと思います。つまり、重複したアイテムを削除したいのです。
これを達成するための2つの可能な解決策を見つけました。
- 以下を使用して、
cat
出力uniq
をソースファイルにリダイレクトします。cat authorized_keys | uniq > authorized_keys
sort
オプションで使用-o
:sort -u ~/.ssh/authorized_keys -o ~/.ssh/authorized_keys
ただし、2番目のオプションのみが機能します。最初の方法は空のファイルを生成します。
出力を次のような別のファイルにリダイレクトする場合
cat authorized_keys | uniq > authorized_keys_2
新しいファイルには正しい内容がありますが、
cat authorized_keys | uniq > authorized_keys
私に空白を残してくださいauthorized_keys
。
これら2つの方法の違いを理解するのに役立ちます。
ベストアンサー1
ファイルを同時に読み書きするため、最初の解決策は機能しません。これにより、リダイレクト(つまり、「>」記号)がシェルで処理され、シェルに最初に書き込むためにファイルを開いて空にするように指示するため、空のファイルが生成されます。その後、コマンドは次のようになります。
cat authorized_keys | uniq
実行されますが、authorized_keys
ファイルは空であるため、空の出力が発生します。このような問題を回避するには、authorized_keys_2
入力の保存に使用したものと同じ一時ファイルを使用し、元のファイルを一時ファイルで上書きできます。