我可以用 bash 隐藏终端中写入的内容
stty -echo
然而,这不适用于 zsh:运行此命令不会更改输出
stty -a
stty -echo
for 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
未回显到屏幕上。