2017-02-21 35 views
0

Новый пользователь linux здесь. неBackspace стирает подсказку bash только после ввода символов

Моего Баш строка выглядит следующим образом:

export PS1=$"\[\e[1;32m\d \t \e[1;33mฅ^\e[m\e[1;36mᵒ\e[m\e[1;33mﻌ\e[m\e[1;36mᵒ\e[m\e[1;33m^ฅ \e[1;35m\W\e[1;32m$\]" 

(это котенок ฅ^ᵒﻌᵒ^ฅ)

Теперь, когда я добавил ] до конца строки, он больше не удаляет мое Баш подсказки символов, когда приглашение пуст. Тем не менее, он удаляет мое приглашение bash, как только я начинаю вводить команду, а затем нажимаю backspace.

Есть ли способ предотвратить это, или это просто проблема с bash?

Спасибо!

ответ

2

\[...\] указывает, что содержащаяся часть не занимает пробела в приглашении. Таким образом, они должны использоваться для управляющих последовательностей xterm (\e[1;32m и т. Д.), А не текст приглашения (\d, \t и т. Д.). Попробуйте что-то вроде:

PS1='\[\e[1;32m\]\d \t\[\e[1;33m\]ฅ^\[\e[m\e[1;36m\]ᵒ\[\e[m\e[1;33m\]ﻌ\[\e[m\e[1;36m\]ᵒ\[\e[m\e[1;33m\]^ฅ\[\e[1;35m\]\W\[\e[1;32m$\]' 

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

(Вам не нужно экспортировать PS1, кстати.)

+2

Лучшее объяснение, чем моя +1 –

+0

Это работало красиво. Спасибо, что освободил меня! – spacedSparking