Jak mogę przejrzeć opcje uzupełniania kart?


18

Kiedy naciskam klawisz Tab w konsoli, otrzymuję to wyjście

Pokaż wszystkie 2957 możliwości? (t lub n)

Czy jest jakiś sposób na wykorzystanie greptych 2957 możliwości? Chciałbym wyszukać wszystkie polecenia ze słowem „svn” w nich.

Odpowiedzi:


21

Rozwiązaniem jest wbudowane bash compgen. Aby grep 'svn' ze wszystkich dostępnych poleceń i aliasów poleceń dostępnych przez $PATH, wpisz.

compgen -ac | grep svn

Chcesz wyszukiwać według określonego prefiksu (np. Wszystkich poleceń zaczynających się od ecrypt)? Używaj wyrażeń regularnych. .

compgen -ac | grep "^ecrypt"

doskonała odpowiedź, ale co zrobić, jeśli sami chcemy grep możliwości uzupełnienia tabulacji? To znaczy, nie zawsze jest wywoływana przez nazwę polecenia, ale także przez parametry polecenia itp.
UncleZeiv,


1

Powinno to być równoważne:

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

Bardzo podobny do odpowiedzi totaam poza tym ogranicza jego zakres do plików wykonywalnych (podobnie jak Bash). Ale JJE's compgenjest o milę lepszy.


1

może {,.}*svn*pomaga tutaj np ls -l /usr/bin/{,.}*svn*<tab>.

Ale spójrz na Zsh! Tutaj: http://www.jukie.net/bart/blog/zsh-tab-completion to kilka świetnych przykładów, w jaki sposób może pomóc zmniejszyć wyniki uzupełniania kart. Obejmuje to również negację, np. Jeśli chcesz uzyskać wszystkie wyniki uzupełniania tabulatorów bez słowa „foobar” lub wszystkie wyniki z parzystymi cyframi na pierwszym miejscu, uzupełnianie tabulatorów w podkatalogu i wiele więcej. Powodem, dla którego przeszedłem na zsh, było dzielenie się historią między wszystkimi otwartymi terminalami.


0

Nie znałem compgen i zasugerowałbym:

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

za bash.

${VAR//pattern/replace} replaces in VAR pattern with replace. // is used to replace every pattern, not just the first, which would be just /.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.