リダイレクト
ドキュメント:
Redirections | Bash Reference Manual
使い方
標準出力をファイルに出力する。
$ 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個 | 俺的備忘録
5分で一通り理解できる! Linux のリダイレクト 使い方と種類まとめ | エンジニアの入り口
リダイレクトについての色々 | server-memo.net
一括リダイレクト
参考:
Bash で標準出力と標準エラー出力の一括リダイレクト – Qiita
分岐 (tee)
参考:
tee – Redirect Output to Multiple Files or Processes | GNU Coreutils
How to redirect output to a file and stdout – Stack Overflow
How to duplicate STDOUT? – Unix & Linux Stack Exchange
接続の順序
参考:
Bash のリダイレクトとパイプとファイルディスクリプタ | うしねずみの技術メモ
リダイレクトによる上書きを禁止する
参考:
シェルスクリプトでリダイレクトによる上書き防止 – Qiita
通常はあまり使わないリダイレクト
>|
:set -C
が指定されていても既存のファイルに上書きをする。<>
:読み書き可能なファイルディスクリプタをオープンする。
参考:
stdout / stderr
リダイレクト先として /dev/*
を使用することができる。
/dev/stdout
:標準出力/dev/stderr
:標準エラー出力
※ su
コマンドで実行ユーザーを切り替えるとパーミッションエラーになる。
参考:
シェルスクリプト内で /dev/stderr にリダイレクトしてはいけない – Qiita
/dev/stderr (/dev/std{in,out}も) は使うべきではない – Qiita
redirect to /dev/stdout: Not a directory – Stack Overflow
ファイルの内容を逆順に出力する
cat
を逆順に行うtac
コマンドを使用する。
使用例
テキストファイルの内容を最終行から逆順に出力する。
$ tac input.txt
参考:
tac コマンド – シェルスクリプトでファイルや標準出力を最終行から逆順に出力する | ゲンゾウ用ポストイット
tac コマンド – ファイルの内容を逆順で表示 | Linuxコマンド.NET