Різні кольорові підказки для різних машин при використанні терміналу / ssh?


11

У мене є 5 машин, на які я постійно сшшю, щоб виконувати роботу. Це стає все більш неприємним, коли я видаю неправильні команди на неправильні поля. На щастя, я ще нічого поганого не зробив. Мені хотілося знати, чи є хак, який я можу жорстко кодувати, який відображатиме мою підказку в різних кольорах на основі машини, в яку я входжу? Такі як синій для desktop1, фіолетовий для ноутбука, червоний для сервера тощо? Чи можливо це?

В даний час я використовую цю команду export PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m", взята звідси http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix /, але це, очевидно, не працює через ssh.

Крім того, якщо у вас є якісь круті поради щодо башти, які допоможуть мені полегшити зір, буде чудовим. Я отримав цю пораду, яка забарвлює сторінки чоловіка.

http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/


1
Рядок name@ ** server** перед кожною командою не передає, на якому сервері увімкнено? До цього потрібно звикнути, але найкращий існуючий спосіб
TheLQ

Над якою операційною системою працює ваш ноутбук?
СамК

1
name @ сервер особливо корисний при використанні таких речей, як хмара Amazon, оскільки він змінює кожен завантажувач і не передає мети поля або легко запам'ятовується імені (користувач @ ip-xxxx). Тож +1 за це питання :)
Rafiq Maniar

Відповіді:


11

Використання метод , який я повинен генерувати колір для імені хоста з імені хоста. Вибирати не так багато кольорів, тому це легко створить зіткнення, але це корисно для невеликої кількості машин, якими я керую.

hostnamecolor=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 30 + (total % 6)}')

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\[\e[${hostnamecolor}m\]\]\h \[\e[32m\]\w\[\e[0m\]\n$ '

Перший рядок генерує число від 30 (inc) до 36 (exc) від імені хоста машини. Другий рядок застосовує його до підказки із ім'ям користувача та шлях зеленим кольором (32) та ім'ям хоста у створеному кольорі.

Кольори фону не встановлені, і я виключаю блакитний (36) та білий (37) з переднього плану, щоб уникнути сутичок із фоном терміналів, які я використовую.


Отже, він може генерувати однаковий колір як для переднього плану, так і для фону?
Кріс Ш

Колір фону не генерується. Але ви вірні, що створений колір може відповідати фону. Я виключаю білий (37) і блакитний (36), оскільки вони не працюють добре з фоновими терміналами, якими я користуюся. Я відредагував відповідь, щоб зробити це зрозумілим.
Ден Мідвуд

3

Ви на правильному шляху. Я використовував метод, детально описаний на сторінці, на яку ви посилаєтесь, і детально описав, як саме в своєму блозі . Він працює для мене за допомогою PuTTY з вікна вікна, а також SSH з одного сервера CentOS на інший. Якщо він не працює для вас, і ви впевнені, що правильний синтаксис був правильним, він може перейти на ваш клієнт SSH.


Привіт, я змінив .bashrc і розумію, що я можу змінити кольори на місцевому рівні. Чого я хотів, це те, що коли я переходжу на інший комп’ютер, швидко змінюється колір. Я знаю, що термінал не дізнається автоматично, тому я шукав вказівники, щоб це відбулося.
косати

1
Редагувати: добре, так, ви праві. Якщо файл .bashrc буде змінено на кожному комп'ютері, коли ви ssh, він відображатиме налаштовані кольори. Я не редагував потрібний файл. Спасибі. Вважайте вирішеним.
косати

2
Якщо ця відповідь призвела вас безпосередньо до рішення, то розгляньте, як позначити це як прийнятий відповідь, натиснувши контур галочки зліва від відповіді.
Кевін М

1

На моїй роботі у нас є різні етапи серверів

розвиток інсценування виробництва

Для постановки я використовую червоний підказку як продакшн та зелений Зараз усі машини постановки мають stg у домені.

Так продавець був би

web1.domain.com
web2.domain.com

Постановка / Dev була б

stg-web1.domain.com
stg-web2.domain.com
dev-web1.domain.com
etc

Це дійсно спрацює лише для redhat / centos

Але для серверів prod у мене є наступне

/etc/sysconfig/bash-prompt-xterm

Всередині є

export PS1="\[[\e[1;31m\]\u@\[\e[1;31m\]\h\[\e[0m\] \W] "

Це підкаже червоний колір. Тепер ви не можете торкатися / etc / bashrc, а всі інші машини, які не продаються, залишатимуться звичайним кольором переднього плану, який ви використовуєте .. але я зробив їх зеленими

if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
                fi
                ;;

Що якщо блок повинен бути там .. Я просто змінив колір на іншій частині, щоб він був зеленим .. 33 - зеленим


0

Ви можете змінити bash.rc на кожній машині, щоб надати різні кольори підказок. Або якщо у вас достатньо привілеїв, змініть конфігурацію sshd, щоб дозволити передачу середовища користувача через PermitUserEnvironmentдирективу.


0

Ми працюємо над більш всеосяжним рішенням на основі контрольної суми імені хоста в цій суті, включаючи 256 сумісність кольорів. Окрім випадку, коли ви насправді зацікавлені у визначенні конкретного кольору для кожного з ваших серверів, я вважаю, що це одна з таких проблем "це те, що у нас є комп'ютери", тому отримання "випадкових" кольорів визначається для вас контрольні суми повинні бути хорошим підходом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.