与 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
,将光标放在单词的末尾,然后将光标向左移动两个位置,然后(由于echo
without添加换行符-n
)将光标移动到下一行的开头。这在视觉上与 没有区别echo hello
。
观看实际操作:
for c in h e l l o '\b' '\b' '\n'; do
echo -e "$c"; sleep 1
done
PS 不要以 root 身份进行此类实验。作为 root 搬起石头砸自己的脚可能会比使用普通帐户造成更大的伤害。