изменить цвет приглашения в зависимости от пользователя или root в zsh


13

в zsh вы можете иметь %#в своей переменной PS1(или любой другой PROMPTпеременной), что в основном означает display, %если пользователь, или display, #если root. Мне интересно, есть ли способ повлиять на это так, чтобы %или #изменял цвета в зависимости от того, пользователь это или root (красный для root, синий для пользователя), очевидный способ - просто изменить PS1мой root, ~/.zshrcно учитывая это уже специальный символ, мне интересно, нет ли способа, которым я мог бы использовать одно PS1и то же для обоих ... что-то конкретное, %#например, для zsh (я уверен, что есть и другие хаки, которые я тоже мог бы сделать как если тогда заявление).

Ответы:


8

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

Это должно работать, чтобы изменить имя хоста ( %m) другого цвета (красный), если вы являетесь пользователем root. У меня нет zsh-оболочки для тестирования, но она выглядит правильно.

Вот почему:

%(x.true.false):: Основываясь на оценке первого триместра, выполните правильное утверждение. '!' Значение true, если оболочка является привилегированной. На самом деле %#это ярлык для %(!.#.%).

%{\e[1;31m%} %m %{\e[0m%}:: the %{\e[X;Ym%}- это escape-последовательность цвета с X в качестве форматирования (жирным шрифтом, подчеркиванием и т. д.) и Y в качестве цветового кода. Обратите внимание, что вам нужно открыть и закрыть последовательность вокруг термина, который вы ищете, чтобы изменить цвет, иначе все после этой точки будет любого цвета. Я добавил пробелы вокруг быстрого термина %mдля ясности.

http://www.nparikh.org/unix/prompt.php имеет больше опций и подробностей о таблицах цветов и других доступных опциях для zsh.


6
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "

%(#проверяет, работает ли оболочка от имени root. Изменение этого параметра позволяет %(!проверить, работает ли оболочка с повышенными привилегиями (что охватывает такие вещи, как newgrp, но не вход в систему с правами root).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.