直接在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中執行前面的命令,就不會再出現權限問題了。