什麼是/ dev / null,它如何為您提供幫助?

如果我們已經有了GNU / Linux目錄樹的一些概念,那麼我們至少應該熟悉/ dev / reference,這實際上是所有與之相關的文件 硬件設備.

如果我們查看目錄 / dev / 我們將看到一個名為“文件”的文件 ,但是如果我們想打開它查看其內容,系統會告訴我們這是不可能的,因為它不是普通的內容。 我將文件一詞括起來,因為眾所周知,對於Linux來說,所有內容(硬件和軟件)都表示為文件。

這是Daniel Durante的貢獻,因此成為我們每週比賽的獲勝者之一:分享您對Linux的了解«。 恭喜丹尼爾!

/ dev / null對應於什麼設備?

出於實際目的,想像一下一個垃圾桶,一個無底的坑或外太空,可以將任何東西扔進去而沒有回收的可能性(無論NASA的努力如何)。

但是,如果我已經有了rm之類的命令,為什麼還要刪除一些新內容?

因為這兩個“黑洞”的工作方式是完全不同的:您將如何在運行時覆蓋Shell腳本中命令中錯誤的標準輸出? 這是/ dev / null出現的地方。

讓我們看一個例子。

我們創建了一個名為tests的文件,其中包含字符串“ Hello World”。 如果要在命令行上表示該文件的內容,可以通過以下方式實現:

用戶@筆記本電腦:〜$貓測試
你好,世界

如果該文件不存在或被命名為測試(末尾帶有“ s”),則在控制台中將出現以下錯誤:

用戶@筆記本電腦:〜$貓測試
cat:測試:文件或目錄不存在

我們如何避免該錯誤消息? 好吧,如果發生錯誤,只需將命令的輸出重定向到“垃圾桶”,即/ dev / null

我們如何指定出現錯誤的情況? 在此處輸入程序的標準輸入,輸出和錯誤值:STDIN,STDOUT和STDERR(可以分別替換為0、1和2)。 這樣,如果我們把...

用戶@筆記本電腦:〜$貓測試2> / dev / null
用戶@筆記本電腦:〜$

…我們將看到錯誤消息不會在控制台上產生。

您必須小心,因為語法是必不可少的:字符2和>之間不應有空格。 否則,它將給出以下內容:

用戶@筆記本電腦:〜$貓測試2> / dev / null
cat:測試:文件或目錄不存在
cat:2:文件或目錄不存在

相反,>和/ dev / null之間的空格不會對結果產生負面影響。

我們還可以使用錯誤重定向,例如,如下所示在日誌文件中捕獲錯誤:

用戶@筆記本電腦:〜$貓測試2> err.log

另一個有趣的情況是,只要不發生錯誤,就將結果收集到另一個文件中,為此我們將其放置為:

用戶@筆記本電腦:〜$貓測試1> output_result 2> err.log

最後,值得將表達式«> / dev / null 2>&1»放入其中,將標準輸出和錯誤輸出組合在一起,將它們重定向,以便在任何情況下都不會獲得輸出信息。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   吉多·伊格納西奧(Guido Ignacio) 他說:

    嗯,但是缺少/ dev / null擁有的最常用的實用程序之一,它正在清空文件:$ cat / dev / null> file.log這樣,file.log文件將為空。 添加它!

    1.    愛德華多·H 他說:

      正是他在尋找的解釋。
      我支持添加它的動議=)

      您好!

  2.   巴勃羅 他說:

    您好,首先文章非常好! 第二個我想為此主題提供一些幫助 來自Cpanel的php中的cron作業 第三篇博客的祝賀!

  3.   巴勃羅 他說:

    關於dev / null的不錯的文章,我認為我之前在錯誤的地方錯誤地評論了,真是太可惜了! 我道歉

  4.   匿名 他說:

    謝謝你的貢獻

  5.   耶爾 他說:

    問候我得到了空襲。 我使用andrirc,從我的暱稱中獲得私有字詞Null。 2秒後,該程序關閉,我一直在閱讀,從我看到的結果來看,這只能由Shell完成,而不能由外部人員完成。 我試圖忽略自己/忽略-lrpcntikd,並且命令不斷出現令我驚訝。 如果您有任何嘗試阻​​止它的方法,我將不勝感激。 乾杯

  6.   索非亞·馬丁內斯 他說:

    如果在執行句子時未放置符號>,會發生什麼情況?

    有人可以指導我嗎?

  7.   他說:

    早上好,我已經在 ACER Extensa 5620Z - 32 位上安裝了 Debian netinst。一旦從 USB 安裝完成並移除 pendrive,以便它從硬盤啟動(不要從 pen 重新安裝)但在啟動的那一刻她問我的系統:
    debian 登錄:xxxxxxxx (ok)
    密碼:xxxxxxxx (ok)
    無@debian:~$ ???? 這是什麼? 我應該放什麼?

    如果沒有此命令,我將無法繼續進行系統引導。
    你能幫助我嗎? 我不知道我應該如何繼續。
    非常感謝。 親切的問候。