Come posso consultare le possibilità di completamento delle schede?


18

Quando premo tab in una console ottengo questo output

Mostra tutte le 2957 possibilità? (yo n)

C'è un modo per utilizzare grepsu queste 2957 possibilità? Vorrei cercare tutti i comandi con la parola "svn" in essi.

Risposte:


21

La soluzione è incorporata in bash compgen. Per grep 'svn' da tutti i comandi disponibili e gli alias dei comandi accessibili tramite $PATH, digitare.

compgen -ac | grep svn

Vuoi cercare da un determinato prefisso (ad esempio tutti i comandi che iniziano con ecrypt)? Usa espressioni regolari. .

compgen -ac | grep "^ecrypt"

risposta eccellente, ma cosa succede se si vogliono grep da soli le possibilità di completamento delle schede? Voglio dire, non sempre è innescato dal nome del comando, ma anche dai parametri del comando, ecc.
UncleZeiv


1

Questo dovrebbe essere equivalente:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done

1
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

Molto simile alla risposta di Totaam, a parte questo, limita la sua portata agli eseguibili (come fa Bash). Ma JJE compgenè un altro miglio migliore.


1

forse {,.}*svn*aiuta qui, ad es ls -l /usr/bin/{,.}*svn*<tab>.

Ma dai un'occhiata alla Zsh! Qui: http://www.jukie.net/bart/blog/zsh-tab-completion sono alcuni ottimi esempi di come può aiutare a ridurre i risultati del completamento della scheda. Ciò include anche la negazione, ad esempio se si desidera tutti i risultati del completamento della scheda senza la parola "foobar" o tutti i risultati con cifre pari, in primo luogo, il completamento della scheda della sottodirectory e molto altro. Il motivo per cui sono passato a zsh è stata la condivisione della cronologia tra tutti i terminali aperti.


0

Non conoscevo Compgen e avrei suggerito:

ls -d ${PATH//:/\/*svn* } 2>/dev/null

per bash.

${VAR//pattern/replace} replaces in VAR pattern with replace. // is used to replace every pattern, not just the first, which would be just /.
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.