Mic*_*ael 2 command-line bash redirect ansible
如果我使用文本重定向器>并且>>它们输出到一个文本文件,这对于长期日志记录来说很好,但是,我还需要它们以传统的标准输入、标准输出格式出现在屏幕上,因为我通过Ansible 中的 shell (bash) 函数。
使用>>会让 Ansible 相信它是一次成功的操作,即使它失败了,这是不可取的。对于如何实现鱼与熊掌兼得的场景有什么帮助吗?
一种方法是将其通过管道传输,tee -a /dev/tty >> file如下所示:
echo "This is some text" | tee -a /dev/tty >> file
Run Code Online (Sandbox Code Playgroud)
另一种方法是将其通过管道传输tee -a file,而不进行重定向,如下所示:
echo "This is some text" | tee -a file
Run Code Online (Sandbox Code Playgroud)
第三种方法(如果您需要>>直接在命令之后)是重定向到/dev/tty(但不保存到文件),如下所示:
echo "This is some text" >> /dev/tty
Run Code Online (Sandbox Code Playgroud)
如果这还不够,那么您可以通过在一个终端中创建名为 例如 的命名管道来使用命名管道(此过程需要两个终端),my_pipe如下所示:
mkfifo my_pipe
Run Code Online (Sandbox Code Playgroud)
然后,将输出重定向到它,如下所示:
echo "This is some text" >> my_pipe
Run Code Online (Sandbox Code Playgroud)
然后,从另一个终端读取该命名管道并对输出执行任何您想要的操作,如下所示:
cat my_pipe | tee -a file
Run Code Online (Sandbox Code Playgroud)
或者像这样(在写入之间保持管道等待/打开以进行读取):
tail -F my_pipe | tee -a file
Run Code Online (Sandbox Code Playgroud)
请记住,路径像任何其他文件一样适用于命名管道...因此,请确保在使用命名管道时提供正确的路径。
| 归档时间: |
|
| 查看次数: |
17404 次 |
| 最近记录: |