我努力了:
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
但不幸的是,事实并非如此。