【RHEL】「 2>/dev/null」の意味について理解しよう

RHEL

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」の正体、ちょっとわかってきましたか?
理解できればなんてことないと思いますし、便利なので、これを機に覚えちゃいましょう。

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

RHEL
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。

得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。

このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。

StarTellerをフォローする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました