リダイレクトの使い方
標準出力をファイルに出力する。
$ 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
参考:
標準出力、標準エラー出力をファイル、画面それぞれに出力する方法 – Qiita
リダイレクションの「>」「 >>」とパイプ「 | 」の違い。- Qiita
覚えてると案外便利な Bash のリダイレクト・パイプの使い方9個 | 俺的備忘録 (orebibou.com)
5分で一通り理解できる!Linuxのリダイレクト 使い方と種類まとめ | エンジニアの入り口
一括リダイレクト
参考:
bash で標準出力と標準エラー出力の一括リダイレクト – Qiita
接続の順序
参考:
bash のリダイレクトとパイプとファイルディスクリプタ | うしねずみの技術メモ
リダイレクトによる上書きを禁止する
参考:
シェルスクリプトでリダイレクトによる上書き防止 – Qiita
通常はあまり使わないリダイレクト
>|
:set -C
が指定されていても既存のファイルに上書きをする。<>
:読み書き可能なファイルディスクリプタをオープンする。
参考:
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