Come rendere Meno indicare la posizione in percentuale
-
20-08-2019 - |
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!
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:-...'