echo -e 行为

0 shell rhel echo

与 echo 一起使用的 -e 开关使其能够理解转义序列,如下所示:

[root@localhost~]#  echo -e 'hello\b\bhi'
helhi
[root@localhost~]# 
Run Code Online (Sandbox Code Playgroud)

但是,转义序列似乎在下面的代码段中被跳过了:

[root@localhost~]# echo -e 'hello\b\b'
hello
[root@localhost~]# 
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助理解上述代码片段的行为吗?

当上面相同的代码片段与“-n”开关结合执行时,它起作用了!(当然,使用 -n 行为删除换行符)

[root@localhost~]# echo -n -e 'hello\b\b'
hel[root@localhost~]# 
Run Code Online (Sandbox Code Playgroud)

问候

Gil*_*il' 7

退格字符 ( echo -e '\b') 将光标向左移动,但不会改变显示的内容。所以echo -e 'hello\b\b'显示hello,将光标放在单词的末尾,然后将光标向左移动两个位置,然后(由于echo没有添加换行符-n)将光标移动到下一行的开头。这在视觉上与echo hello.

观看它的行动:

for c in h e l l o '\b' '\b' '\n'; do
  echo -e "$c"; sleep 1
done
Run Code Online (Sandbox Code Playgroud)

PS不要以root身份进行这种实验。以 root 的身份用脚射击自己会比在您的常规帐户中受到更多伤害。