![如何在bash中执行read时忽略控制字符](https://linux22.com/image/227209/%E5%A6%82%E4%BD%95%E5%9C%A8bash%E4%B8%AD%E6%89%A7%E8%A1%8Cread%E6%97%B6%E5%BF%BD%E7%95%A5%E6%8E%A7%E5%88%B6%E5%AD%97%E7%AC%A6.png)
要将一行读入 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.|