Intereting Posts
Как я могу обмануть процесс, думая, что файл не существует? Запретить dhcpcd устанавливать имя хоста / etc / hosts в debian сбрасывается при перезагрузке Как передавать файлы по ssh, а также изменять их разрешения на удаленном сервере без необходимости входа в систему дважды Как отфильтровать некоторые файлы из моего каталога? Как регистрировать серийные данные с отметкой времени? Исключить пути, которые заставят find жаловаться на разрешения Как преобразовать общий формат XML-формата в формат свойств String из XML-файла с помощью скрипта ksh Почему bzip2 -версия ведет себя странно? i3wm: переключение в рабочие пространства и перемещение контейнера на (одну и ту же) карту рабочего пространства в разные рабочие пространства Отличаются ли файлы bz от bz2 и как сделать bz-файлы вместо bz2? Почему разница в tar czf в Debian 8.5 и 8.7? Запустить окно Iceweasel (Firefox) без декорации Есть ли более новая версия gcc в красной шляпе? sed удалять пространство

изменить цвет подсказки в зависимости от пользователя или root в zsh

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

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

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

Вот почему:

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

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

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

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

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