read組み込みコマンドを循環させるために上/下キーを押して記録をサポートする方法は?

上キーを押したときにキャッチしようとしましたが、うまくいかないようですread

read -p '> ' -n 3 foo
echo
echo -n "$foo" | hexdump

矢印キーを押すと機能しているようで、それを使用して検出できますが、押すと上aa矢印識別子の最初の文字だけを読み、他の矢印キーを区別するには3番目の文字が必要なため失敗します。

ベストアンサー1

Mike Stroyanの素晴らしい回答をコピー古いメーリングリストの投稿:

「history -r」を使用してシェルの履歴としてファイルを読み取ることができ、「history -s」を使用して読み取った各行を履歴に追加できます。次に、履歴 -w を使用して履歴をファイルに保存します。これはviスタイルのreadline編集の例です。

#!/bin/bash
history -r script_history
set -o vi
CMD=""
while true
do
    echo "Type something"
    read -e CMD
    history -s "$CMD"
    echo "You typed $CMD"
    case "$CMD" in
        stop)
            break
            ;;
        history)
            history
            ;;
    esac
done
history -w script_history
echo stopping

おすすめ記事