6

我想做一些类似的事情:

echo "Append string" >> protected_file

但是,由于此文件受写保护,我收到错误消息。跑步:

sudo echo "Append string" >> protected_file

似乎在 echo 命令上运行 sudo ,仍然给我权限错误,我该如何附加到这个文件?

4

4 回答 4

11
echo "Append string" | sudo tee -a protected_file >/dev/null
于 2012-05-22T14:50:00.373 回答
3

对于一个字面的答案,

sudo sh -c 'echo "Append string" >> protected_file'

但我原则上同意 ShivanRaptor。

解释:>>是一个shell操作符。如果调用sudo command,则不会运行另一个 shell;因此,如果不进行重定向,您将无法echo进行重定向sudo(最终,在进行重定向时会为您提供错误的用户 ID)。诀窍是在内部启动一个单独的外壳sudo,您可以在其中发出重定向运算符。

于 2012-05-22T08:58:10.733 回答
0

或试试这个:

echo "echo 'append string' >> protected_file" | sudo bash
于 2012-05-22T09:06:41.580 回答
0

将它们放在一起并修复其中一个答案,有 3 种方法:

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
于 2014-10-01T16:12:54.793 回答