Come posso usare man senza di meno?


21

Per impostazione predefinita, manutilizza lessper l'output del testo. Come posso dirlo all'output su stdout? Il mio emulatore di terminale ha una barra di scorrimento e una funzione di ricerca e voglio usarli al posto dei tasti freccia.

Risposte:


31

In realtà utilizza tutto ciò che è specificato nella variabile di ambiente MANPAGERo PAGER.

A seconda mandell'implementazione e della versione potrebbe esserci anche un'opzione da riga di comando per specificare il cercapersone.

Con l' implementazione man-db utilizzo tutti i modi di lavoro seguenti:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

Per impostarlo in modo permanente, aggiungilo al tuo ~/.bashrc(o altro file di inizializzazione usato dalla tua shell):

export MANPAGER=cat

Funziona anche con alcune manimplementazioni precedenti , mentre MANOPTè specifico di man-db:

export MANOPT='-P cat'

(Meglio non impostare in PAGERquesto modo. Quello viene utilizzato anche da molte altre applicazioni.)

Potrebbe esserci anche un file di configurazione globale. man-db ha /etc/man_db.confo /etc/manpath.config. Lì puoi impostare:

DEFINE    pager    cat

Ma sfortunatamente questo è preso in considerazione solo se MANPAGERPAGERè né impostato.


2
Buona risposta. Re: ~/.bashrc, si potrebbe anche avvolgere l'esportazione in un condizionale in modo che imposta solo il cercapersone se è appropriato terminale / emulatore: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; ovviamente sostituirlo xtermcon l'emulatore appropriato.
Kevin,

1
In realtà, è buono e in base alla progettazione che manpath.config verrà preso in considerazione in seguito. Sia PAGER che MANPAGER sono a livello utente, dove il file di configurazione è a livello di sistema. Se il livello di sistema avesse la precedenza, gli utenti non potevano assolutamente ignorare.
Paul de Vrieze,

@PauldeVrieze, hai ragione MANPAGER. Ho usato la parola "purtroppo" per il fatto che si applica anche al comportamento PAGER, che è un'impostazione generica (utilizzata da molti strumenti) e preferirei che non sovrascrivesse un'impostazione specifica (utilizzata da un solo strumento), anche se quella uno è a livello di sistema.
arte

Se vuoi sovrascrivere un'impostazione specifica per un singolo strumento puoi sempre farlo creando un alias, una funzione shell o uno script wrapper. Ognuno di questi equivarrebbe a: PAGER=cat manad esempio:alias man='PAGER=cat MANPAGER=cat man'
Paul de Vrieze,

6

Semplicemente pipe l'output di manto cat?

man ls | cat   # useful use of cat

6
Si noti che a seconda mandell'implementazione, che 1) genera un errore, 2) visualizza i codici di formato troff nel terminale, 3) rimuove tutta la formattazione, 4) funziona come previsto.
arte

2
Non l'ho mai visto fare diversamente da 4.
Keith Thompson,

@KeithThompson macOS mansembra utilizzare il cercapersone impostato MANPAGERanche quando l'output è un file o una pipe. E se il cercapersone lo è less, allora va tutto bene perché lesssi comporta come catquando l'output è una pipe ... Ma se usi qualcos'altro (come Vim, che io uso), allora non è così buono.
muru,

1

Prova questi comandi per generare output man senza un cercapersone.

  • man ls | cat (larghezza fissa generata)

  • man -P cat ls (larghezza variabile generata)

Ero su un sistema GNU linux


1

Un'altra prospettiva: simile alla risposta di Tony.

Puoi anche reindirizzare l'output di man in un file e visualizzarlo con il tuo editor di testo preferito o persino aggiungere segnalibri, commenti, ecc.

man bash  > bashman.txt

Ho una copia della pagina man di bash e solo le sezioni sul controllo del flusso di bash e le bandiere di test bash salvate come file di testo nella mia directory bin in modo da poterle caricare direttamente nel mio editor di testo (kate) per riferimento mentre sono scrivere script bash.


Avvertenza: a seconda del sistema e della pagina man, il comando sopra può causare la formattazione delle informazioni e il controllo dei caratteri nel file.

Per evitare ciò, fai come suggerito in LESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt

1
@Wildcard - Grazie. Non lo sapevo.
Joe,
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.