bashスクリプトやコマンドなどで、
「2>/dev/null」
という記載をみて、「え?何これ?」って思った人も多いはず。今日は、この意味について書いていこうと思います。
まずはLinuxのストリームを理解しよう
「2>/dev/null」を理解する前に、先ずは、ストリームについて説明します。
Linuxの世界では、データの流れを「ストリーム」と呼んでいます。主に3つのストリームがあるんです:
1. 標準入力(stdin):コンピュータにデータを入れるストリーム
2. 標準出力(stdout):コンピュータが「はい、できました!」と教えてくれるストリーム
3. 標準エラー出力(stderr):コンピュータが「あれ?何かおかしいぞ」と教えてくれるストリーム
「2>/dev/null」って何をしてるの?
さて、本題の「2>/dev/null」ですが、これは「エラーメッセージを黙らせる魔法の呪文」みたいなものなんです。
– 2> :「エラーメッセージ(標準エラー出力)をこっちに向けてね」という指示
– /dev/null :コンピュータの中にある、何でも受け入れて消してくれる特別なゴミ箱
つまり、「2>/dev/null」は「エラーメッセージを全部ゴミ箱に捨てちゃって!」という意味なんです。
実際に使ってみよう!
例えば、存在しないファイルを探そうとするとこんな感じになります:
$ ls 存在しないファイル
ls: 存在しないファイル: そのようなファイルやディレクトリはありません
でも、「2>/dev/null」を使うと…
$ ls 存在しないファイル 2>/dev/null
$
子の通り、エラーメッセージが消えちゃいました。
いつ使うのか?
「エラーメッセージを消すなんて、良くないんじゃない?」って思った人、鋭いですね!
確かに、エラーメッセージは大事な情報です。でも、時と場合によっては邪魔になることも。
例えば:
1. たくさんのファイルを検索していて、「見つからない」メッセージがうるさい時
2. スクリプトの中で、エラーは気にせず進めたい処理がある時
3. システムの定期チェックで、問題がない時は何も表示したくない時
こんな時に「2>/dev/null」を使います。
もっと便利な使い方
「エラーメッセージを消すだけじゃなくて、ファイルに保存したいな」
そんな時は、こんな風に書けます:
$ ls 存在しないファイル > 通常の出力.txt 2> エラー.txt
これで、通常の出力とエラーメッセージを別々のファイルに保存できちゃいます。便利でしょ?
まとめ
・Linuxにはストリームという入力と出力の概念がある
・2は標準エラー出力
・2>/dev/nullで標準エラー出力をゴミ箱に捨てる事で出力させない事が出来る
いかがでしたか?「2>/dev/null」の正体、ちょっとわかってきましたか?
理解できればなんてことないと思いますし、便利なので、これを機に覚えちゃいましょう。
コメント