2013-07-07 15 views
10

Mi sono trovato in una situazione in cui sono costantemente alla ricerca di parametri di un comando in bash. Ad esempio, find -type f -name '*py' -print0. Per trovare tutti quelli che ho bisogno di passare attraverso l'uomo, le informazioni, o l'opzione --help che è laboriosa e richiede tempo. C'è un modo per rendere questa ricerca istantanea. Idealmente, mi piacerebbe vedere qualcosa di simile: find -type --help affermando aiuto su tipo opzione di trovare.Ricerca rapida delle opzioni di comando in bash

+1

Sarebbe utile, ma non credo sia possibile. Alcuni programmi infatti integrano tali funzionalità all'interno di se stessi, come ad esempio "programma --help type" per chiedere aiuto sul parametro "-type". Tuttavia, forse è possibile costruire alcuni script di shell arcani che scavassero queste informazioni dalle pagine man. – Jubatian

+0

Non so bash, ma zsh è abbastanza facile da scrivere plugin, quindi potresti avere più fortuna con quello. – tjameson

risposta

9

Se le pagine man sono aperte in less è possibile utilizzare / per effettuare la ricerca su di esso.

man find

/-type

n, per la prossima ricerca

N per la ricerca precedente

+0

Molto bello. Sebbene non così potente come una ricerca diretta. –

+1

Un modo per migliorarlo è precedere la query con doppio spazio come in '/ -OPTION' - in questo modo finirai efficacemente nella definizione nella maggior parte dei casi, saltando le parti in cui' -OPTION' potrebbe essere usato all'interno di un condanna, frase. Questo è in realtà qualcosa che stavo cercando. – krzemian

1

Ecco qualcosa che ho nel mio .bashrc

# man search 
mans() 
{ 
    if [ $# -ne 2 ]; then 
     echo "I need 2 args. a man page and a search phrase." 
     exit 1 
    else 
     man -Pless "$1" | grep -C10 --group-separator="==============================" -- "$2" 
    fi 
} 

mans find type cerca nella pagina man tutte le occorrenze della frase "tipo".

Oppure: mans find -type (con il trattino) se si conosce l'opzione esatta che si sta cercando.

0

Si può mettere

function mangrep { man -P less\ -p\ \""${1}"\" ${2}; } 

al vostro .bashrc. Quindi mangrep pattern page aprirà la manpage con less e cercherà direttamente il pattern, come in Blaz Balons answer. Così

mangrep " -print" find 

ti dà il posto giusto per l'opzione di -printfind. Ed è ancora possibile utilizzare n/N per la ricerca in avanti e indietro e tutte le altre funzionalità di meno.