stdin
命令正在运行时如何停止ash
(不是bash
)?
例如:
sleep 10
- 仍在运行
echo hello
时键入sleep
- 观察
hello
是在完成stdout
后sleep
期望:
sleep 10
- 仍在运行
echo hello
时键入sleep
- 观察 shell,好像在
sleep
运行时没有输入任何内容
我希望解决方案类似于:tput <stop stdin>; sleep 10; tput <restart stdin>; <enter>
这不会出现在 shell 脚本中(只需要使用交互式 shell)。
stty -echo
禁用终端的回显,但如果您键入某些内容,它将被记住并且 shell 将获得键入的密钥。然后,在离开之前,
stty echo
(恢复回声模式),并用这个程序耗尽终端输入:整个事情就是
stty raw -echo;sleep 10;stty sane;./my_program
。使用 raw,避免 CtrlC CtrlZ 干扰。Sane 意味着回显并将终端恢复到正常模式。