Warna dalam Halaman Man

63

Ketika saya melihat halaman manual di 'konsol' saya (bukan sebuah xterm) saya melihat beberapa warna, tetapi saya tidak mendapatkan ini di xterm(misalnya konsole) saya apakah ada cara saya bisa mengaktifkan ini? semoga solusi yang cukup sederhana?

xenoterracide
sumber

Jawaban:

78

Anda perlu menggunakan termcap(5)fitur ini. Halaman manual pada beberapa Unices mengatakan alat ini sudah usang dan untuk digunakan terminfo, tetapi masih tersedia pada orang lain (dan terminfolebih rumit).

Lebih penting lagi, lesskegunaan termcap.


Pengaturan warna untuk less

Saya melakukan hal berikut sehingga lessdan man(yang menggunakan less) akan memiliki warna:

$ 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

Dan kemudian di saya ~/.bashrc, saya melakukan ini:

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

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

CATATAN: Lihat Dokumentasi tentang LESS_TERMCAP_*variabel? untuk cara kerjanya.

Hasil akhir

    ss dari halaman manual

Stefan Lasiewski
sumber
7
Saya percaya alasan ini berfungsi seperti itu, adalah karena 'konsol' menerjemahkan 'menggarisbawahi' ke dalam warna, di mana X11 mendukung garis bawah. Anda dapat menguji teori ini dengan mengetikkan echo -e "\e[04mhello world\e[0m"konsol dan terminal X11 Anda dan melihat perbedaannya. Jadi penyalahgunaan hacking di atas termcap untuk berbohong kepada KURANG tentang kode apa yang perlu dipancarkan untuk huruf tebal / garis bawah dan memaksanya untuk menghasilkan kode pelarian warna.
Kent Fredric
7
Memang, terjemahan garis bawah menjadi biru memiliki alasan historis, kembali ke mode teks dari adapter grafis PC asli MDA dan CGA (sebenarnya mode teks CGA masih tersedia hingga saat ini). Adapter grafis itu menyimpan dua byte per karakter: Satu memegang kode ASCII, satu memegang atribut. MDA mengartikan byte atribut sebagai kombinasi garis bawah, cerah, berkedip dan terbalik, sedangkan CGA mengartikan byte tersebut sebagai warna foreground dan background. Dan kebetulan bahwa atribut MDA untuk garis bawah sama dengan atribut CGA untuk biru pada hitam.
celtschk
3
Ini tidak berfungsi di Konsole atau Gnome-terminal. Saya mengaturnya, dan satu-satunya perubahan warna adalah untuk kursor dan halaman status. Aku ternyata saya perlu: export GROFF_NO_SGR=1.
CMCDragonkai
2
Itu banyak sub-shell yang dibuat. Apa keuntungan dari pendekatan yang lebih sederhana ini ?
Tom Hale
1
@ TomHale, terutama kompatibilitas lintas sistem / terminal (dan kemampuan untuk berbagi skrip dengan orang lain dengan cara yang tidak ambigu). Jika Anda pernah menemukan diri Anda mengerjakan kotak yang menggunakan kode kontrol yang berbeda, dan Anda scp / rsync profil shell Anda ke sana, ketika kode kontrol semua hard-coded seperti dalam contoh itu, mereka mungkin tidak bekerja seperti yang diharapkan di tujuan mesin, dan Anda bisa berakhir dengan output kacau. Tentu saja, jika skrip hanya akan berjalan pada satu atau dua mesin yang dikenal / terminal-emus, maka pendekatan hard-coded baik-baik saja.
Mark G.
15

Anda dapat mengatasi masalah ini dengan menggunakan pager yang berbeda, misalnya most. manakan benar-benar menggunakan program yang ditentukan dalam PAGERvariabel lingkungan. Dari halaman manual man (1) :

MANPAGER, PAGER

Jika $ MANPAGER atau $ PAGER diset ($ MANPAGER digunakan dalam preferensi), nilainya digunakan sebagai nama program yang digunakan untuk menampilkan halaman buku panduan. Secara default, pager -s digunakan.

