Linux 为什么可以';我能在/etc/中回音一行吗?

Linux 为什么可以';我能在/etc/中回音一行吗?,linux,echo,file-permissions,sudo,vi,Linux,Echo,File Permissions,Sudo,Vi,我在centos上,我做了sudo echo'testline'>/etc/test/test它说-bash:/etc/test/test:权限被拒绝 但是,当我执行sudo vi/etc/test/test并插入testline和do:wq时,它写得很好,为什么会发生这种情况?您需要将整个语句(包括重定向)包装到一个组中,以便sudo围绕它扩展 sudo bash -c "echo 'testline' >> /etc/test/test" 注意:如果/etc/test还不存在,

我在centos上,我做了
sudo echo'testline'>/etc/test/test
它说
-bash:/etc/test/test:权限被拒绝


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

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

sudo bash -c "echo 'testline' >> /etc/test/test"

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

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

echo 'testline' | sudo tee -a /etc/test/test > /dev/null

这些人已经介绍了相同通用解决方案的另一种语法:

echo "echo 'testline'>>/etc/test/test" | sudo su

这是解释原因的唯一答案。自动检测。