Sto cercando di trovare un comando per cercare uno schema contenente trattini all'interno di tutte le pagine man.
Ho esaminato man man
e trovato queste 3 opzioni:
-K
,--global-apropos
Cerca il testo in tutte le pagine del manuale. Questa è una ricerca di forza bruta e probabilmente richiederà del tempo; se è possibile, è necessario specificare una sezione per ridurre il numero di pagine da cercare. I termini di ricerca possono essere stringhe semplici (impostazione predefinita) o espressioni regolari se
--regex
si utilizza l' opzione.
-w
,--where
,--path
,--location
In realtà non visualizzare le pagine del manuale, ma stampa la posizione (i) dei file nroff di origine che verrebbero formattati.
-S list
,-s list
,t--sections=list
Elenco è un elenco separato da punti o virgola di sezioni manuali specifiche dell'ordine da cercare. Questa opzione sovrascrive la
$MANSECT
variabile di ambiente. (L'-s
ortografia è per compatibilità con System V.)
Ho provato a combinarli per cercare il modello mark-modified-lines
che è un'opzione readline descritta in man bash
:
$ man -s1 -Kw mark-modified-lines
Ma non trova nessuna pagina:
No manual entry for mark-modified-lines
E il comando termina con il codice 16
.
Ho pensato che forse la sintassi del comando era sbagliata, ma non sembra così, dal momento che questo comando trova correttamente le 5 pagine man sul mio sistema che contengono la parola guitar
:
$ man -s1 -Kw guitar
/usr/share/man/man1/ffmpeg-all.1.gz
/usr/share/man/man1/ffserver-all.1.gz
/usr/share/man/man1/ffplay-all.1.gz
/usr/share/man/man1/ffmpeg-filters.1.gz
/usr/share/man/man1/ffprobe-all.1.gz
Ho pensato che forse i trattini nella parola hanno causato un problema. In man bash
, ho trovato l' --regex
opzione che è descritta come segue:
--regex
Mostra tutte le pagine con qualsiasi parte dei loro nomi o delle loro descrizioni corrispondenti ad ogni argomento di pagina come espressione regolare, come con
apropos(1)
. Poiché di solito non esiste un modo ragionevole di scegliere una pagina "migliore" quando si cerca un'espressione regolare, questa opzione implica-a
.
Ho provato a usare questa opzione e sostituire la parola mark-modified-lines
con regex mark.modified.lines
, dove i trattini vengono essi stessi sostituiti con il metacarattere .
che dovrebbe corrispondere a qualsiasi carattere:
$ man -s1 -Kw --regex 'mark.modified.lines'
Non stampa ancora nessuna pagina, mentre so che il testo è scritto nella bash
pagina man.
Il metacarattere .
nel regex sembra essere analizzato come previsto, poiché questo comando:
$ man -s1 -Kw --regex 'mark.mo'
stampe:
/usr/share/man/man1/x11perfcomp.1.gz
/usr/share/man/man1/xditview.1.gz
E queste 2 manpage ( x11perfcomp
, xditview
) sono entrambe associate alla regex mark.mo
. Più specificamente, man x11perfcomp
contiene questa riga:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
E man xditview
contiene questa riga:
Mark Moraes (University of Toronto)
^^^^^^^
Tuttavia, man -s1 -Kw --regex 'mark.mo'
non stampa la pagina man di bash:
/usr/share/man/man1/bash.1.gz
Mentre mi aspettavo che sarebbe, poiché contiene questa riga:
mark-modified-lines (Off)
^^^^^^^
È possibile cercare un modello contenente trattini all'interno delle pagine man?