シェルスクリプトの「リダイレクト」と呼ばれる機能を利用することで、コマンドの実行結果をファイルに簡単に保存できます。
これにより、スクリプトの結果を後から確認したり、ログとして利用したりすることができます。
本記事では、シェルスクリプトでの実行結果をファイルに出力する方法について解説します。
目次
標準出力のリダイレクト (>
と>>
)
シェルスクリプトの出力(標準出力)をファイルにリダイレクトすることで、コマンドの結果をファイルに保存できます。これには、「>」か「>>」演算子を使用します。
「>」演算子
「>」演算子を使うことで、指定したファイルに標準出力を上書きします。ファイルが存在しない場合は新たに作成されます。
# コマンドの標準出力をファイルに保存(上書き)
echo "Hello, World!" > output.txt
上記のコマンドは、output.txt というファイルに “Hello, World!” という文字列を書き込みます。既に output.txt が存在する場合、その内容は上書きされます。
「>>」演算子
指定したファイルに標準出力を追記します。ファイルが存在しない場合は新たに作成されます。
# コマンドの標準出力をファイルに追記
echo "Hello, again!" >> output.txt
このコマンドは、output.txt の末尾に “Hello, again!” を追加します。ファイルが存在しない場合には新たに作成されます。
標準エラー出力のリダイレクト
コマンドがエラーを出力する場合、その標準エラー出力をファイルにリダイレクトすることもできます。これには、「2>」か「 2>>」演算子を使用します。
# エラー出力をファイルに保存(上書き)
ls nonexistentfile 2> error.log
# エラー出力をファイルに追記
ls anothernonexistentfile 2>> error.log
上記のスクリプトではlsコマンドで存在しないファイルを指定した場合、エラーメッセージがerror.log ファイルに保存されます。既にerror.logが存在する場合、その内容は上書きされます。
標準出力と標準エラー出力を同時にリダイレクト
標準出力と標準エラー出力の両方を同じファイルにリダイレクトすることもできます。これには、「&>」 や「2>&1」の演算子を使用します。
「&>」演算子:Bash専用で、標準出力と標準エラー出力の両方を指定したファイルに上書きします。
# 標準出力と標準エラー出力をファイルに保存(上書き)
ls existingfile &> combined.log
このコマンドは、標準出力と標準エラー出力の両方をcombined.logに保存します。ファイルが存在する場合、その内容は上書きされます。
「2>&1」演算子: 標準エラー出力を標準出力にリダイレクトし、その標準出力をファイルに保存します。
# 標準出力と標準エラー出力を同じファイルに保存
ls existingfile > combined.log 2>&1
このコマンドも標準出力と標準エラー出力の両方をcombined.logに保存します。ファイルが存在する場合、その内容は上書きされます。
まとめ
シェルスクリプトで実行結果をファイルに出力する方法は多岐にわたります。
標準出力や標準エラー出力をファイルにリダイレクトすることで、スクリプトの結果やエラーを効率よく管理できます。
これらのテクニックを活用して、より効果的なシェルスクリプトを作成してみてください。