Согласно этому сообщению StackOverflow , в KornShell возможно иметь цветную подсказку. Я не смог понять, как это сделать. Я могу использовать цвет:
echo -e "\033[34mLinux\033[00m"
выдает синий вывод "Linux", как:
printf "\033[34mLinux\033[00m"
Однако, когда я включаю управляющие коды в мою PS1
переменную подсказки, они не экранируются. Что мне нужно сделать, чтобы получить цветную подсказку? Помимо того, что это что-то вроде присоски для eyecandy, я обнаружил, что цветное приглашение полезно при визуальном разборе вывода.
Вам нужно поместить буквенный escape-символ в
PS1
переменную. Ksh88 и клоны, такие как pdksh и mksh (более старые версии), не имеют буквального синтаксиса для управляющих символов, кроме как черезprint
встроенные. Mksh понимает\e
для выхода, но pdksh требует восьмеричного кода\033
.ATT ksh93 представляет синтаксис
$'…'
с обратной косой чертой (также доступен в mksh начиная с R39b). Вы можете использовать обратную косую черту, чтобы поместить управляющие символы в эти литералы.источник
mksh
также поддерживает$'…'
- по общему признанию, потому что Дейв Корн (Korn в Korn Shell) настоял, чтобы я добавил это.Я использую это
mksh
для пользователяshell
:& немного отличается
shell
дляroot
:Поскольку специальные символы не копировались, вот пастинная вставка как для обычного пользователя, так и для пользователя root.
источник
В ответах людей происходит несколько вещей, каждый из которых имеет свой синтаксис.
Escape-последовательности для вашей терминальной программы приведены в документации.
Как кодировать escape-последовательности терминала в переменной PS1, например, \ e или литерал escape. Это зависит от оболочки.
Как добавить изменяющуюся информацию в приглашение, например, имя хоста, текущий каталог и т. Д. Это также зависит от оболочки. Вы можете использовать специальные последовательности с обратной косой чертой, такие как \ w, для рабочего каталога, или вам может потребоваться назвать переменные окружения или встроить командные строки в строку.
Как указать оболочке, какие символы печатают, а какие нет. Оболочка не знает, где ваши конечные escape-последовательности начинаются и заканчиваются. Если в оболочке есть редактор командной строки или что-то подобное, ей нужно знать, какие символы печатать, чтобы знать, где находится курсор. Без этой детали ваша подсказка может выглядеть правильно, но редактирование может вести себя странно.
В bash вы ставите \ [перед каждой escape-последовательностью и \] после.
В ksh вы выбираете один непечатаемый символ ASCII, который не встречается нигде в строке. В начале строки вы пишете этот символ, за которым следует возврат каретки ASCII. Затем вы пишете один и тот же символ до и после каждой escape-последовательности. z3ntu выбрал \ a в качестве символа маркера.
источник
Благодаря предыдущим ответам и другим источникам я смог придумать такие:
Корн оболочка подскажет:
Bash подскажите:
Они дают одинаковые цветные подсказки (да, я говорю по-английски Queen;)) в формате:
Эквивалент DOS (хотя нет вариантов цвета):
который дает:
«>» Сохраняет это «DOSsy», а не «nixy» с «$», но если вы хотите вместо этого использовать символ («$»), то это будет:
При условии, что ваша учетная запись имеет необходимые разрешения, чтобы постоянные 'nixies' добавили к ним «export»:
и измените DOSsy на:
или же
источник