Повторение обратного пространства
Можно ли откликнуть обратное пространство в 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 вы можете делать много вещей и печатать там, где хотите на экране.