2013-03-29 19 views
1

我想在bash中阅读任意键被按下,无论按下回车键,箭头键,数字,字母还是标点符号。Bash阅读转义字符和正常字符

这是我想出的最接近的,除了当按下转义键时,它溢出到下一个输入。另外,转义键将会读取但不会回显。

#!/bin/bash 

read -r -n 1 -d $'\n' -p 'input> ' line 
echo -en "\n" 
echo "$line" 

回答

1

有点哈克/肮脏的方式,而应该努力为用户交互shell ......

read -n1 -s -p 'input> ' line; read -t 0.1 -n2 -s line2 
line="$line$line2" 

现在,它是由你来<ESC>[A转换为字符串<UP>与否。

注意:这很可能会失败,如果标准输入重定向(比如,从管/文件...)

+0

“哈克/脏” ......几乎完美。 –

+0

刚刚意识到类似的方法已经在TLDP:http://tldp.org/LDP/abs/html/escapingsection.html#BASHEK – anishsane

+0

是的。然而,这个例子不适用于OS X,因为Mac上的读取时间需要是正整数。 TLDP程序工作的唯一方法是在第一次读取时间后读取时间可能非常短。 –