为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用sudo将输出重定向到没有写入权限的位置?

如何使用sudo将输出重定向到没有写入权限的位置?

慕容森 2019-06-26 15:04:13
如何使用sudo将输出重定向到没有写入权限的位置?我在我们的一个开发RedHat Linux盒上获得了sudo访问权,我似乎发现自己经常需要将输出重定向到我通常没有写访问权限的位置。问题是,这个人为的例子行不通:sudo ls -hal /root/ > /root/test.out我刚收到回复:-bash: /root/test.out: Permission denied我怎么才能让这个起作用?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

这里有人建议说:

sudo ls -hal /root/ | sudo tee /root/test.out > /dev/null

这也可用于将任何命令重定向到您无法访问的目录。这是因为TEE程序实际上是一个“对文件的回显”程序,重定向到/dev/null是为了停止它,并将它输出到屏幕上,使其与上面设计的原始示例相同。


查看完整回答
反对 回复 2019-06-26
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

问题是命令sudo,但是重定向获取在用户下运行的。这是由shell来完成的,你对此无能为力。

sudo command > /some/file.log
`-----v-----'`-------v-------'
   command       redirection

绕过这一点的通常方法是:

  • 将命令包装在您在sudo下调用的脚本中。

    如果命令和/或日志文件发生更改,则可以让脚本将这些作为参数。例如:

    sudo log_script command /log/file.txt
  • 调用shell并将命令行作为参数传递给-c

    这对于一个OFF复合命令特别有用。例如:

    sudo bash -c "{ command1 arg; command2 arg; } > /log/file.txt"


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 766 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信