Кольори в Сторінках людини


63

Коли я дивлюся на сторінку чоловіка на своїй "консолі" (не в xterm), я бачу деяке забарвлення, але я не розумію цього у своїх xterm(наприклад konsole), чи є якийсь спосіб я це ввімкнути? сподіваємось, досить просте рішення?

Відповіді:


78

Вам потрібно скористатися termcap(5)функцією. Сторінка man у деяких Unices каже, що цей інструмент є застарілим і ним користуватися terminfo, але він все ще доступний для іншихterminfoє складнішим).

Що ще важливіше, lessвикористовує termcap.


Налаштування кольорів для less

Я роблю наступне, щоб lessі man(який використовує less) мав колір:

$ cat ~/.LESS_TERMCAP 
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
export LESS_TERMCAP_me=$(tput sgr0)
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4) # yellow on blue
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7) # white
export LESS_TERMCAP_ue=$(tput rmul; tput sgr0)
export LESS_TERMCAP_mr=$(tput rev)
export LESS_TERMCAP_mh=$(tput dim)
export LESS_TERMCAP_ZN=$(tput ssubm)
export LESS_TERMCAP_ZV=$(tput rsubm)
export LESS_TERMCAP_ZO=$(tput ssupm)
export LESS_TERMCAP_ZW=$(tput rsupm)
export GROFF_NO_SGR=1         # For Konsole and Gnome-terminal

І тоді по-своєму ~/.bashrcя роблю це:

# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"

# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP

ПРИМІТКА. Див. Документацію на LESS_TERMCAP_*змінні? як це працює.

Кінцевий результат

    ss man сторінки


7
Я вважаю, що причина цього працює так, як це робиться, полягає в тому, що "консоль" переводить "підкреслення" в кольоровий колір, де - як підкреслює матеріал X11. Ви можете перевірити цю теорію, ввівши echo -e "\e[04mhello world\e[0m"і консоль, і термінал X11 і побачивши різницю. Отже, вищезгаданий хак зловживає терміном cap, щоб ЛЕГО менше про те, які коди потрібно видавати для жирного / підкреслення і змушує його створювати кольорові коди втечі.
Кент Фредрік

7
Дійсно, переклад підкреслення на синій колір має історичні причини, повертаючись до текстових режимів оригінальних графічних адаптерів ПК MDA та CGA (насправді текстові режими CGA досі доступні). Ці графічні адаптери зберігають два байти на символ: один з кодом ASCII, а один - з атрибутами. MDA інтерпретував байт атрибутів як комбінації підкреслення, яскравого, мерехтливого та зворотного, тоді як CGA інтерпретував цей байт як колір переднього плану та фонового кольору. І сталося так, що атрибут MDA для підкреслення дорівнював атрибуту CGA для синього на чорному.
Celtschk

3
Це не працює в Konsole або Gnome-терміналі. Я їх встановлюю, і єдина зміна кольору - це курсор і сторінка статусу. Я опиняюся мені потрібно: export GROFF_NO_SGR=1.
CMCDragonkai

2
Це створено дуже багато підрозділів. Яка перевага перед цим простішим підходом ?
Том Хейл

1
@TomHale, в основному сумісність між системами / терміналами (і можливість ділитися сценарієм з іншими способом, який є однозначним). Якщо ви коли-небудь опиняєтесь, що працюєте на коробці, яка використовує різні коди управління, і ви переглядаєте / rsync ваш оболонку, переглядаючи його, коли всі контрольні коди жорстко закодовані, як у цьому прикладі, вони можуть працювати не так, як очікувалося в пункті призначення машина, і ви могли б отримати в результаті неприємний вихід. Звичайно, якщо сценарій коли-небудь запускатиметься лише на одній або двох відомих машинах / терміналі-emus, то жорстко кодований підхід просто чудовий.
Марк Г.

15

Ви можете вирішити цю проблему, наприклад, використовуючи інший пейджер most. manбуде фактично використовувати програму, вказану в PAGERзмінній оточення. На сторінці man (1) man:

ПІДПРИЄМНИК, ПАГЕР

Якщо встановлено $ MANPAGER або $ PAGER (у налаштуваннях використовується $ MANPAGER), його значення використовується як назва програми, що використовується для відображення сторінки вручну. За замовчуванням використовується пейджер -s.

Значення може бути простим ім'ям команди або командою з аргументами і може використовувати котирування оболонки (зворотні косої риси, одинарні лапки або подвійні лапки).

Він може не використовувати труби для з'єднання декількох команд; якщо вам це потрібно, використовуйте обгортковий скрипт, який може приймати файл для відображення або як аргумент, або на стандартному введенні.

Якщо mostвін встановлений у вашій системі, спробуйте це перед запуском man:

export PAGER=most

2
mostслід встановити, щоб це працювало.
enzotib

3
mostмає дивні клавіші ... які не можна налаштувати.
Матін Ульхак

10

