我应该把 sudo 放在这个命令的什么地方?

mko*_*mko 4 debian

可能的重复:
将标准输出重定向到您没有写权限的文件

echo "some words" >> /etc/apt/source.list

permission denied

sudo echo "some words" >> /etc/apt/source.list

还返回权限被拒绝

然后我想也许 append 运算符是另一个命令,我应该将 sudo 放在它之前,所以我尝试

echo "some words" >> sudo /etc/apt/source.list

还返回权限被拒绝

我应该怎么做这个任务?

Dan*_*lai 15

sudo sh -c 'echo "some words" >> /etc/apt/source.list'

sudo echo "some words" >> /etc/apt/source.list 不起作用的原因是因为 sudo 提高了 'echo' 命令的权限,而不是重定向。

>> 重定向导致当前 shell 创建/附加到文件。它失败是因为您的 shell 没有这样做的权限。

我的回答有效的原因是您正在一个已经 sudo 的新 shell 中运行整个事情(回显和重定向)。sh -c ...调用一个新的 shell 并运行该子 shell 中给出的命令。sudo 之前它使子shell 以升级的权限运行。

第二个 sudo 示例没有意义,因为 sudo 需要运行一个命令,而这不是您传递的内容。我敢打赌,您现在在本地目录中确实有一个名为 sudo 的文件,其内容为“一些词”。随意删除:-)


dan*_*ann 10

echo "some words" | sudo tee -a /etc/apt/source.list > /dev/null
Run Code Online (Sandbox Code Playgroud)

-a用于“附加到文件”;tee 通常会覆盖目标文件。见man tee