gpt4 book ai didi

linux - 中断后终端输入隐藏 'read -s'

转载 作者:IT王子 更新时间:2023-10-29 00:31:34 25 4
gpt4 key购买 nike

在等待来自操作 read -sp 的输入时按 Ctrl-C 将操作返回到命令行,但给定的输入被隐藏,就像它仍在运行 read -s 一样。

例子

#!/bin/sh

sig_handler() {
echo "SIGINT received"
exit 1
}

trap "sig_handler" SIGINT
read -sp "ENTER PASSWORD: " password
echo
echo $password

通常执行如下:

$~ ./example.sh
ENTER PASSWORD:
password
$~ text
-bash: text: command not found

但如果您在输入密码时按 Ctrl-C,您会得到

$~ ./example.sh
ENTER PASSWORD: SIGINT received
$~ -bash: text: command not found

在使用 reset 刷新之前,文本或任何其他后续命令不会显示为输入。

如何在收到 SIGINT 后将文本恢复为正常输入?出于明显的安全原因,不需要 read -p "ENTER PASSWORD: "password

最佳答案

stty sane 添加到您的信号处理程序,以便它将终端恢复到默认状态:

sig_handler() {
echo "SIGINT received"
stty sane
exit 1
}

关于linux - 中断后终端输入隐藏 'read -s',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com