Да, это работает как положено (символ x удаляется):
$ echo -e 'ax\bc'
ac
И да, это "похоже", что при этом теряется символ возврата на одну позицию:
$ echo -e 'abx\b'
abx
Обратите внимание, что символ возврата(\b
)не совпадает с клавишей клавиатуры Backspace .
Клавиатура Backspace печатает ^?
с Ctrl -VBackspace .
Многие редакторы интерпретируют это как возвращение и удаление персонажа. Это намного сложнее, чем просто напечатать пробел, вся строка вправо должна быть перемещена на один пробел (или два для широких символов, или ноль для управляющих символов )влево для каждого стираемого символа, или, если стертый символ представляет собой новую строку, переместите всю строку на одну строку вверх. Нет, это не простой символ, это целая процедура, связанная с клавишей Backspace .
Однако нет, на самом деле в консоль записывается символ возврата.
Посмотреть, что передается на консоль, можно с помощьюod
:
$ echo -e 'abx\b' | od -vAn -tx1c
61 62 63 08 0a
a b x \b \n
Итак, что происходит?
abx
записывается в консоль. abx
в линейный буфер. \b
записывается в консоль. \b
заставляет буфер строки консоли перемещаться на один символ назад. \n
выводится на консоль. Это стандартный способ работы консолей.
Взгляните на это:
$ printf 'abcdef\b\b\b \n'
abc ef
Символ d
заменяется пробелом.
Почему 'ax\bc'
удаляет x?
Поскольку символ c
перезаписывает символ x
.
Я попытаюсь ответить на изначальную проблему, связанную с тем, что polybar не компилируется. Скорее всего, проблема не в версии, установленной через apt
. Эта конкретная проблема возникает только в системах, где xcb-proto
— это версия 1.12, а libxcb-randr0-dev
— 1.11, но, поскольку все версии 1.13.1, все должно быть в порядке.
Проблема в ваших журналах:
ERROR: could not calc required_start_align of Struct "xcb.Setup
Появился раньше, здесь . Там проблема заключалась в том, что анаконда использовалась для python, что вызывало множество проблем.
В вики есть инструкции о том, как скомпилировать polybar при установленной анаконде (без удаления анаконды ). Самый простой способ, о котором сообщают люди, — это запустить conda deactivate
в терминале, где вы компилируете polybar перед компиляцией. Также убедитесь, что вы полностью повторно загрузили архив tar -(или сделали чистый клон git )перед сборкой.