2013-03-29 21 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程序工作的唯一方法是在第一次讀取時間後讀取時間可能非常短。 –