Prv*_*dav 1 sudo io-redirection
我想只将 sudo 命令的输出写入某个文件,即在写入 sudo 后我在终端上获得的行即
[sudo] password for user:
Run Code Online (Sandbox Code Playgroud)
如果我使用sudo ls > file
orsudo ls 2> file
然后我分别得到整个命令的 stdout 和 stderr 。我也不能使用sudo > file
or sudo 2> file
,然后我会得到错误,我应该在 sudo 之后使用一些选项或命令。那么,有可能实现吗?
使用sudo -S
,该sudo
实用程序会将其提示写入标准错误,并从标准输入读取密码。您可以使用2>filename
.
请注意,您仍然必须提供sudo
要执行的命令,并且该命令的标准错误也将被重定向到文件,除非您进行一些文件描述符处理:
sudo -C 4 -S sh -c 'ls non-existant 2>&3' 3>&2 2>sudo.stderr
Run Code Online (Sandbox Code Playgroud)
这将重定向sudo
to的输出,sudo.stderr
同时仍允许执行的命令写入原始标准错误流。为此,我们将文件描述符 3 作为标准错误的副本打开,然后在我们的命令中显式写入该文件描述符。对于这项工作,我们要问sudo
到不靠近文件描述符3(它会在默认情况下这样做)。这可能需要管理员closefrom_override
在sudoers
文件中启用该选项。
请注意,上述命令可能存在微妙的安全问题。
归档时间: |
|
查看次数: |
492 次 |
最近记录: |