只是为了好玩,我想将终端中的所有输出文本管到espeak
。例如,在设置完成后,我应该能够输入echo hi
,并听到“hi”说话,或者ls
,并听取我列出的目录内容。钩住bash中的所有命令输出
唯一有前途的方法来捕获输出到目前为止,我发现就是从这里开始:http://www.linuxjournal.com/content/bash-redirections-using-exec
这是我到目前为止有:
npipe=/tmp/$$.tmp
mknod $npipe p
tee /dev/tty <$npipe | espeak &
espeakpid=$!
exec 1>&-
exec 1>$npipe
trap "rm -f $npipe; kill $espeakpid" EXIT
它的工作原理(也打印了一堆“完成“工作),但创建命名管道,删除陷阱和打印输出tee
都显得有点混乱。有一种更简单的方法吗?
只有挂钩所有命令输出很容易与'exec>>(tee bash.log)'。但是正确处理终端,IPC(无需填写文件)等。以上是正确的方法。 – jm666
@ jm666谢谢,有没有办法用管道而不是文件重定向? – jozxyqk