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

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

我努力了:

sudo "some string" >> test.txt

但是我收到了权限被拒绝的警告。

有人可以帮忙吗?

答案1

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

echo somestring >> test.txt

为“正常”。如果您需要自动执行此操作:

sudo /bin/sh -c 'echo somestring >> test.txt'

您所做的不起作用的原因(除了您遗漏了我认为是“echo”命令的事实之外)是文件重定向发生在您的 shell 上下文中,并且 sudo 仅适用于您告诉它运行的命令。

答案2

sudo bash -c "echo 'some string' >> test.txt"

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

答案3

% echo "string" | sudo tee -a test.txt

答案4

许多人推荐tee这样做,但我不喜欢写入的副作用stdout。另一种方法是cat

sh some_script.sh | sudo sh -c 'cat >> somefile.txt'

如果有像标志这样cat的参数,那会更方便一些:tee-a

sh some_script.sh | sudo pseudocat -a somefile.txt

但不幸的是,事实并非如此。

相关内容