如何从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

最新更新