如何在bash中执行read时忽略控制字符

如何在bash中执行read时忽略控制字符

要将一行读入 bash 中的变量,我运行

read -p "here:" _msg; echo "${_msg}" > _read

xyz123怀揣着for的期待_msg,我123先不小心做出来了,现在需要先敲三下才能移动光标1,然后继续输入xyz,但是好像就跟进入INSERT模式一样,123没有了,只有xyz

here:xyz

然后我检查了最终文件

xxd _read

我有

00000000: 7879 7a1b 5b44 1b5b 441b 5b44 3132 330a  xyz.[D.[D.[D123.

如何忽略输入的控制字符

我在 Windows 上的 MINGW64 中运行 bash

答案1

bash如果您阅读( )的文档man bash,特别是描述的部分,read您会发现有一个额外的选项:

-e如果标准输入来自终端,readline(请参阅上面的 READLINE)用于获取该行。

除此之外,按照指示:

阅读线这是使用交互式 shell 时处理读取输入的库 [...]

应用该指令,您将得到:

read -e -p "here:" _msg; printf '%s\n' "$_msg" > _read

输入后123,三个光标离开,并且abc,我从文件中得到这个_read

hexdump -C _read
00000000  61 62 63 31 32 33 0a                              |abc123.|

相关内容