Come cercare un modello contenente trattini all'interno delle pagine man?


11

Sto cercando di trovare un comando per cercare uno schema contenente trattini all'interno di tutte le pagine man.

Ho esaminato man mane 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 --regexsi 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 $MANSECTvariabile di ambiente. (L' -sortografia è per compatibilità con System V.)

Ho provato a combinarli per cercare il modello mark-modified-linesche è 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' --regexopzione 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-linescon 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 bashpagina 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 x11perfcompcontiene questa riga:

Mark Moraes wrote the original scripts to compare servers.
^^^^^^^

E man xditviewcontiene 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?

Risposte:


15

man -Kcerca il codice sorgente delle pagine del manuale, non la loro forma renderizzata (come visualizzato da man). I trattini sono codificati \-, quindi è necessario cercarlo:

man -s1 -Kw 'mark\-mo'

Sì, questo è piuttosto oscuro. La manpagina man menziona, nella descrizione -Kdell'opzione, quella

Nota che questo cerca le fonti delle pagine del manuale, non il testo renderizzato, e quindi può includere falsi positivi a causa di cose come commenti nei file sorgente. La ricerca del testo renderizzato sarebbe molto più lenta.

ma l'utilizzo corretto comporta la conoscenza della rappresentazione di origine del testo che stai cercando.


1
Oscurare? Sì. Inoltre, è un bug.
Kubanczyk,

@kubanczyk bene, corrisponde alle specifiche, ma sì, sono d'accordo che le specifiche sono buggy ;-).
Stephen Kitt,
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.