Come passare a un'intestazione specifica in una pagina man?


9

Esempio: ssh_config

Per questo ho impostato un tipo di file. Voglio che sia il programma di aiuto

man

Ovviamente questo non funziona, se ho una parola, diciamo

ServerAliveCountMax

Viene visualizzato un errore, poiché non esiste un cercapersone man per ServerAliveCountMax, si trova nella manpage di ssh_config.

C'è un modo per, dalla riga di comando, passare a una stringa o eseguire un tipo di comando all'interno di man? Proprio come le informazioni in realtà:

info screen Miscellaneous

mi porterà alla sezione Varie della pagina di informazioni sulle schermate.

Questo è possibile con l'uomo? Anche eseguire una ricerca servirebbe ...

EDIT: sto usando OSX 10.6.5. con l'uomo predefinito (/ usr / bin / man)

EDIT: parlo un po 'di dialetto;), quindi sono stato portato alla risposta corretta:

man -P 'less -p PATTERN' ssh_config  

Sembra l'invocazione su OSX / * BSD.

Risposte:


11

Dalla riga di comando per GNU man:

man --pager='less -p ^ENVIRONMENT' man

o per BSD man:

man -P 'less -p ^ENVIRONMENT' man

salterà all'intestazione "AMBIENTE" della pagina man per man.

Ecco una comoda funzione:

mans () {    # Bash
    local pages string
    if [[ -n $2 ]]
    then
        pages=(${@:2})
        string="$1"
    else
        pages=$1
    fi
    # GNU man
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
    # BSD man
    # man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}

Esempi:

Utilizzare normalmente:

mans bash

Vai alla voce "DESCRIZIONE":

mans ^DESCRIPTION bash

Vai all'intestazione "DESCRIZIONE" di ogni pagina man in successione (premi qe Enterper passare a quella successiva):

mans ^DESCRIPTION bash ksh zsh

Vai al sottotitolo "Parameter Expansion" (puoi cercare qualsiasi stringa usando le espressioni regolari):

mans '^ *Parameter Expansion' bash

Cerca la regex più recente che hai usato in Meno:

mans '' bash

La corrispondenza che hai cercato non verrà evidenziata. Se preferisci che sia, rimuovi semplicemente -Gdalle opzioni a less.

Questa funzione non tenta di gestire gli altri argomenti e opzioni che mansupportano.


promettente, ho modificato la mia domanda, vedo che hai eseguito che usando Macport o Linux, ho un'opzione -P nell'elenco di opzioni in stile BSD schifoso ... provandolo.
Chiggsy,

Grazie, l'ho capito, ma grazie ancora! BAH, non posso votare di nuovo la tua nuova risposta :(
chiggsy

@Chiggsy: prendo il lavoro -P. In tal caso, lo aggiungerò alla mia risposta.
In pausa fino a nuovo avviso.

Per la cronaca, ho annullato la tua risposta originale. Era completamente corretto. La tua modifica, non sono riuscito a votare. Volevo però ...
Chiggsy,

@Chiggsy: dovrei aggiungere lo -Pstile BSD alla mia risposta per riferimento futuro?
In pausa fino a nuovo avviso.

2

È possibile utilizzare la PAGERvariabile per questa esecuzione per evitare problemi di compatibilità BSD / GNU.

Usa le "virgolette se il titolo della sezione contiene spazi:

PAGER='less -p ^"ENVIRONMENT"' man man


1

/in meno farà una ricerca in avanti e ?farà una ricerca inversa. Premere hper visualizzare un elenco completo.


Vedi il mio commento sopra, e in realtà, la mia domanda.
Chiggsy,

1

In man puoi digitare /seguito da uno schema da abbinare ad es. Per trovare la sezione DEFAULT KEY BINDINGS della pagina man dello schermo che dovresti digitare

/^DEFAULT KEY BINDINGS

Sì. Questo è vero, ma bisogna essere in uomo per farlo. Voglio passare dalla shell a quello in un solo passaggio.
Chiggsy,

1

Uso un semplice trucco per saltare relativamente velocemente tra le sezioni delle pagine man: /^[A-Z]premo ne quindi posso premere e Nper saltare avanti e indietro.

La regex di ricerca utilizza la struttura di base delle tipiche pagine man - Le sezioni principali sono scritte in maiuscolo e iniziano una riga senza rientro, per cui dovrebbero apparire all'inizio delle righe.


1

Non mi piace la soluzione --pager/ -P, perché manpotrebbe essere utilizzata ma non essere chiamata direttamente (ad esempio quando si utilizza git help ...). Quindi l'utilizzo di un envvar è più flessibile. Ma trovo che usi un PAGER='less ...tipo di ridondante, perché di lesssolito è comunque il cercapersone predefinito. È possibile utilizzare LESSenvvar per passare i parametri direttamente a less. Anche questo ha meno problemi di quotazione. Ad esempio, questo passerà correttamente alla sezione giusta, anche se ha uno spazio al suo interno:

LESS="-p file system" git help glossary

1
Fino in cima con questa risposta! Grazie :)
Patryk Obara il
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.