2012-03-31 21 views
7

W typowej powłoce systemu Linux (bash) możliwe jest dwukrotne naciśnięcie karty, aby uzyskać listę wszystkich dostępnych poleceń powłoki.Jak uzyskać listę wszystkich dostępnych poleceń powłoki?

Czy istnieje polecenie, które ma to samo zachowanie? Chcę go podłączyć do grep i przeszukać.

+1

Poniższe odpowiedzi powiedzieć jak. Myślę, że skorzystasz więcej, jeśli powiesz nam dlaczego. –

+2

możliwy duplikat polecenia systemu Linux do wyświetlenia wszystkich dostępnych poleceń i aliasów (http://stackoverflow.com/questions/948008/linux-command-to-list-all-available-commands-and-aliases) – camh

Odpowiedz

0

"tab" dwa razy & "y" drukuje wszystkie pliki w ścieżkach $ PATH. Zatem wystarczy wydrukować wszystkie pliki w PATH.

Wystarczy wpisać to w powłoce:

# printf "%s\n" ${PATH//:/\/* } > my_commands 

Ten przekierować wszystkie komendy do pliku "my_commands".

0

Możliwe, że rzeczy na twojej ścieżce nie są faktycznie możliwe do wykonania.

#!/bin/sh 
for d in ${PATH//:/ }; do 
    for f in "$d"/*; do 
    test -x "$f" && echo -n "$f " 
    done 
done 
echo "" 

To również wydrukuje ścieżki. Jeśli potrzebujesz tylko niewykwalifikowanych nazw plików, powinno być łatwo to zaadaptować.

Zabawne, StackOverflow nie wie, jak obsługiwać podświetlanie składni. :-)

2

Możesz wymienić katalogi prosto z $PATH, jeśli najpierw dostosujesz separator pól. Parens ograniczyć efekt do jednego polecenia, więc używać: (...) | grep ...

(IFS=': '; ls -1 $PATH) 
0

zakładkazakładkay

+0

Dla mojej instalacji , Muszę tylko raz nacisnąć zakładkę –

0

podobne do @ghoti, ale przy użyciu find:

#!/bin/sh 
for d in ${PATH//:/ }; do 
    find $d -maxdepth 1 -type f -executable 
done 
0

Bash używa wbudowanego polecenia o nazwie "complete", aby zaimplementować funkcję tabulacji.

nie mam szczegółów na dłoni, ale powinien ci powiedzieć wszystko, co musisz wiedzieć:

help complete 
0
(IFS=':'; find $PATH -maxdepth 1 -type f -executable -exec basename {} \; | sort | uniq) 

to nie obejmuje pomocy poleceń wbudowanych powłoki chociaż.

0

Odpowiedź został usunięty, spodobało mi się najbardziej, więc staram się go odśwież:

compgen jest oczywiście lepiej

echo $PATH | tr ':' '\n' | xargs -n 1 ls -1 

Znalazłem to być najbardziej typowa rzecz powłoki, myślę, że działa również z innymi powłokami (co wątpię w takie rzeczy, jak IFS=':')

Oczywiście, mogą wystąpić problemy, jeśli plik nie jest ex ecutable, ale myślę, że na moje pytanie, to wystarczy - po prostu chcę grep moje wyjście - co oznacza poszukiwanie niektórych poleceń.

1

Lista wszystkich plików w twoim PATH variable (wszystkie katalogi w PATH).Domyślne komendy użytkownika i systemu będą znajdować się odpowiednio w/bin i/sbin, ale po zainstalowaniu niektórych programów dodamy je do jakiegoś katalogu i połączemy za pomocą zmiennej PATH.

Powiązane problemy