概要
楽しい Python のお時間です。いや、つーか今回は Linux コマンドの話です。
python -V がリダイレクトで捕まんねえ
フフフーン。フフーフーフーン。今日も鼻歌まじりに覚えたての Linux コマンドで遊ぶ緑さんである。
$ python -V > /tmp/foo
Python 2.7.18
フフfーハァッ?!
$ cat /tmp/foo
# 何も出ない
ハアアッ?! python -V
がファイルに入っていかねェぞッッ?!
なんでかっちゅーと >
というのは標準出力のリダイレクトで、 python -V
は標準エラー出力だからですね。知らなかった……。今回は、これまで100回以上打ってきた python -V
の新たな一面が見れてハシャいで、標準エラー出力をリダイレクトする話だ。
標準エラー出力をリダイレクトで捕まえる
- いつもやっている
>
は1>
の略だったみたい。 1
は標準出力のこと。つまり1>
は “標準出力をリダイレクト” の意味。2
が標準エラー出力のこと。つまり2>
は “標準エラー出力をリダイレクト” の意味になる。
# 標準出力をリダイレクト。
$ python -V 1> /tmp/foo
Python 2.7.18 # 捕まんねえ!
# 標準エラー出力をリダイレクト。
$ python -V 2> /tmp/foo
# 捕まえた!!
# どっちもリダイレクト (追記モード)。
$ python -V 1>> /tmp/foo 2>> /tmp/foo
# これ↑を短縮してみる。
$ python -V &>> /tmp/foo
オッケー!