Colori nelle pagine man


63

Quando guardo una pagina man nella mia 'console' (non una xterm) vedo un po 'di colorazione, ma non la capisco nella mia xterm(es. konsole) C'è un modo per abilitarlo? si spera una soluzione abbastanza semplice?

Risposte:


78

Devi usare la termcap(5)funzione. La pagina man di alcuni Unices dice che questo strumento è obsoleto e da usare terminfo, ma è ancora disponibile su altri (ed terminfoè più complicato).

Ancora più importante, lessutilizza termcap.


Impostazione dei colori per less

Faccio quanto segue in modo che lesse man(che utilizza less) avrà colore:

$ 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

E poi nel mio ~/.bashrc, faccio questo:

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

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

NOTA: consultare la documentazione sulle LESS_TERMCAP_*variabili? per come funziona.

Il risultato finale

    pagina man di ss


7
Credo che la ragione per cui funziona così, è perché "console" traduce "sottolineato" in colore, dove - come roba X11 supporta le sottolineature. Puoi testare questa teoria digitando echo -e "\e[04mhello world\e[0m"sia la console che il tuo terminale X11 e vedendo la differenza. Quindi questo hack di cui sopra abusa di termcap per mentire MENO su quali codici deve emettere per grassetto / sottolineato e lo costringe invece a produrre codici di escape colore.
Kent Fredric,

7
In effetti, la traduzione di sottolineatura in blu ha ragioni storiche, tornando alle modalità di testo degli adattatori grafici PC originali MDA e CGA (in realtà le modalità di testo CGA sono ancora disponibili fino ad oggi). Quelle schede grafiche memorizzavano due byte per carattere: uno con il codice ASCII, uno con gli attributi. L'MDA ha interpretato il byte dell'attributo come combinazioni di sottolineato, luminoso, lampeggiante e inverso, mentre il CGA ha interpretato quel byte come colore di primo piano e di sfondo. Ed è successo che l'attributo MDA per sottolineatura era uguale all'attributo CGA per blu su nero.
Celtschk,

3
Questo non funziona in Konsole o Gnome-terminal. Li ho impostati e l'unico cambio di colore è per il cursore e la pagina di stato. Ho scopre ho bisogno: export GROFF_NO_SGR=1.
CMCDragonkai,

2
Sono state create molte sotto-shell. Qual è il vantaggio rispetto a questo approccio più semplice ?
Tom Hale,

1
@TomHale, principalmente compatibilità tra sistemi / terminali (e la possibilità di condividere lo script con altri in modo inequivocabile). Se ti ritrovi a lavorare su una scatola che utilizza codici di controllo diversi e scp / rsincronizza il tuo profilo shell su di esso, quando i codici di controllo sono tutti hardcoded come nell'esempio, potrebbero non funzionare come previsto sulla destinazione macchina e potresti finire con un risultato confuso. Naturalmente, se lo script verrà eseguito solo su una o due macchine note / terminal-emus, l'approccio hard-coded va bene.
Mark G.

15

È possibile risolvere questo problema utilizzando ad esempio un altro cercapersone most. manutilizzerà effettivamente il programma specificato nella PAGERvariabile di ambiente. Dalla pagina man man (1) :

MANPAGER, PAGER

Se è impostato $ MANPAGER o $ PAGER (si preferisce $ MANPAGER), il suo valore viene utilizzato come nome del programma utilizzato per visualizzare la pagina del manuale. Per impostazione predefinita, viene utilizzato il cercapersone -s.

Il valore può essere un semplice nome di comando o un comando con argomenti e può usare le virgolette della shell (barre rovesciate, virgolette singole o virgolette doppie).

Non può usare pipe per collegare più comandi; se necessario, utilizzare uno script wrapper, che può richiedere la visualizzazione del file come argomento o su input standard.

Se mostè installato sul tuo sistema, prova questo, prima di avviare man:

export PAGER=most

2
mostdovrebbe essere installato, affinché funzioni.
enzotib,

3
mostha strane combinazioni di tasti ... che non sono configurabili.
Mateen Ulhaq,

10

Le sottolineature predefinite mi fanno male agli occhi. Questa configurazione migliora notevolmente la manlettura della mia pagina:

Esempio di pagina man colorata

Aggiungi quanto segue nel tuo `~ .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

Per la vittoria, combinalo con export MANPAGER='less -s -M +Gg' (fonte) per visualizzare la tua percentuale nel documento.


3
Come @CMCDragonkai ha menzionato in un commento su un'altra risposta, questo richiede export GROFF_NO_SGR=1di funzionare su alcuni emulatori terminali.
Ben

1
Per la vittoria!! Adoro il display% export MANPAGER='less -s -M +Gg'aggiunge.
MikeyE,

5

Se si utilizza Oh My Zsh , è possibile aggiungere colored-man-pagesl' pluginsarray nel .zshrcfile.


3

Salva "più" in modo persistente

Apri terminale ( Ctrl+ Alt+ T)

  1. Installa 'most'.

    sudo apt-get install most
    
  2. modifica .bashrc, digita:

    nano ~/.bashrc
    
  3. Aggiungi queste righe:

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

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

  5. ricaricare

    source ~/.bashrc
    
  6. Test

    man ln
    

Questo funziona anche in xterm.


per evitare l'apertura di nano, è possibile aggiungere a bashrc dal terminale: sudo apt install most; echo "export PAGER = 'most'" >> ~ / .bashrc; fonte ~ / .bashrc
Sarà il

1

Tratto da http://nion.modprobe.de/blog/archives/569-colored-manpages.html

Estratto:

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

Ora ottieni la terminfodescrizione (salva quanto segue come 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, 

Ora compilarlo usando tic(il compilatore della descrizione della voce terminfo):

$ tic mostlike.txt

(Potresti voler eliminare il mostlike.txtfile dopo la compilazione.)

E poi basta definire un alias nel *rcfile della tua shell preferita.

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

Se si desidera modificare il file terminfo, utilizzare infocmp mostlikeper ottenerne il contenuto in un secondo momento.


11
Aiuta se riassumi la fonte qui, in modo che le persone possano vedere cosa dice senza dover fare clic (e nel caso in cui il sito non dovesse mai andare giù)
Michael Mrozek

3
Fornisci le risposte, non solo i collegamenti alle risposte. È comunque molto buono fornire link a supporto della tua risposta. Immagina che stavo cercando su Google questa domanda --- una buona risposta su StackExchange troverà rapidamente la strada per la prima pagina dei risultati.
Stefan Lasiewski,

Il link è morto.
Farzan,

Trovato questo mostlike.txtonline.
Kaushal Modi,

Che aspetto ha l'output?
Tom Hale,

1

Prendendo la risposta di dirtybit , volevo cambiare il colore dei risultati di ricerca evidenziati. Questa si chiama "modalità straordinaria", ecco un file di esempio "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,

Compila e installa il file:

tic xterm-yellow.ti

Aggiungi linea a "~ / .profile" o simile:

TERM=xterm-yellow
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.