我希望能够读取10个字符的键盘输入,并将它们存储到一个文件中。我尝试了linux命令:
read -n 10
但如果你点击ctrl-c(0x03)就会中止。我需要能够读取接下来的10个字符,无论它们是什么,包括所有控制字符,因此值为0x00到0xFF。这可能吗?
答案 0 :(得分:0)
您可以通过(暂时!)将终端置于原始模式来覆盖控制字符的行为。这将让它读取任何可用的东西。但是,读取指定的字符数将受bash
在这种情况下决定做的任何事情的影响。
exec </dev/tty
old=`stty -g`
stty raw -echo min 0 time 5
$CMD $OPT "${ESC}]4;4;?^G${SUF}" > /dev/tty
read original
stty $old
original=${original}${SUF}
if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
then
trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
else
trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
fi
虽然您必须阅读整个脚本以了解它是如何工作的。这是acolors.sh
(见sources)。
请记住,即使您将终端设置为读取给定数量的字符,(除非您强制执行没有超时),您将获得终端提供的内容。这可以更少,并且(例如在ncurses中调用一些调试代码),读取终端响应的程序必须处理不完整的读取以及超时。