4

Я хочу настроить мою подсказку bash, используя управляющие коды ANSI, и заметил, что в некоторых документах коды заключены в \[ и \] а в других - нет.

Например, они работают одинаково хорошо для меня:

PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '

Интересно, какая разница?

2 ответа2

8

Разница в том, что в тех, у которых нет \[ и \] , bash не сможет отследить реальную длину приглашения, и различные визуальные сбои проявятся со временем.

6

Это хорошо объяснено на этой странице:

Эти последовательности сообщат bash, что вложенные символы не занимают места в строке, что позволит продолжить корректную работу переноса слов. Без них вы получите красивую подсказку, которая испортит экран, если вы наберете команду, которая приближается к крайней правой части терминала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .