リダイレクトの使い方

標準出力をファイルに出力する。

$ echo "hello" > hello.txt

標準エラー出力を標準出力に合流する。(ファイルディスクリプタが複製される。)

$ type hoge 2>&1

標準出力と標準エラー出力をまとめて捨てる。

$ type hoge > /dev/null 2>&1

標準出力をログファイルに出力し、標準エラーを標準出力に出力する。

$ type hoge 2>&1 > log.txt
$ type read 2>&1 > log.txt

エラー出力を標準出力とログファイルに出力し、元の標準出力は捨てる。

$ type hoge 2> >( tee -a log.txt ) > /dev/null
$ type read 2> >( tee -a log.txt ) > /dev/null

参考:

Bash の入出力リダイレクトまとめ – Qiita

標準出力、標準エラー出力をファイル、画面それぞれに出力する方法 – Qiita

bash のリダイレクトの話 – Qiita

シェルの入出力制御あれこれ – Qiita

リダイレクションの「>」「 >>」とパイプ「 | 」の違い。- Qiita

リダイレクト | UNIX/Linux の部屋

覚えてると案外便利な Bash のリダイレクト・パイプの使い方9個 | 俺的備忘録 (orebibou.com)

5分で一通り理解できる!Linuxのリダイレクト 使い方と種類まとめ | エンジニアの入り口

実用的なシェルスクリプト | 柳川研究室

一括リダイレクト

参考:

bash で標準出力と標準エラー出力の一括リダイレクト – Qiita

標準出力も標準エラーもログに出力 – Qiita

2>&1 はどういう意味? | teratail

接続の順序

参考:

bash のリダイレクトとパイプとファイルディスクリプタ | うしねずみの技術メモ

通常はあまり使わないリダイレクト

  • >|set -C が指定されていても既存のファイルに上書きをする。
  • <>:読み書き可能なファイルディスクリプタをオープンする。

参考:

あなたの知らない >| と <> の使い方 | @IT

stdout / stderr

リダイレクト先として /dev/* を使用することができる。

  • /dev/stdout:標準出力
  • /dev/stderr:標準エラー出力

su コマンドで実行ユーザーを切り替えるとパーミッションエラーになる。

参考:

シェルスクリプト内で /dev/stderr にリダイレクトしてはいけない – Qiita

/dev/stderr (/dev/std{in,out}も) は使うべきではない – Qiita

bash redirect to /dev/stdout: Not a directory – Stack Overflow

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です