Linux 为什么可以';我能在/etc/中回音一行吗?
我在centos上,我做了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还不存在,
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
这是解释原因的唯一答案。自动检测。