За замовчуванням підкреслює біль у мене. Ця настройка значно покращує manчитання моєї сторінки:

Приклад кольорової сторінки чоловіка

Додайте у свій {~ .bashrc 'таке:

# Have less display colours
# from: https://wiki.archlinux.org/index.php/Color_output_in_console#man
export LESS_TERMCAP_mb=$'\e[1;31m'     # begin bold
export LESS_TERMCAP_md=$'\e[1;33m'     # begin blink
export LESS_TERMCAP_so=$'\e[01;44;37m' # begin reverse video
export LESS_TERMCAP_us=$'\e[01;37m'    # begin underline
export LESS_TERMCAP_me=$'\e[0m'        # reset bold/blink
export LESS_TERMCAP_se=$'\e[0m'        # reset reverse video
export LESS_TERMCAP_ue=$'\e[0m'        # reset underline
export GROFF_NO_SGR=1                  # for konsole and gnome-terminal

Для виграшу комбінуйте з export MANPAGER='less -s -M +Gg' (джерело), щоб відобразити свій відсоток у документі.


3
Як @CMCDragonkai згадував у коментарі до іншої відповіді, це потребує export GROFF_NO_SGR=1роботи над деякими термінальними емуляторами.
Бен

1
За перемогу!! Мені подобається% export MANPAGER='less -s -M +Gg'додає дисплей .
MikeyE


3

Зберігайте "найбільш" наполегливо

Відкритий термінал ( Ctrl+ Alt+ T)

  1. Встановіть "більшість".

    sudo apt-get install most
    
  2. редагувати .bashrc, введіть:

    nano ~/.bashrc
    
  3. Додайте ці рядки:

    # color man-pages persistently
    export PAGER='most'
    
  4. Зберегти

    ( Ctrl+ O) -> Enter-> ( Ctrl+ X)

  5. Оновити

    source ~/.bashrc
    
  6. Тест

    man ln
    

Це також працює в xterm.


щоб уникнути відкриття nano, ви можете додати bashrc з терміналу: sudo apt install most; echo "експортувати PAGER = 'most'" >> ~ / .bashrc; Джерело ~ / .bashrc
Буде

1

Взято з http://nion.modprobe.de/blog/archives/569-colored-manpages.html

Витяг:

$ mkdir ~/.terminfo/ && cd ~/.terminfo

Тепер отримайте terminfoопис (збережіть наступне як mostlike.txt):

# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
mostlike|manpages with color looking like most, 
    am, hs, km, mir, msgr, xenl, 
    cols#80, it#8, lines#24, wsl#40, 
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
    bel=^G, bold=\E[1m\E[31m, clear=\E[H\E[2J, cr=^M, 
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
    dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 
    dsl=\E]0;\007, ed=\E[J, el=\E[K, enacs=\E)0, fsl=^G, 
    home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 
    is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, 
    kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
    kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, 
    kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
    kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
    kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, 
    kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
    kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
    kslt=\E[4~, rc=\E8, rev=\E[7m\E[34m, ri=\EM, rmacs=^O, 
    rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, 
    rmso=\E[m, rmul=\E[m, 
    rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, 
    sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, 
    smkx=\E[?1h\E=, smso=\E[1;30m\E[47m, smul=\E[32m, 
    tbc=\E[3g, tsl=\E]0;, u6=\E[%i%d;%dR, u7=\E[6n, 
    u8=\E[?1;2c, u9=\E[c, 

Тепер компілюйте його за допомогою tic(компілятор вступу-опису terminfo):

$ tic mostlike.txt

(Ви можете видалити mostlike.txtфайл після компіляції.)

А потім просто визначте псевдонім у *rcфайлі улюбленої оболонки.

$ alias man="TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man"

Якщо ви хочете змінити файл terminfo, скористайтеся, infocmp mostlikeщоб отримати його вміст пізніше.


11
Це допомагає , якщо ви коротко джерело тут, щоб люди могли бачити , що він говорить , не виділяйте через (і в разі , якщо сайт коли - або йде вниз)
Майкл Mrozek

3
Будь ласка, надайте відповіді, а не лише посилання на відповіді. Однак дуже добре надавати посилання, які підтримують вашу відповідь. Уявіть, що я гуглив на це питання --- хороша відповідь на StackExchange швидко знайде шлях до першої сторінки результатів.
Стефан Ласєвський

Посилання мертва.
farzan

Знайшли це в mostlike.txtІнтернеті.
Каушал Моді

Як виглядає вихід?
Том Хейл

1

Беручи відповідь dirtybit в , я хотів би змінити колір виділених результатів пошуку. Це називається "режим очікування", ось приклад файлу "xterm-yellow.ti":

xterm-yellow|yellow standout mode,
# exit standout mode
  rmso=\e[m,
# begin standout mode
  smso=\e[5;30;43m,
# similar terminal
  use=xterm,

Складіть і встановіть файл:

tic xterm-yellow.ti

Додайте рядок до "~ / .profile" або подібного:

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