如何在我可以通过 sudo 访问的文件末尾添加一行?

Chr*_*mbo 7 shell sudo file-permissions

我试过了:

sudo "some string" >> test.txt
Run Code Online (Sandbox Code Playgroud)

但我收到了拒绝许可的警告。

任何人都可以帮忙吗?

wfa*_*ulk 14

取决于您的管理员通过 sudo 授予您多少访问权限。假设您有权这样做,最简单的答案是运行“sudo -s”以获取特权 shell,然后执行您的操作

echo somestring >> test.txt
Run Code Online (Sandbox Code Playgroud)

像平常一样'。如果您需要自动执行此操作:

sudo /bin/sh -c 'echo somestring >> test.txt'
Run Code Online (Sandbox Code Playgroud)

你所拥有的东西不起作用的原因(除了你把我认为是“echo”命令的东西留在外面)是文件重定向发生在你的 shell 的上下文中,而 sudo 只适用于命令你告诉它运行。


fre*_*eit 13

sudo bash -c "echo 'some string' >> test.txt"
Run Code Online (Sandbox Code Playgroud)

您最初尝试中的问题是“>>”发生在像您一样运行的 shell 中;bash 打开文件,而不是 sudo 正在运行的任何文件。在我的版本中,您正在传递整个命令,包括重定向到由 sudo 运行的 bash。


aki*_*ira 13

% echo "string" | sudo tee -a test.txt
Run Code Online (Sandbox Code Playgroud)

  • 如果你不想回显到标准输出 echo "string" | 须藤三通 test.txt > /dev/null (3认同)
  • “tee”的真正价值在于所有“工作”都是在普通用户的上下文中完成的,只有输出是用“sudo”权限编写的。对我来说,这比简短更重要,比其他答案更“正确”,尽管它们确实有效。 (3认同)