2011年11月16日(水) [長年日記]
■ [shell][howto] 標準出力と標準エラーを入れ替える
- 36.16. n>&m: Swap Standard Output and Standard Error (Unix Power Tools, 3rd Edition)
に、
$ command 3>&2 2>&1 1>&3
というイディオムが紹介されていた。これでcommandの標準出力と標準エラーが入れ替わる。
動作確認。
% bash $ ls tmp/ $ ls tmp tmp2 ls: tmp2: そのようなファイルやディレクトリはありません tmp: $ ls tmp tmp2 3>&2 2>&1 1>&3 | sed 's/tmp/XXX/' tmp: ls: XXX2: そのようなファイルやディレクトリはありません
標準エラーに対してだけ置換が行われたのでOK。ちなみに、zsh 4.2.0(古い)だとうまくいかなかった。