如何从bash拦截命令stdin和stdout?

时间:2021-03-28 01:16:01

标签: bash pipe stdout stdin

在 linux (centos 7) 中有一个二进制应用程序,需要捕获所有接收和驱逐的文本,例如:

[ssh stdin&stdout] -> [my-command] -> [/usr/libexec/openssh/sftp-server piped]

的想法是能够在终端中观察目标应用程序的所有输入和输出消息。是否可以仅使用 bash ?,我知道可以创建一个应用程序,该应用程序接受输入并将其传递给管道执行并在终端中显示内容,但我想知道它是否可以在本地实现。

1 个答案:

答案 0 :(得分:0)

如果您运行程序的两个实例,例如 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
相关问题