我正在运行非常简单的脚本,它逐行读取并将输入的行打印回终端:
while read CMD; do
echo $CMD
done
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我尝试编辑带有backspace字符的行时,它会打印^?而不是删除字符。当我按下Ctrl+ 时backspace,输出是^H. 如何修复此行为以backspace删除字符而不是添加这些字符?我试过stty erase '^?'命令但没有成功。
问题是有很多方法可以表示退格,但read命令并不能理解所有这些。您应该能够配置? Backspace在终端模拟器设置中按键时发送的确切内容。
假设您gnome-terminal用作模拟器,请打开Edit 菜单并单击Profile preference。切换到兼容性选项卡,您应该会看到以下选项:
现在您可以更改Backspace 键生成:设置。您可以从以下五个选项中进行选择。我在大括号中添加了它们在我的系统上的行为方式:
^H改为打印)^[[3~改为打印)