すべてのbashスクリプト出力(スクリプト内)を2つのファイルにリダイレクトします。 1つは追加用で、もう1つは書き換えますが、コンソール出力は削除します。

すべてのbashスクリプト出力(スクリプト内)を2つのファイルにリダイレクトします。 1つは追加用で、もう1つは書き換えますが、コンソール出力は削除します。

単純な文を使用して、bashスクリプトの標準出力とエラー出力をファイルに簡単にリダイレクトし、exec出力をコンソールに削除できます。

exec &>>/var/log/backup.log

しかし、どのようにexec2つのファイルに書き、最初のファイルに追加し、2番目のファイルを上書きしますか?たぶんtee魔法を使う必要があるかもしれません。コンソールを無音にする方法も見つける必要があります。

その理由は私のバックアップスクリプトによるものです。最新のバックアップからのイベントをプライマリログに追加し、これらのイベントを各バックアップセッションごとに再作成する必要がある現在のバックアップログにのみ記録したい(前の内容を消去)。

ベストアンサー1

可能で、プロセスの交換が必要です。tee残りを呼び出して上書きされたファイルにリダイレクトするサブプロセスにストリームをリダイレクトします。

exec &> >(tee -a backup.log > overwritten.log)

スクリプトが終了するか、別のリダイレクトが設定されるまでストリームが開いているため、スクリプト全体でファイルが一度だけ上書きされます。

おすすめ記事