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,将光标放在单词的末尾,然后将光标向左移动两个位置,然后(由于echowithout添加换行符-n)将光标移动到下一行的开头。这在视觉上与 没有区别echo hello

观看实际操作:

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

PS 不要以 root 身份进行此类实验。作为 root 搬起石头砸自己的脚可能会比使用普通帐户造成更大的伤害。

相关内容