Sudo命令中使用重定向

直接在sudo命令中使用重定向可能會出問題,如:

sudo route -n > /etc/haha
會報告錯誤:

bash: /etc/haha: 權限不夠

原因簡析

這是因爲shell在解析上面的命令時時,把sudo route -n做爲命令部分執行,而命令的輸出結果則存到/etc/haha中。也就是說sudo只對命令部分有效,對重定向部分無效,所以發生了權限不夠的錯誤。

解決方法

針對上述原因,可以用這個方法解決問題

sudo sh -c "route -n > /etc/haha"
這樣sudo執行的是一個shell,在具有root權限的shell中執行前面的命令,就不會再出現權限問題了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章