为什么我不能 sudo 在 /etc/ 中回显一行?

cab*_*2ma 0 linux vi sudo file-permissions echo

我在centos上,我做到sudo echo 'testline'>>/etc/test/test了说-bash: /etc/test/test: Permission denied

但是,当我执行sudo vi /etc/test/test并插入testline并执行时:wq它写得很好,为什么会发生这种情况?

che*_*ner 6

重定向是由 shell 在运行之前处理的sudo,而不是作为其中的一部分。请改为使用tee,以便sudo运行实际打开文件进行写入的进程。

echo 'testline' | sudo tee -a /etc/test/test > /dev/null
Run Code Online (Sandbox Code Playgroud)


tin*_*ink 5

您需要将整个语句(包括重定向)包装到一个组中,以便 sudo 围绕它扩展。

sudo bash -c "echo 'testline' >> /etc/test/test"
Run Code Online (Sandbox Code Playgroud)

注意:如果/etc/test还不存在,它也会失败。