Linux重定向权限不够的解决方案
在使用 cat 或echo 等命令,将一些内容添加到root权限的文件,比如/etc/hosts时,系统会报出“权限不够”的错误。
原因分析
以向/etc/hosts中添加一条记录为例,通常代码写为
{% note primary %}
此时,bash 拒绝这么做会提示权限不够,是因为重定向符号 > 和 >> 也是 bash 的命令。由于使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 > 和 >> 命令也具有 root 权限,所以 bash 会认为这两个命令都没有向/etc/hosts写入信息的权限。
{% endnote %}
解决方法
使用命令sh -c
sh -c 命令,可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
| |
使用命令tee
利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:
| |
{% note primary %}
注意: tee 命令的 -a 选项的作用等同于 >> 命令。如果去除该选项,那么 tee 命令的作用就等同于 > 命令。
{% endnote %}