直接在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中执行前面的命令,就不会再出现权限问题了。