![内容を削除せずにコマンド出力を既存のファイルにリダイレクトするにはどうすればよいですか? [コピー]](https://linux33.com/image/75451/%E5%86%85%E5%AE%B9%E3%82%92%E5%89%8A%E9%99%A4%E3%81%9B%E3%81%9A%E3%81%AB%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%87%BA%E5%8A%9B%E3%82%92%E6%97%A2%E5%AD%98%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
checksums.txt
後でデータの整合性を確認するために、一部のファイルをバックアップしてチェックサムファイルを作成しています。ただし、バックアップは何百ものファイルで構成されているため、各チェックサムをファイルに手動で貼り付けるのは不便です。そこで、お問い合わせの後、出力をチェックサムファイルの提案にリダイレクトしてプロセスを簡素化するアイデアを得ました。
$ md5sum file > checksums.txt
または
$ sha512sum file > checksums.txt
しかし、これを行うと変えるファイルの内容checksums.txt
とこの場合、ファイルのチェックサムをfile
代わりに使用したいと思います。追加file
checksums.txt
内容を削除せずにtoのチェックサムです。だから私の質問は次のようになりますどうすればいいですか?
そしてもう一つ。私はデフォルトのユーザーなので、(可能な場合のみ)フォローしやすい提案をしてください。
答え1
ファイルに追加するには>>
。
だからあなたの例は
$ md5sum file >> checksums.txt
そして
$ sha512sum file >> checksums.txt
答え2
演算子の横に>>
追加モードでファイルを開きます。@Thomasが答えたように別のオプションは、演算子を使用してファイルを>
一度だけ開き、両方のコマンドに対して開いたままにすることです。
exec 3> checksums.txt
ファイル記述子3でファイルを開いて切り取ります。それから:
md5sum file1 >&3
file1のmd5sumをここに書き込みます。
md5sum file2 >&3
(同じシェルで実行している場合)file2 md5sumが追加されます。
その後、次のことができます。
exec 3>&-
ファイル記述子を閉じます。>
stdout全体(ファイル記述子1、演算子のデフォルト値)をリダイレクトして同じことを実行することもできます。コマンドグループ:
{ md5sum file1; md5sum file2; } > checksums.txt
または使用サブシェル変えるコマンドグループ:
(md5sum file1; md5sum file2) > checksums.txt