Nilai tersebut dapat berupa nama perintah sederhana atau perintah dengan argumen, dan dapat menggunakan kutipan shell (garis miring terbalik, tanda kutip tunggal, atau tanda kutip ganda).

Mungkin tidak menggunakan pipa untuk menghubungkan beberapa perintah; jika Anda membutuhkannya, gunakan skrip pembungkus, yang mungkin membawa file untuk ditampilkan sebagai argumen atau pada input standar.

Jika mostdiinstal pada sistem Anda, coba ini, sebelum meluncurkan man:

export PAGER=most
kaleng kalengan
sumber
2
mostharus diinstal, agar ini berfungsi.
enzotib
3
mostmemiliki keybindings aneh ... yang tidak dapat dikonfigurasi.
Mateen Ulhaq
10

Menggarisbawahi default melukai mataku. Pengaturan ini sangat meningkatkan manpembacaan halaman saya :

Contoh halaman manual berwarna

Tambahkan berikut ini di `~ .bashrc 'Anda:

# 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

Untuk menang, gabungkan dengan export MANPAGER='less -s -M +Gg' (sumber) untuk menampilkan persentase Anda ke dalam dokumen.

Tom Hale
sumber
3
Seperti @CMCDragonkai disebutkan dalam komentar pada jawaban lain, ini mengharuskan export GROFF_NO_SGR=1untuk bekerja pada beberapa emulator terminal.
Ben
1
Untuk kemenangan!! Saya suka tampilan% export MANPAGER='less -s -M +Gg'tambah.
MikeyE
5

Jika Anda menggunakan Oh My Zsh , Anda dapat menambahkan colored-man-pageske pluginsarray di .zshrcfile Anda .

gemetar
sumber
3

Simpan 'sebagian besar' secara terus-menerus

Buka Terminal ( Ctrl+ Alt+ T)

  1. Instal 'terbanyak'.

    sudo apt-get install most
    
  2. edit .bashrc, ketik:

    nano ~/.bashrc
    
  3. Tambahkan baris ini:

    # color man-pages persistently
    export PAGER='most'
    
  4. Menyimpan

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

  5. Menyegarkan

    source ~/.bashrc
    
  6. Uji

    man ln
    

Ini juga berfungsi di xterm.

Denis Griffin
sumber
untuk menghindari pembukaan nano, Anda dapat menambahkan ke bashrc dari terminal: sudo apt install most; echo "export PAGER = 'most'" >> ~ / .bashrc; source ~ / .bashrc
Will
1

Diambil dari http://nion.modprobe.de/blog/archives/569-colored-manpages.html

Kutipan:

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

Sekarang dapatkan terminfodeskripsi (simpan yang berikut ini sebagai 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, 

Sekarang kompilasi menggunakan tic( kompilasi deskripsi-entri terminfo):

$ tic mostlike.txt

(Anda mungkin ingin menghapus mostlike.txtfile setelah kompilasi.)

Dan kemudian hanya mendefinisikan alias dalam *rcfile shell favorit Anda.

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

Jika Anda ingin memodifikasi file terminfo, gunakan infocmp mostlikeuntuk mendapatkan kontennya nanti.

kotor
sumber
11
Ini membantu jika Anda merangkum sumbernya di sini, sehingga orang dapat melihat apa yang dikatakannya tanpa harus mengklik (dan seandainya situs tersebut pernah turun)
Michael Mrozek
3
Harap berikan jawaban, bukan hanya tautan ke jawaban. Sangat baik untuk menyediakan tautan yang mendukung jawaban Anda. Bayangkan saya mencari di Google untuk pertanyaan ini --- jawaban yang baik di StackExchange akan segera menemukan jalannya ke halaman pertama hasil.
Stefan Lasiewski
Tautannya sudah mati.
farzan
Menemukan ini mostlike.txtonline
Kaushal Modi
Seperti apa outputnya?
Tom Hale
1

Mengambil jawaban dirtybit , saya ingin mengubah warna hasil pencarian yang disorot. Ini disebut "mode menonjol", berikut adalah contoh file "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,

Kompilasi dan instal file:

tic xterm-yellow.ti

Tambahkan baris ke "~ / .profile" atau yang serupa:

TERM=xterm-yellow
Steven Penny
sumber