Quando grep la pagina man del comando find per corrisponde a type restituisce molti risultati di ricerca che non voglio. Vorrei invece utilizzare un comando che restituisca solo i risultati della ricerca per -type.

Il comando man find | grep -type non funziona. Restituisce:

grep: invalid option -- "t" 

Commenti

  • Vuoi solo le singole righe della pagina man formattata che contengono la stringa -type o vuoi, ad esempio, lintero paragrafo o due che descrivono cosa fa -type?
  • Voglio sapere come farlo in entrambi i modi, grepping per le singole righe che contengono la stringa -type sarebbe sufficiente per il modo in cui di solito cerco nelle pagine man, tuttavia tornando lintero paragrafo o due che descrivono cosa fa -type sarebbe molto utile da fare almeno una volta.
  • A proposito, se la visualizzazione di una pagina web è unalternativa, Idan Kamara di explorehell.com ha fatto un ottimo lavoro nellestrarre le parti delle pagine man che descrivono le opzioni di comando. Vedi, ad esempio, explorehell.com/explain?cmd=find+-type+f per vedere esattamente cosa -type opzione sì.

Risposta

Se vuoi grep per un modello che inizia con un trattino, usa -- prima del pattern specificato.

man find | grep -- -type 

Se desideri maggiori informazioni, ad esempio lintera sezione che descrive unopzione , potresti provare a utilizzare Sed:

$ man find | sed -n "/-mindepth/,/^$/p" -mindepth levels Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments. 

Tuttavia, questo non funzionerà per ogni opzione che potresti cercare. Ad esempio :

$ man find | sed -n "/^[[:space:]]*-type/,/^$/p" -type c File is of type c: 

Non molto utile. Peggio ancora, per alcune opzioni potresti essere indotto a pensare che “avresti letto lintero testo sullopzione quando davvero non lhai fatto” t. Ad esempio, la ricerca di -delete omette limportantissimo AVVISO contenuto come secondo paragrafo sotto quellintestazione.


Il mio si consiglia di utilizzare una chiamata standard a man con la variabile di ambiente LESS impostata. Lo uso abbastanza comunemente nelle mie risposte su questo sito.

LESS="+/^[[:space:]]*-type" man find 

Per ulteriori informazioni su come funziona, vedere:

LESS="+/^[[:space:]]*LESS " man less LESS="+/\+cmd" man less LESS="+/\/" man less 

Se vuoi solo trovare lopzione velocemente e in modo interattivo nella pagina man, impara a usare le capacità di ricerca di less“. E vedi anche:

Commenti

  • Grazie per aver postato. I comandi nella tua risposta hanno restituito i risultati che stavo cercando. Accetterò una risposta dopo un giorno o due, quindi per favore sii paziente.
  • @karel, nessun problema, io ' sono molto paziente. 🙂 Un po perplesso, però: so che puoi ' t iniziare una taglia su una domanda per due giorni, ma credo che il limite di tempo prima che tu possa accettare una risposta sia di soli 15 minuti circa.
  • man find | sed -n '/-type/,/^$/p' offre molto di più di quanto hai pubblicato corrisponderà a -type in qualsiasi punto della riga … sto lavorando su un piccolo script per cercare man o help (per builtin) e attualmente utilizzo awk che ha ancora poche stranezze da risolvere .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" dove arg sarebbe -type in questo caso
  • BTW, @Sundeep, potresti provare ad analizzare i file troff che contengono le informazioni della pagina man originale con le informazioni sul formato, invece delloutput di testo del comando man.
  • @Sundeep, qui ' è il punto di partenza per te . (Assicurati di seguire il link in quella risposta.) ' cè molto da sapere su troff. Ping me in chat quando finisci di tuffarti nella tana del coniglio. 🙂

Rispondi

Oppure reindirizza a less e feed che un termine di ricerca:

man 1 find | less -p " -type" 

(potrebbe non riuscire a seconda di cosa less è feed, ad esempio se -type è stato evidenziato in grassetto con backspace.)

Commenti

  • Collegalo a col -bx prima.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *