【发布时间】:2013-04-16 05:04:43
【问题描述】:
我显然没有期待正确的结果。
$ man less
在另一个终端:
$ ps u
# Find that pid of less is 45783
$ lsof -p 45783
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
less 45783 lust cwd DIR 1,4 442 46 /usr/share/man
less 45783 lust txt REG 1,4 137712 9698 /usr/bin/less
less 45783 lust txt REG 1,4 600576 9397 /usr/lib/dyld
less 45783 lust txt REG 1,4 303120384 2911813 /private/var/db/dyld/dyld_shared_cache_x86_64
less 45783 lust 0 PIPE 0xffffff8025bf38c0 16384
less 45783 lust 1u CHR 16,2 0t82970 763 /dev/ttys002
less 45783 lust 2u CHR 16,2 0t82970 763 /dev/ttys002
less 45783 lust 3r REG 1,4 4589 286688 /private/etc/man.conf
less 45783 lust 4r CHR 2,0 0t0 306 /dev/tty
$ echo "q" > /dev/ttys002
此时,man less 正在运行的终端打印 q 和换行符,而不是退出联机帮助页的显示。
我怎样才能让它发送原始的“q”?管道不起作用,我得到“zsh:权限被拒绝:/dev/ttys002”。将echo 切换为cat 并输入也不起作用。
【问题讨论】:
-
您似乎对将输出发送到 tty 不感兴趣,正如您的问题标题所说,而是将输入注入到 tty 中——这是完全不同的事情!
-
@Celada 发送程序的输出 作为终端会话的输入?
-
确实如此。正如我所说,这与将输出发送到终端非常不同!
标签: shell unix io terminal zsh