シェルの出力をリダイレクトする方法

シェルの出力をリダイレクトする方法のメモ。

標準出力 Link to this heading

標準出力とは、コマンドの実行結果のデフォルトの表示先である。標準出力は通常、端末(コンソール)である。

たとえば、echoコマンドを実行すると、標準出力にHello, World!という文字列が表示される。

$ echo "Hello, World!"
Hello, World!

標準出力のリダイレクト Link to this heading

シェルの標準出力をリダイレクトするには、次のように>演算子を使う。

echo "Hello, World!" > hello.txt

上記のコマンドを実行すると、hello.txtというファイルが作成され、その中にHello, World!という文字列が書き込まれる。

この>は、標準出力をリダイレクトする演算子である。>の右側に指定されたファイルへ出力が書き込まれる。

標準エラー出力 Link to this heading

標準エラー出力とは、コマンド実行時のエラーメッセージの、デフォルトの表示先である。標準エラー出力は通常、端末(コンソール)である。

たとえば、存在しないファイルをcatコマンドで表示しようとすると、標準エラー出力にエラーメッセージが表示される。

$ cat not_exist.txt
cat: not_exist.txt: No such file or directory

標準エラー出力のリダイレクト Link to this heading

シェルの標準エラー出力をリダイレクトするには、次のように2>演算子を使う。

cat not_exist.txt 2> error.txt

上記のコマンドを実行すると、error.txtというファイルが作成され、その中にエラーメッセージが書き込まれる。

この2>は、標準エラー出力をリダイレクトする演算子である。2>の右側に指定されたファイルへエラー出力が書き込まれる。

標準出力と標準エラー出力を同時にリダイレクト Link to this heading

標準出力と標準エラー出力を同時にリダイレクトするには、次のように2>&1を使う。

cat not_exist.txt > output.txt 2>&1

上記のコマンドを実行すると、output.txtというファイルが作成され、そこに出力とエラーメッセージが両方書き込まれる。

この2>&1は、標準エラー出力を標準出力にリダイレクトする演算子である。2>&1と書くことで、標準エラー出力が標準出力と同じファイルに書き込まれる。

標準入力 Link to this heading

標準入力とは、コマンドの実行時に入力されるデータのデフォルトの取得先である。標準入力は通常、端末(キーボード)である。

たとえば、catコマンドを実行すると、標準入力から入力されたデータが表示される。

$ cat
Hello, World!
Hello, World!

上記のコマンドを実行すると、Hello, World!という文字列を入力すると、その文字列が表示される。

標準入力のリダイレクト Link to this heading

シェルの標準入力をリダイレクトするには、次のように<演算子を使う。

cat < input.txt

上記のコマンドを実行すると、input.txtというファイルからデータを読み込み、それをcatコマンドに渡す。

この<は、標準入力をリダイレクトする演算子である。<の右側に指定されたファイルからデータを読み込み、それを標準入力としてコマンドに渡す。

パイプ Link to this heading

パイプとは、コマンドの出力を別のコマンドの入力として渡す機能である。パイプは|演算子を使って表現される。

たとえば、lsコマンドの出力をgrepコマンドに渡して、特定のファイルだけを表示する。

$ ls | grep .txt
hello.txt
input.txt
output.txt

上記のコマンドを実行すると、lsコマンドの出力がgrepコマンドに渡され、.txtという文字列を含むファイルだけが表示される。

まとめ Link to this heading

  • 標準出力をリダイレクトするには、>演算子を使う。
  • 標準エラー出力をリダイレクトするには、2>演算子を使う。
  • 標準出力と標準エラー出力を同時にリダイレクトするには、2>&1を使う。
  • 標準入力をリダイレクトするには、<演算子を使う。
  • パイプを使って、コマンドの出力を別のコマンドの入力として渡せる。

参考文献・URL Link to this heading

Licensed under CC BY-NC-SA 4.0
最終更新 6月 10, 2024
Hugo で構築されています。
テーマ StackJimmy によって設計されています。