teeコマンドを使用して失敗したコマンドのエラーとメッセージをキャプチャする方法

teeコマンドを使用して失敗したコマンドのエラーとメッセージをキャプチャする方法

エラーをキャプチャしてカスタムメッセージとともにログファイルに記録したいと思います。

次のコマンドを検討してください。

$(find $val -type f -delete) || echo "error in deleting files" |tee -a log.txt

このコマンドは、log.txt ファイルに次の行を書き込みます。

error in deleting files

しかし、ログファイルが次のように見えるように、カスタムメッセージとともにfindコマンドのエラーをログファイルに出力したいと思います。

find: `/home/temp': No such file or directory
error in deleting files

ベストアンサー1

そこで演算子の優先順位を変更し、find || echoコマンドをパイプにリダイレクトされる複合コマンドにグループ化する必要がありますtee

{ $(find $val -type f -delete) || echo "error in deleting files"; } 2>&1 |tee -a log.txt

または:

($(find $val -type f -delete) || echo "error in deleting files") 2>&1 |tee -a log.txt

リダイレクトはエラーメッセージをから読んでいるパイプにリダイレクトする2>&1ために使用されますが、出力はすでにそのパイプに自然に入っています。findteeecho

おすすめ記事