ChrisInCambo Asked: 2009-09-25 12:46:25 +0800 CST2009-09-25 12:46:25 +0800 CST 2009-09-25 12:46:25 +0800 CST 如何在可以通过 sudo 访问的文件末尾添加一行? 772 我努力了: sudo "some string" >> test.txt 但是我收到了权限被拒绝的警告。 任何人都可以帮忙吗? shell 5 个回答 Voted Best Answer wfaulk 2009-09-25T12:54:57+08:002009-09-25T12:54:57+08:00 取决于您的管理员通过 sudo 授予您多少访问权限。假设您有权这样做,最简单的答案是运行“sudo -s”以获取特权 shell,然后执行您的 echo somestring >> test.txt 像平常一样'。如果您需要自动执行此操作: sudo /bin/sh -c 'echo somestring >> test.txt' 您无法使用的原因(除了您将我认为是“回声”命令的事实遗漏了)是文件重定向发生在您的 shell 的上下文中,而 sudo 仅适用于命令你告诉它运行。 freiheit 2009-09-25T12:53:40+08:002009-09-25T12:53:40+08:00 sudo bash -c "echo 'some string' >> test.txt" 您最初尝试的问题是“>>”在您运行的 shell 中发生;bash 打开文件,而不是 sudo 正在运行的任何文件。在我的版本中,您将传递整个命令,包括重定向到由 sudo 运行的 bash。 akira 2009-09-25T13:26:15+08:002009-09-25T13:26:15+08:00 % echo "string" | sudo tee -a test.txt kenorb 2015-05-26T02:15:16+08:002015-05-26T02:15:16+08:00 您可以尝试前方式: sudo ex +'$put =\"some string\"' -cwq foo.txt 它是简单的就地文件编辑,并且在脚本中很有用,因此您不必进行任何 shell 管道。 Ken Williams 2017-02-10T15:01:15+08:002017-02-10T15:01:15+08:00 很多人推荐tee这个,但我不喜欢写到stdout. 另一种选择是cat: sh some_script.sh | sudo sh -c 'cat >> somefile.txt' 如果cat有一个像tee's -aflag 这样的参数,那会更方便一些: sh some_script.sh | sudo pseudocat -a somefile.txt 但不幸的是,事实并非如此。
取决于您的管理员通过 sudo 授予您多少访问权限。假设您有权这样做,最简单的答案是运行“sudo -s”以获取特权 shell,然后执行您的
像平常一样'。如果您需要自动执行此操作:
您无法使用的原因(除了您将我认为是“回声”命令的事实遗漏了)是文件重定向发生在您的 shell 的上下文中,而 sudo 仅适用于命令你告诉它运行。
您最初尝试的问题是“>>”在您运行的 shell 中发生;bash 打开文件,而不是 sudo 正在运行的任何文件。在我的版本中,您将传递整个命令,包括重定向到由 sudo 运行的 bash。
您可以尝试前方式:
它是简单的就地文件编辑,并且在脚本中很有用,因此您不必进行任何 shell 管道。
很多人推荐
tee
这个,但我不喜欢写到stdout
. 另一种选择是cat
:如果
cat
有一个像tee
's-a
flag 这样的参数,那会更方便一些:但不幸的是,事实并非如此。