過去数日からこの質問を解決しようとしていて、最終的に解決策を見つけました:)
\x1b\r
とは \x1d\r
うまくいきませんでした。私はここで解決策を見つけました: Using Control character in a script with tr and echo
次のコードを使用しました。
escseq=`echo 'e' | tr 'e' '\035'`
$escseq
Ctrl+] を取得するために使用します。
仕組み:
echo で制御文字を直接作成できない場合は、tr ユーティリティで作成できます。tr は 8 進数シーケンスも理解します。不要なエコー出力文字を作成し、必要な制御文字に tr 変換します。
たとえば、4 文字のシーケンスを ESCape CTRL-a [ CTRL-w ] にするには、次のようなコマンドを使用します。
escseq=`echo 'ea[w' | tr 'eaw' '\033\001\027'`
tr は、パイプを介して echo から 4 文字を読み取ります。e を ESCape (8 進 033) に、a を CTRL-a (8 進 001) に、w を CTRL-w (8 進 027) に変換します。左括弧は変更されていません。tr はそれをそのまま印刷します。
注: これは、シェル スクリプトを使用して telnet セッションのログアウトを自動化したい場合に非常に便利です。