シェルの出力をリダイレクトする方法のメモ。
標準出力
標準出力とは、コマンドの実行結果のデフォルトの表示先である。標準出力は通常、端末(コンソール)である。
たとえば、echo
コマンドを実行すると、標準出力にHello, World!
という文字列が表示される。
$ echo "Hello, World!"
Hello, World!
標準出力のリダイレクト
シェルの標準出力をリダイレクトするには、次のように>
演算子を使う。
echo "Hello, World!" > hello.txt
上記のコマンドを実行すると、hello.txt
というファイルが作成され、その中にHello, World!
という文字列が書き込まれる。
この>
は、標準出力をリダイレクトする演算子である。>
の右側に指定されたファイルへ出力が書き込まれる。
標準エラー出力
標準エラー出力とは、コマンド実行時のエラーメッセージの、デフォルトの表示先である。標準エラー出力は通常、端末(コンソール)である。
たとえば、存在しないファイルをcat
コマンドで表示しようとすると、標準エラー出力にエラーメッセージが表示される。
$ cat not_exist.txt
cat: not_exist.txt: No such file or directory
標準エラー出力のリダイレクト
シェルの標準エラー出力をリダイレクトするには、次のように2>
演算子を使う。
cat not_exist.txt 2> error.txt
上記のコマンドを実行すると、error.txt
というファイルが作成され、その中にエラーメッセージが書き込まれる。
この2>
は、標準エラー出力をリダイレクトする演算子である。2>
の右側に指定されたファイルへエラー出力が書き込まれる。
標準出力と標準エラー出力を同時にリダイレクト
標準出力と標準エラー出力を同時にリダイレクトするには、次のように2>&1
を使う。
cat not_exist.txt > output.txt 2>&1
上記のコマンドを実行すると、output.txt
というファイルが作成され、そこに出力とエラーメッセージが両方書き込まれる。
この2>&1
は、標準エラー出力を標準出力にリダイレクトする演算子である。2>&1
と書くことで、標準エラー出力が標準出力と同じファイルに書き込まれる。
標準入力
標準入力とは、コマンドの実行時に入力されるデータのデフォルトの取得先である。標準入力は通常、端末(キーボード)である。
たとえば、cat
コマンドを実行すると、標準入力から入力されたデータが表示される。
$ cat
Hello, World!
Hello, World!
上記のコマンドを実行すると、Hello, World!
という文字列を入力すると、その文字列が表示される。
標準入力のリダイレクト
シェルの標準入力をリダイレクトするには、次のように<
演算子を使う。
cat < input.txt
上記のコマンドを実行すると、input.txt
というファイルからデータを読み込み、それをcat
コマンドに渡す。
この<
は、標準入力をリダイレクトする演算子である。<
の右側に指定されたファイルからデータを読み込み、それを標準入力としてコマンドに渡す。
パイプ
パイプとは、コマンドの出力を別のコマンドの入力として渡す機能である。パイプは|
演算子を使って表現される。
たとえば、ls
コマンドの出力をgrep
コマンドに渡して、特定のファイルだけを表示する。
$ ls | grep .txt
hello.txt
input.txt
output.txt
上記のコマンドを実行すると、ls
コマンドの出力がgrep
コマンドに渡され、.txt
という文字列を含むファイルだけが表示される。
まとめ
- 標準出力をリダイレクトするには、
>
演算子を使う。 - 標準エラー出力をリダイレクトするには、
2>
演算子を使う。 - 標準出力と標準エラー出力を同時にリダイレクトするには、
2>&1
を使う。 - 標準入力をリダイレクトするには、
<
演算子を使う。 - パイプを使って、コマンドの出力を別のコマンドの入力として渡せる。