Настроювання оболонки bash: Жирна / кольорова команда


13

Є ряд навчальних посібників / публікацій в Інтернеті (наприклад, http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) про те, як налаштувати підказку в bash, встановивши PS1. Чи є спосіб налаштувати колір / жирність команди, яку я набираю?

Іншими словами, як приклад дозволяє сказати, що я хотів зелену підказку, сміливу синю команду, а потім виводить будь-які кольори за замовчуванням. У наведеному нижче прикладі я вже знаю, як зробити " joe>" шоу зеленим, синім, жирним, незалежно від налаштування PS1. Але чи є спосіб, як я можу зробити git statusшоу, наприклад, сміливим?

joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...

Якщо ви хочете по-справжньому хорошої оболонки, ви повинні використовувати zsh, те, чого ви хочете досягти, було б дуже простоpreexec() { printf '\e[0m' }
bollovan

3
@bollovan - "Дійсно добре" є трохи суб'єктивним, я вважаю, що це справді огидно через його роздуття та невідповідності POSIX. Але, що б не плавав твій човен.
Кріс Даун

@ChrisDown плаваючий човен пливе на вашому човні - ніколи його не чув, дуже цікаво.
n611x007

Відповіді:


13

Вам слід залишити кольоровий слід після PS1 (запустити його після >у своєму прикладі), а потім скористатися DEBUGпасткою bash, щоб очистити колір перед запуском команди (але після натискання клавіші enter у своїй оболонці. Спробуйте щось подібне :

shopt -s extdebug
trap "tput sgr0" DEBUG

для когось незнайомця уникати кодів: чи збереже це початкове забарвлення команди (наприклад, ls --color=alwaysкольоровим)?
n611x007

@naxa - Так, оскільки це явно встановлює кольорові коди (за винятком кольорів, пофарбованих у кольоровий термінал за замовчуванням, який набуде чинності лише після першого кольору).
Кріс Даун

Цей трюк, здається, заважає заповненню вкладок (друкує дивні речі на кшталт ^[(B^[[m) Однак це відбувається лише в деяких системах: я протестував це на двох системах, на обох з запущеною Ubuntu 12.04 LTS, і лише одна з них мала перешкоди.
musiphil

7

Для повноти, ось як встановити колір запиту та колір введення командного рядка в bash. Покладіть ці рядки у своє .bashrc.

PS1='\[\e[1;34m\]\w\$ \[\e[0;32m\]'
trap 'printf \\e[0m' DEBUG

DEBUG пастка, як запропонував Кріс Даун , використовується для скидання текстових атрибутів. Він призначений для налагодження, але також корисно виконувати код перед виконанням команди, введеної користувачем .

У швидкому налаштуванні:

  • \[…\] використовується навколо послідовностей евакуації, щоб сказати bash, що вони не використовують жодну екранність нерухомості (без них екран стане пошкодженим, коли bash потрібно перемалювати підказку).
  • \e[…mде число, або більш загально послідовність чисел, розділених крапками з комою, є послідовністю відходження, що надсилається до терміналу для впливу на колір та інші атрибути наступного тексту. Наприклад, 1;34встановлює жирний синій колір; 0;32скидає всі атрибути, потім перемикає колір на зелений. Налаштуйте за смаком.
  • \w\$надрукувати поточний каталог та $або #. Звичайно, ви можете змінити це на все, що завгодно, і вставити зміни атрибутів тексту між ними, якщо хочете.
  • В кінці є остаточна зміна атрибута, яка визначає колір введення тексту.

FYI, кольорові коди / послідовності баш можна подивитися тут: misc.flogisoft.com/bash/tip_colors_and_formatting
kaiwan

0

Я просто дізнаюся про команди BASH, і я сидів тут, граючи з кольоровими командами у своїй версії. Я вирішив це рішення:

Використовуючи цю команду:

PS1='\[\e[0:36m\]\h>\[\e[0;31m\]'

Deconstruct: PS1 =: запускає команду PS1

'': містити команду в одиничні лапки (тому BASH не вважає, що це команда для неї)

\: кожна окрема команда починається з цього

[]: містять кожну команду

\ e (також може бути \ 033 символом втечі ASCII): запускає кольорову команду

Кольорова команда передує тому, до чого вона стосується.

[\ е [0; 36м]: циан

\ h: ім'я хоста

'>': друкується після імені хоста

[\ e [0; 31м]: червоний

Мабуть, червона команда в кінці робить введення червоним. Просто змініть кольори на свій смак, і саме це ви шукаєте.

Також цей сайт мені трохи допоміг:

https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/

Моя версія: GNU bash, т. 4.2.46

Піклуватися,

Ласка

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