Domanda

Ora intendo mostrare il segno di percentuale anche quando esegui, ad esempio, il comando

man emacs

Se lo esegui, ad esempio ottieni "byte 3300".

La risposta di Alex suggerisce me che dobbiamo fare una funzione di shell separata da

man "$1"| col -b > /tmp/manual
less /tmp/manual

dove $ 1 si riferisce al primo parametro.


Il nuovo problema è alla thread . Grazie a Yuliy per il passaggio decisivo!

È stato utile?

Soluzione

Soluzione

Una versione meno manuale della risposta dei knitatoms combinato con la risposta di Alex Marteilli funziona abbastanza bene: passa l'opzione +Gg a less tramite l'opzione cercapersone.

Ad esempio, prova

man -P 'less -s -M +Gg' man

Questo può essere effettuato in modo permanente mettendo

export MANPAGER='less -s -M +Gg'

in uno dei file di configurazione della shell (la sintassi sopra è per Bash e ZSH). Ora, ad esempio, man man visualizza la percentuale come te voluto!

Attenzione

Dovresti non mettere LESS nella variabile OPTIONS! Per esempio, facendo

export LESS='-M +Gg'

causerà problemi durante la lettura di file molto grandi. Ad esempio,

yes | LESS='-M +Gg' less

non funziona molto bene ...

Spiegazione

Come hanno spiegato altre risposte, il problema è che man less non può dirlo quale percentuale nel file sei fino a quando non sa per quanto tempo il file è, e non legge alla fine del file per impostazione predefinita durante la lettura da una pipa.

Dalla sezione g di <=>:

+      If  a command line option begins with +, the remainder of that
       option is taken to be an initial command to less.   For  exam‐
       ple, +G tells less to start at the end of the file rather than
       the beginning, and +/xyz tells it to start at the first occur‐
       rence of "xyz" in the file.  As a special case, +<number> acts
       like +<number>g; that is, it starts the display at the  speci‐
       fied  line  number (however, see the caveat under the "g" com‐
       mand above).  If the option starts with ++, the  initial  com‐
       mand  applies  to  every file being viewed, not just the first
       one.  The + command described previously may also be  used  to
       set (or change) an initial command for every file.

<=> significa " torna all'inizio del file " ;.

Da <=>:

-P pager, --pager=pager
       Specify which output pager to use.  By default, man uses pager
       -s.  This option overrides the $MANPAGER environment variable,
       which in turn overrides the $PAGER environment  variable.   It
       is not used in conjunction with -f or -k.

       The value may be a simple command name or a command with argu‐
       ments, and may use shell quoting (backslashes, single  quotes,
       or  double  quotes).  It may not use pipes to connect multiple
       commands; if you need that, use a wrapper  script,  which  may
       take  the file to display either as an argument or on standard
       input.

Altri suggerimenti

export LESS="-m"

Più in generale, la variabile di ambiente LESS può contenere opzioni equivalenti ai flag della riga di comando che è possibile passare esplicitamente quando si esegue less: qui, l'opzione -m che indica di richiedere più rapidamente (compresa la percentuale, come da vostra richiesta). Puoi anche passare più di un'opzione all'interno di quella singola variabile di ambiente terminando ciascuna con un $. Per molte più informazioni, vedi la manpage di less .

Modifica : è ovviamente possibile (a seconda di come si utilizza di meno, ad esempio se si esegue il piping su di esso anziché chiamarlo su un file) che meno non conosci la dimensione totale che visualizzerà, nel qual caso ovviamente non può mostrare la% - in quel caso ti chiederà con quante poche informazioni ha, ad esempio, quanto testo ha mostrato finora. Ad esempio, man utilizza MANPAGER in questo modo, eseguendo il piping.

Quindi, se la tua specifica necessità è vedere% in -P (piuttosto che quando chiami <=> direttamente su un file) devi usare un " pager alternativo " (variabile di ambiente <=> o passa <=> sulla <=> riga di comando) che è un semplice script che salva l'output di <=> in un file temporaneo e quindi utilizza <=> su quest'ultimo. (Ciò potrebbe perdere il & Quot; colorization & Quot; a meno che tu non giochi ancora ulteriori e più profondi trucchi, ecc, ecc. Allo stesso modo potresti usare & Quot; pagine di preformato & Quot; opzione di <=> e decomprimi tale pagina preformattata in un file tempfile su cui eseguire <=>, ecc., ma questo sta iniziando a diventare un " script semplice " ;; -).

Su Linux vado solo alla fine della pagina man con Maiusc + G quindi torno all'inizio con g . (Oppure puoi tornare alla posizione precedente con ' ').

Meno quindi ha informazioni sufficienti per visualizzare la percentuale di distanza del file. (Potrebbe essere necessario digitare -M per ottenere il prompt lungo.)

È un po 'un trucco ma solo due pressioni di tasti. Non sono sicuro che funzioni su OS / X.

Per aggiungere alla risposta di Alex Martelli:

Nota che puoi anche passare qualsiasi parametro della riga di comando a less in fase di esecuzione, semplicemente digitandolo (incluso il -), seguito dal tasto Invio. Quindi puoi semplicemente digitare

-m<Enter>

in meno corsa per attivare il prompt lungo.

Ciò è particolarmente utile per le opzioni che devono essere modificate in fase di esecuzione, ad es. -S (linea pieghevole on / off).

Con un runtime less attivo ho usato -M.

Questo è ": Inserisci " al prompt <kbd>Keyboard<kbd> con meno corsa.

Con buffer molto grandi ho dovuto anche andare fino alla fine " scopri " la loro dimensione. Fine e ritorno Home .


Nota: avrei pubblicato un commento alla @sleske , ma l'ultima volta che ricordo , i commenti non supportano <=> tag.

Ho questo nel mio ambiente. Stampa <filename> - Lines X-Y of Z in fondo, o almeno la maggior parte di tali informazioni.

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top