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

问题描述 投票:0回答:3

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

然而,当我做sudo vi /etc/test/test并插入testline并做:wq它写得很好,为什么会发生这种情况?

linux echo file-permissions sudo vi
3个回答
4
投票

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

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

注意:如果/etc/test尚不存在,那也将失败。


1
投票

在运行sudo之前,shell会处理重定向,而不是将其作为其中的一部分。使用tee代替sudo运行实际打开文件进行写入的过程。

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

0
投票

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

echo "echo 'testline'>>/etc/test/test" | sudo su
© www.soinside.com 2019 - 2024. All rights reserved.