zsh 的“stty -echo”相当于什么?

zsh 的“stty -echo”相当于什么?

我可以用 bash 隐藏终端中写入的内容

stty -echo

然而,这不适用于 zsh:运行此命令不会更改输出

stty -a

stty -echofor zsh的等效命令是什么?

答案1

我认为zsh返回提示时会重置终端。这实际上非常有用,因为它可以防止您因终端损坏而陷入提示并不得不施放奇怪的咒语来恢复理智。

根据一个邮件列表讨论,您可以让它不这样做,但代价是完全禁用行编辑unsetopt ZLE

答案2

默认情况下,与当前会话关联的终端配置被冻结,因此完成的大多数设置stty都是短暂的。

根据 zsh 文档,您可以使用此命令解冻终端

ttyctl -u

并恢复到常规的冻结模式:

ttyctl -f 

在解冻模式下,您的stty设置应该会保留。但情况似乎并非如此-echo

但是,如果您的目标是暂时禁用单个命令或外部程序的回显字符,则默认行为可能就足够了:

$ stty -echo;stty -a;read foo
speed 38400 baud; rows 44; columns 165; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
$ echo $foo
abc

请注意,stty报告的-echo设置和响应命令时键入的字符read未回显到屏幕上。

相关内容