要将命令的标准输出(在本例中为 echo hi
)写入文件,您可以执行以下操作:
echo hi > outfile
我想要一个命令而不是重定向或管道,这样我就不需要调用 shell。这最终用于 Ansible,它调用 python 的 subprocess.POpen
。
我正在寻找:
stdout-to-file outfile echo hi
tee
可以很容易地将标准输出复制到文件中,但它接受标准输入,而不是单独的命令。
是否有一个通用的、可移植的命令可以执行此操作?当然,写一个很容易,但这不是问题所在。最终,在 Ansible 中,我想做的是:
command: to-file /opt/binary_data base64 -d {{ base64_secret }}
代替:
shell: base64 -d {{ base64_secret }} > /opt/binary_data
编辑:寻找在 RHEL 7、Fedora 21 上可用的命令
最佳答案
您实际上要找的是一个 Ansible 模块,它有两个参数,
- 实际命令
- 重定向上述命令输出的文件
在这种情况下,您可以使用 shell
模块而不是 command
模块,它允许这样的重定向。
例如
- shell: /usr/bin/your_command >> output.log
您可以检查 source and example documentation here.
这是最简单的。我相信你知道这一点。我只是将此内容传达给阅读此线程的 shell/命令模块的新手。
如果你不喜欢那样做,你仍然可以编写一个包装器模块,它接受“文件名”作为参数并将运行为,
- custommodule: output.log /usr/bin/your_command
您可能需要做的就是 fork 存储库、查看现有模块并相应地自定义您的模块。
关于bash - 将命令输出重定向到文件(现有命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28777306/