是否可以在bash中回显退格?
像
这样的东西echo $'stack\b'
不应该输出stac
?或者我错过了什么?
更具体地说,我想在:
中使用它ls | wc -l; echo $'\b items'
答案 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 ,您可以执行许多操作并在屏幕上的任何位置打印。