如果我們已經有了GNU / Linux目錄樹的一些概念,那麼我們至少應該熟悉/ dev / reference,這實際上是所有與之相關的文件 硬件設備.
如果我們查看目錄 / dev / 我們將看到一個名為“文件”的文件 空,但是如果我們想打開它查看其內容,系統會告訴我們這是不可能的,因為它不是普通的內容。 我將文件一詞括起來,因為眾所周知,對於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»放入其中,將標準輸出和錯誤輸出組合在一起,將它們重定向,以便在任何情況下都不會獲得輸出信息。
嗯,但是缺少/ dev / null擁有的最常用的實用程序之一,它正在清空文件:$ cat / dev / null> file.log這樣,file.log文件將為空。 添加它!
正是他在尋找的解釋。
我支持添加它的動議=)
您好!
您好,首先文章非常好! 第二個我想為此主題提供一些幫助 來自Cpanel的php中的cron作業 第三篇博客的祝賀!
關於dev / null的不錯的文章,我認為我之前在錯誤的地方錯誤地評論了,真是太可惜了! 我道歉
謝謝你的貢獻
問候我得到了空襲。 我使用andrirc,從我的暱稱中獲得私有字詞Null。 2秒後,該程序關閉,我一直在閱讀,從我看到的結果來看,這只能由Shell完成,而不能由外部人員完成。 我試圖忽略自己/忽略-lrpcntikd,並且命令不斷出現令我驚訝。 如果您有任何嘗試阻止它的方法,我將不勝感激。 乾杯
如果在執行句子時未放置符號>,會發生什麼情況?
有人可以指導我嗎?
早上好,我已經在 ACER Extensa 5620Z - 32 位上安裝了 Debian netinst。一旦從 USB 安裝完成並移除 pendrive,以便它從硬盤啟動(不要從 pen 重新安裝)但在啟動的那一刻她問我的系統:
debian 登錄:xxxxxxxx (ok)
密碼:xxxxxxxx (ok)
無@debian:~$ ???? 這是什麼? 我應該放什麼?
如果沒有此命令,我將無法繼續進行系統引導。
你能幫助我嗎? 我不知道我應該如何繼續。
非常感謝。 親切的問候。