змінити колір підказки залежно від користувача або root у zsh


13

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

Відповіді:


8

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

Це повинно працювати, щоб змінити ім'я хоста ( %m) іншого кольору (червоного), якщо ви root. У мене немає оболонки zsh, щоб перевірити її, але це виглядає правильно.

Ось чому:

%(x.true.false):: Виходячи з оцінки першого терміна терміналу, виконайте правильне твердження. '!' вірно, якщо оболонка має пільгу. Насправді %#це ярлик для %(!.#.%).

%{\e[1;31m%} %m %{\e[0m%}:: the %{\e[X;Ym%}- послідовність кольорового відтворення з 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.