我只是想把终端中的所有输出文本传输到espeak
。例如,设置完成后,我应该能够键入echo hi
并听到“hi”说出,或者键入ls
并听到我的目录内容列出。
目前我找到的唯一有希望捕获输出的方法来自这里: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
它能够正常工作(同时打印一堆“完成”任务),但是创建命名管道、使用trap删除并使用tee
打印输出似乎有点混乱。是否有更简单的方法?
exec > >(tee bash.log)
即可轻松挂钩所有命令输出。但是,为了正确处理终止、IPC(而不会填充文件)等等,以上是一种正确的方式。 - clt60