Повторение обратного пространства

Можно ли откликнуть обратное пространство в bash?

Что-то вроде

echo $'stack\b'

Не следует выводить stac? Или мне что-то не хватает?

В частности, я хотел бы использовать это в:

ls | wc -l; echo $'\b items'

Ответы

Ответ 1

\b заставляет курсор двигаться влево, но он не стирает символ. Выделите пробел, если хотите его удалить.

Для некоторых дистрибутивов вам также может понадобиться использовать переключатель -e echo:

  -e     enable interpretation of backslash escapes

Итак, это будет выглядеть как

 echo -e 'stack\b '

Кроме того, files=(*) ; echo "${#files[@]} items".

Ответ 2

Итак, чтобы ответить на фактический вопрос о backspaces, это будет имитировать обратное пространство:

echo -e "\b \b"

Он переместит символ назад, а затем эхо-пробел перепишет любой персонаж, а затем снова вернется - при удалении предыдущего символа. Он не будет возвращать строку, поэтому выход до этого не должен создавать новую строку:

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

Ответ 3

Это не совсем то, о чем вы просите, но также в строке ответа Игнасио вы можете использовать для этого случая:

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

AFAIK вы не можете напечатать символ, который удаляет его раньше, даже не распечатывая char, номер шестнадцатеричного кода которого соответствует обратному пространству. Однако вы можете вернуться назад и напечатать пустое место для удаления. С cput вы можете делать много вещей и печатать там, где хотите на экране.