linux - 如何使用 sudo 进行输出重定向?

标签 linux bash shell sudo file-access

<分区>

我希望将文本从 stdin 写入 root 拥有的文件。

我正在通过 SSH 连接以编程方式执行此操作 - 基本上是通过脚本 - 所以使用文本编辑器是不可能的。没有终端。该过程是完全自动化的。

鉴于可以通过 sudo 获得 [a] 根提升,并且可以使用带有重定向的 cat 写入 [b] 文件,我假设以下会起作用:

ssh user@host sudo cat >the-file

不幸的是,重定向应用于sudo,而不是cat。在此示例中,如何将重定向应用于 cat

最佳答案

执行此操作的正常模式是:

ssh user@host 'cat | sudo tee the-file'

tee 将输出重定向到一个文件,并且可以使用 sudo 运行。

如果你想模仿 >>> 文件附加到的位置,请使用 sudo tee -a

您还需要确保像上面那样引用您的命令,这样管道就不会被本地 shell 解释。

编辑

tee 命令 is part of POSIX ,因此您可以依赖它的存在。

同时重定向标准错误:

ssh user@host 'some_command 2>&1 | sudo tee output-file'

关于linux - 如何使用 sudo 进行输出重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39069522/

相关文章:

linux - Linux 中应用程序可用的内存总量

linux - 在 Linux 中导航目录的更快方法?

c++ - 在 Linux 中将 freeglut 与 Qt Creator 连接起来

用于从文件夹和子文件夹中获取字符串模式计数的 Linux 脚本

linux - 如何获取文件名(从另一个文件)作为 cp linux 脚本的参数

linux - 如何使用 sed 或 awk 正则表达式在 linux shell 中解析此数据

linux - .bash_profile ldapsearch 函数不输出到终端

linux - 创建 PDF 发票 - 是否有任何模板解决方案?

bash - 从 Shell 脚本更改提示?

linux - 将 stdin 行批处理到另一个重复命令的推荐方法,例如 xargs 但通过 stdin 而不是参数?