回应退格

时间:2011-04-19 23:30:27

标签: bash echo

是否可以在bash中回显退格?

这样的东西
echo $'stack\b'

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

更具体地说,我想在:

中使用它
ls | wc -l; echo $'\b items'

3 个答案:

答案 0 :(得分:34)

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

对于某些发布,您可能还需要使用-e echo切换:

  -e     enable interpretation of backslash escapes

所以它看起来像

 echo -e 'stack\b '

此外,files=(*) ; echo "${#files[@]} items"

答案 1 :(得分:3)

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

echo -e "\b \b"

它将字符移回一个,然后回显一个空格覆盖那里的任何字符,然后再移回 - 实际上删除了前一个字符。它不会回到一条线,所以之前的输出不应该创建一个新的行:

echo -n "blahh"; echo -e "\b \b"

答案 2 :(得分:1)

这不是你要求的,但在Ignacio的回答中,你可以使用这个案例:

echo "$(ls | wc -l) items"

AFAIK你不能打印删除之前的字符,甚至不能打印其hexadecimanl编号对齐退格的字符。但是,您可以向后移动并打印要删除的空白区域。使用 cput ,您可以执行许多操作并在屏幕上的任何位置打印。