回应退格

sid*_*yll 25 bash echo

是否有可能在bash中回显退格?

就像是

echo $'stack\b'
Run Code Online (Sandbox Code Playgroud)

不应该输出stac?或者我错过了什么?

更具体地说,我想在以下方面使用它:

ls | wc -l; echo $'\b items'
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 39

\b使光标向左移动,但不会擦除字符.如果要删除它,请输出空格.

对于某些发行版,您可能还需要使用以下-e开关echo:

  -e     enable interpretation of backslash escapes
Run Code Online (Sandbox Code Playgroud)

所以它看起来像

 echo -e 'stack\b '
Run Code Online (Sandbox Code Playgroud)

还有files=(*) ; echo "${#files[@]} items".


小智 5

因此,要回答有关退格的实际问题,将模拟退格:

echo -e "\b \b"
Run Code Online (Sandbox Code Playgroud)

它将使字符向后移动,然后回显一个空格,覆盖那里的任何字符,然后再次向后移动-实际上删除了先前的字符。但是它不会返回一行,因此在此之前的输出不应创建新行:

echo -n "blahh"; echo -e "\b \b"
Run Code Online (Sandbox Code Playgroud)