为什么我不能 sudo 回显 /etc/ 中的一行?
Why can't I sudo echo a line in /etc/?
我在centos上,我做了sudo echo 'testline'>>/etc/test/test
它说-bash: /etc/test/test: Permission denied
但是,当我执行 sudo vi /etc/test/test
并插入 testline
并执行 :wq
时,它写得很好,为什么会这样?
您需要将整个语句(包括重定向)包装到一个组中,以便 sudo 围绕它扩展。
sudo bash -c "echo 'testline' >> /etc/test/test"
注意:如果 /etc/test
尚不存在,那也将失败。
重定向由 shell 在 运行 sudo
之前处理,而不是它的一部分。请改用 tee
,以便 sudo
运行实际打开文件进行写入的进程。
echo 'testline' | sudo tee -a /etc/test/test > /dev/null
这些人已经提出的相同通用解决方案的另一种语法:
echo "echo 'testline'>>/etc/test/test" | sudo su
我在centos上,我做了sudo echo 'testline'>>/etc/test/test
它说-bash: /etc/test/test: Permission denied
但是,当我执行 sudo vi /etc/test/test
并插入 testline
并执行 :wq
时,它写得很好,为什么会这样?
您需要将整个语句(包括重定向)包装到一个组中,以便 sudo 围绕它扩展。
sudo bash -c "echo 'testline' >> /etc/test/test"
注意:如果 /etc/test
尚不存在,那也将失败。
重定向由 shell 在 运行 sudo
之前处理,而不是它的一部分。请改用 tee
,以便 sudo
运行实际打开文件进行写入的进程。
echo 'testline' | sudo tee -a /etc/test/test > /dev/null
这些人已经提出的相同通用解决方案的另一种语法:
echo "echo 'testline'>>/etc/test/test" | sudo su