Я хочу настроить свою подсказку удара использование управляющих кодов ANSI и заметил, что в некоторых практических руководствах в коды включают \[
и \]
в то время как в других они не.
Например, они работают одинаково хорошо на меня:
PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '
Интересно, какое значение это имеет?
Различие то, что в тех без \[
и \]
, удар будет не мочь отследить реальную продолжительность подсказки, и различные визуальные незначительные сбои будут показывать себя со временем.
Это объяснено приятно на этой странице:
Эти последовательности скажут удару, что вложенные символы не занимают места на строке, которая позволит переходу на новую строку продолжать работать правильно. Без них Вы закончите с привлекательной подсказкой, которая испортит экран, если Вы, окажется, будете вводить в команде, которая приближается к крайне правым терминала.