echo -e アクション

echo -e アクション

echoで使用される-eスイッチを使用すると、次のようにエスケープシーケンスを理解できます。

[root@localhost~]#  echo -e 'hello\b\bhi'
helhi
[root@localhost~]# 

しかし、次のコードスニペットではエスケープシーケンスが省略されているようです。

[root@localhost~]# echo -e 'hello\b\b'
hello
[root@localhost~]# 

上記のコードスニペットの動作を理解するのに役立つ人はいますか?

上記と同じコードスニペットが「-n」スイッチで実行されると機能します。 (もちろん、-nアクションを使用すると改行文字が削除されます)

[root@localhost~]# echo -n -e 'hello\b\b'
hel[root@localhost~]# 

挨拶

答え1

バックスペース文字(echo -e '\b')はカーソルを左に移動しますが、表示される内容を変更しません。したがってecho -e 'hello\b\b'、表示するには、hello単語の末尾にカーソルを置き、カーソルを左に2位置移動し(echo改行を追加しないため-n)、カーソルを次の行の先頭に移動します。これは視覚的に区別できませんecho hello

実際の動作を見る:

for c in h e l l o '\b' '\b' '\n'; do
  echo -e "$c"; sleep 1
done

PSルートなどの実験をしないでください。ルートで自分の足に銃を撃つと、通常のアカウントを使用するよりも多くのダメージを与える可能性があります。

関連情報