我想在我的shell腳本中運行一些命令,但想知道一些方法,它什麼都不返回。如何抑制命令的輸出?
例如:
#!/bin/bash]
rm/home/user
return: rm: can not lstat `/ home/user ': No such file or directory
我將不得不把無形地運行不歸路的命令!
我想在我的shell腳本中運行一些命令,但想知道一些方法,它什麼都不返回。如何抑制命令的輸出?
例如:
#!/bin/bash]
rm/home/user
return: rm: can not lstat `/ home/user ': No such file or directory
我將不得不把無形地運行不歸路的命令!
您的直接錯誤來自路徑中不正確的間距,應該是rm /home/whatever
路徑中沒有空格,假設您在dir名稱中沒有實際空格(在這種情況下,您將需要引用或正確轉義)
關於抑制輸出。在這裏重定向stdout有點奇怪。
$ touch test.txt
$ rm test.txt > /dev/null 2>&1
^ interactive rm is actually asking if you really want to delete the file here, but not printing the message
如果你只是想沒有得到錯誤信息,只是重定向標準錯誤(文件描述符2)到/ dev/null的
$ rm test.txt 2> /dev/null
或
$ rm test.txt 2>&-
如果你想讓它不提示do you really want to delete
型消息,使用強制標誌-f
$ rm -f test.txt 2> /dev/null
或
$ rm -f test.txt 2>&-
要刪除要麼需要rmdir
如果它是空的,或者使用遞歸-r
國旗的目錄,但是,這要擦去家居/home/user的,所以你真的需要這裏要小心。
除非你有它在--verbose
模式下運行,我想不出任何需要關閉rm
命令的標準輸出的情況。
另外,作爲慶典4,如果你想標準輸出和標準錯誤重定向到同一位置,只是使用或類似的東西
問題解決了,非常感謝功能,並被解釋。 –
@FilipiSilva沒問題,很高興我能幫到你。 – BroSlow
要抑制命令的標準輸出,傳統方法是將輸出發送到空設備,使用somecommand arg1 arg2 > /dev/null
。爲了也抑制錯誤輸出,標準錯誤可以被重定向到相同的地方:somecommand arg1 arg1 > /dev/null 2>&1
。
''/ dev/null 2>&1':'&&dev/null'('&>/dev/null'也適用)的較短替代方案。另外請注意,您可以持續使用'exec'重定向流,以便後續命令不需要明確的重定向 - 請參閱http://www.faqs.org/docs/abs/HTML/io-redirection.html上的「使用exec」部分。 – mklement0
什麼是所有這些空間中間的每一個斜線? – fedorqui
你想做什麼?要刪除一個文件夾,使用'rm -rf/home/user',但刪除一個用戶文件夾可能是一個壞主意。要刪除文件,請執行'rm/home/use/file.txt'注意缺少空格。要在腳本中放入rm命令,shebang應該是'#!/ bin/bash',再次注意缺少空格。 –
錯誤消息與您顯示的代碼不匹配。請不要重新鍵入,使用剪切和粘貼。 –