はじめに
標準出力と標準エラー出力を同じファイルに出力する方法について、標準的な方法である「2>&1」を使わずに簡潔に記述する方法を紹介します。 この記事では、その方法を解説します。 また、実際に検証した結果も紹介します。
検証環境
| |
実際に検証したスクリプト
次のようなスクリプトを用意しました。
| |
実行すると次のようになります。
| |
見ただけではわかりにくいですが、 “Hello World to stdout” は標準出力、 “Hello World to stderr” は標準エラー出力となっています。
“>” で標準出力をファイルに出力する方法
標準出力をファイルに出力する方法として、「>」を使う方法があります。
次のように記述します。 実行した結果、標準エラー出力のみが出力されています。
| |
作成された out.log ファイルの内容は以下のようになっています。
| |
“2>” で標準エラー出力をファイルに出力する方法
標準エラー出力をファイルに出力する方法として、「2>」を使う方法があります。
次のように記述します。 実行した結果、標準出力のみが出力されています。
| |
作成された err.log ファイルの内容は以下のようになっています。
| |
標準出力と標準エラー出力を同じファイルに出力する方法
標準出力と標準エラー出力を同じファイルに出力する方法として、「>」と「2>&1」を組み合わせる方法があります。
次のように記述します。実行した結果、ターミナル上には何も出力されません。
| |
作成された out.log ファイルの内容は以下のようになっています。
| |
このような記述をすることが多いと思います。実際、僕は今までこのケースのスクリプトばかり見ました。
[今回のエントリの本題] “2>&1” を使わずに簡潔に実現する方法
標準出力と標準エラー出力を同じファイルに出力する方法として、「&>」を使う方法があります。
次のように記述します。 実行した結果、ターミナル上には何も出力されません。
| |
実行すると次のようになります。
| |
ひとこと
> 2>&1 が記述の順序をきをつけないといけなかったりと呪文のようでわかりにくいのですが、 &> が使える環境であれば簡潔に記述できます。