/ dev / nullとは何ですか?それはどのように役立ちますか?

GNU / Linuxディレクトリツリーの概念がすでにある場合は、少なくとも/ dev /参照に精通している必要があります。これは、事実上、関連するすべてのファイルが存在する場所です。 ハードウェアデバイス.

ディレクトリを見ると / dev / と呼ばれる「ファイル」が表示されます ヌル、しかし、コンテンツを表示するためにそれを開きたい場合、それは通常のコンテンツではないため、システムはそれが不可能であると通知します。 Linuxの場合、すべて(ハードウェアとソフトウェア)がファイルとして表されるため、ファイルという単語を同封しました。

これはDanielDuranteからの寄稿であり、毎週のコンテストの勝者のXNUMX人になりました。«Linuxについて知っていることを共有する«。 ダニエルおめでとう!

/ dev / nullはどのデバイスに対応していますか?

実用的な目的のために、ゴミ箱、底なしの穴、またはそれを回収する可能性なしに何かを投げ入れる宇宙空間を想像してください(NASAの人がどんなに頑張っても)。

しかし、すでにrmのようなコマンドがある場合、なぜ新しいものを削除したいのですか?

両方の「ブラックホール」の動作方法が完全に異なるため、実行時にシェルスクリプト内のコマンドのエラーの標準出力をオーバーライドするにはどうすればよいでしょうか。 これが/ dev / nullの出番です。

例を挙げて見てみましょう。

文字列「HelloWorld」を含むtestsというファイルを作成しました。 そのファイルの内容をコマンドラインで表現したい場合は、次の方法で行うことができます。

ユーザー@ラップトップ:〜$猫のテスト
こんにちは世界

ファイルが存在しないか、テストとして名前が付けられている場合(末尾に「s」が付いている場合)、コンソールで次のエラーが発生します。

ユーザー@ラップトップ:〜$猫のテスト
cat:テスト:ファイルまたはディレクトリが存在しません

エラーメッセージを回避するにはどうすればよいですか? エラーが発生した場合は、コマンドの出力を「ゴミ箱」、つまり/ dev / nullにリダイレクトするだけです。

エラーが発生した場合にどのように指定しますか? ここでは、プログラムの標準入力、出力、およびエラー値を入力します:STDIN、STDOUT、およびSTDERR(それぞれ、0、1、および2の代わりに使用できます)。 このように入れれば...

ユーザー@ラップトップ:〜$ catテスト2> / dev / null
ユーザー@ラップトップ:〜$

…コンソールにエラーメッセージが表示されないことがわかります。

構文が不可欠であるため、注意する必要があります。文字2と>の間にはスペースを入れないでください。 それ以外の場合は、次のようになります。

ユーザー@ラップトップ:〜$ catテスト2> / dev / null
cat:テスト:ファイルまたはディレクトリが存在しません
cat:2:ファイルまたはディレクトリが存在しません

対照的に、>と/ dev / nullの間のスペースは、結果に悪影響を与えません。

たとえば、エラーリダイレクトを使用して、次のようにログファイルにエラーをキャプチャすることもできます。

ユーザー@ラップトップ:〜$ catテスト2> err.log

もうXNUMXつの興味深いケースは、エラーが発生しない限り、別のファイルに結果を収集することです。

ユーザー@ラップトップ:〜$ cat test 1> output_result 2> err.log

最後に、標準出力とエラー出力を組み合わせた式 "> / dev / null 2>&1"を入力し、出力情報が取得されないようにリダイレクトする必要があります。


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

7コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   グイド・イグナシオ・イグナシオ

    ああ、でも/ dev / nullにある最もよく使われるユーティリティのXNUMXつがありません。それは、ファイルを空にすることです。$ cat / dev / null> file.logこのようにして、file.logファイルは空になります。 追加してください!

    1.    エドゥアルドH

      それはまさに彼が探していた説明でした。
      私はそれを追加する動きをサポートします=)

      Saludos!

  2.   パブロ

    こんにちは、まず第一に記事はとても良いです! XNUMX番目に私は主題に関するこのリンクで何かを貢献したいと思います Cpanelからのphpでのcronジョブ そしてブログのXNUMX番目のおめでとうございます!

  3.   パブロ

    dev / nullに関する素晴らしい記事です。以前、間違った場所に誤ってコメントしたのは残念です。 謝罪します

  4.   匿名の

    良い貢献に感謝

  5.   ジャーズ

    あいさつ私はヌル攻撃を受けています。 私はandrircを使用しており、ニックネームからNullという単語でプライベートを取得しています。 2秒後、プログラムが終了します。私が読んでいたことから、これはシェルによってのみ実行でき、外部の誰かによっては実行できません。 私は自分自身を無視しようとしました/ -lrpcntikdを無視しました、そして何も私にコマンドが来続けるのを驚かせません。 あなたがそれをブロックしようとする方法があれば、私はそれをいただければ幸いです。 乾杯

  6.   ソフィア・マルティネス

    文を実行するときに記号>が配置されていない場合はどうなりますか?

    誰かが私を案内してくれませんか?