2016-05-23 8 views
-1

У меня есть код адаптера, который выполняет некоторые конкретные команды на машине Linux через SSH. Он выполняет команды и обрабатывает выходные данные каждой команды определенным образом.Обработка цветных подсказок bash

Вопрос, стоящий перед лицом, очень прост.

Я подключаюсь к приглашению Bash, которое использует цвета. Ниже приведены детали переменной PS1:

PS1="\[\033[1;34m\][\$(date +%H%M)][\[email protected]\h:\w]$\[^[[0m}\]" 

Код использует регулярное выражение, которое решает, действительный терминал, а затем переходит с командами.

Например, .*\$ считается действительным

Я не могу справиться [^[[0m} правильно и код не в состоянии идентифицировать терминал как действительный один. Если я удалю его из переменной PS1, все будет работать нормально.

Может кто-нибудь предложить, какие регулярные выражения могут быть введены, чтобы код воспринимал его как действительный терминал?

+0

Можно ли использовать расширенные регулярные выражения? Я ненавижу, что мне нужно избегать метасимволов ... – Laurel

+0

Я не уверен. Может быть, я могу. И да, я не знаю, как избежать этого. Любая подсказка для продвижения вперед? –

+0

Подождите, это PS1 регулярное выражение или нет? Можете ли вы предоставить еще несколько кодов? – Laurel

ответ

-1

Я думаю, что переменная PS1, указанная выше, сломана.

я провел следующий эксперимент в моем окне терминала:

[[email protected] ~] $ export PS1="\\[\033[1;34m\\][\$(date +%H%M)][\[email protected]\h:\w]$\\[^[[0m}\\]" 

[2137][[email protected]:~]$^[[0m} 

Как вы можете видеть ^[[0m} не интерпретируется должным образом. Я предполагаю, что это конец цвета в подсказке. Я думаю, что это должно быть \\[\033[0m\\].

Вот вся переменная PS1:

PS1="\\[\033[1;34m\\][\$(date +%H%M)][\[email protected]\h:\w]$\\[\033[0m\\]" 

После тестирования это вы получите это:

[2137][[email protected]:~]$^[[0m}export PS1="\\[\033[1;34m\\][\$(date +%H%M)][\[email protected]\h:\w]$\\[\033[0m\\]" 

[2139][[email protected]:~]$