如何解决如何从bash拦截命令stdin和stdout?
在 linux (centos 7) 中有一个二进制应用程序,需要捕获所有接收和驱逐的文本,例如:
[ssh stdin&stdout] -> [my-command] -> [/usr/libexec/openssh/sftp-server piped]
的想法是能够在终端中观察目标应用程序的所有输入和输出消息。是否可以仅使用 bash ?,我知道可以创建一个应用程序,该应用程序接受输入并将其传递给管道执行并在终端中显示内容,但我想知道它是否可以在本地实现。
解决方法
如果您运行程序的两个实例,例如 tee,那么您可以:
tee stdin.txt | sftp-server |& tee stdout-stderr.txt
或者如果您想将 stdout 和 stderr 拆分为 3 个实例:
{ tee stdin.txt | sftp-server 2>&1 1>&3 3>&- | tee stderr.txt ; } 3>&1 1>&2 | tee stdout.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。