我想要做的事情大致是:
echo "Append string" >> protected_file
然而,由于此文件受写保护,所以我收到了一个错误。运行:
sudo echo "Append string" >> protected_file
似乎在echo命令上运行sudo,但仍然出现权限错误,我该如何附加到此文件?
echo "Append string" | sudo tee -a protected_file >/dev/null
tee
命令会将输出发送到文件和标准输出(两个位置 - 就像管道中的“tee”一样),而我们不需要额外的输出。将标准输出重定向到/dev/null
可以将其丢弃。 - Dennis Williamson直接回答问题:
sudo sh -c 'echo "Append string" >> protected_file'
但是我原则上同意ShivanRaptor的看法。
解释: >>
是一个shell操作符。如果您调用 sudo command
,您不会运行另一个shell; 因此,您不能在不重定向 sudo
的情况下重定向 echo
(最终,这会在重定向时给您错误的用户ID)。诀窍是在 sudo
中启动一个单独的shell,在其中可以发出重定向操作符。
或者尝试这个:
echo "echo 'append string' >> protected_file" | sudo bash
将所有内容整合在一起并修复其中一个答案,有三种方法:
sudo su root -c "echo 'append string' > protected_file"
echo "echo 'append string' >> protected_file" | sudo bash
echo "append string" | sudo tee -a protected_file >/dev/null
sudo
,而不是echo
命令。 - Raptor