Linux command do listy wszystkich dostępnych komend i aliasów

Czy istnieje polecenie linuksowe, które wyświetli listę wszystkich dostępnych poleceń i aliasów dla tej sesji terminala?

Jakbyś wpisywał 'a' i wciskał tab, ale dla każdej litery alfabetu. Lub uruchamianie 'alias', ale także zwracanie komend.

Dlaczego? Chciałbym uruchomić następujące polecenie i sprawdzić, czy jest dostępne polecenie:
ListAllCommands | grep searchstr
Author: Jonathan Leffler, 2009-06-04

21 answers

Możesz użyć wbudowanego bash (1) compgen

  • compgen -c wyświetli listę wszystkich komend, które można uruchomić.
  • compgen -a wyświetli listę wszystkich aliasów, które można uruchomić.
  • compgen -b wyświetli listę wszystkich wbudowanych, które można uruchomić.
  • compgen -k wyświetli listę wszystkich słów kluczowych, które można uruchomić.
  • compgen -A function wyświetli listę wszystkich funkcji, które można uruchomić.
  • compgen -A function -abck wymieni wszystkie powyższe za jednym razem.

Sprawdź stronę man pod kątem innych funkcji, które możesz / align = "left" /

Aby bezpośrednio odpowiedzieć na twoje pytanie:

compgen -ac | grep searchstr

Powinieneś robić, co chcesz.

 531
Author: camh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-25 01:13:52

Dodaj do .bashrc

function ListAllCommands
{
    echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
        -executable -type f -printf '%P\n' | sort -u
}

Jeśli chcesz również aliasy, to:

function ListAllCommands
{
    COMMANDS=`echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
        -executable -type f -printf '%P\n'`
    ALIASES=`alias | cut -d '=' -f 1`
    echo "$COMMANDS"$'\n'"$ALIASES" | sort -u
}
 37
Author: Ants Aasma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 20:32:47

Jest

type -a mycommand

Polecenie, które wyświetla wszystkie aliasy i polecenia w $PATH gdzie jest używany mycommand. Może być użyty do sprawdzenia, czy polecenie istnieje w kilku wariantach. Poza tym... Prawdopodobnie jest jakiś skrypt, który parsuje $PATH i wszystkie aliasy, ale nie wiem o żadnym takim skrypcie.

 22
Author: sunny256,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:36:56

Użyj "which searchstr". Zwraca ścieżkę binarną lub konfigurację aliasu, jeśli jest to alias

Edytuj: Jeśli szukasz listy aliasów, możesz użyć:

alias -p | cut -d= -f1 | cut -d' ' -f2

Dodaj to do dowolnej ścieżki szukanej odpowiedzi. Zakłada, że używasz bash..

 6
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 01:28:23

Wypróbuj ten skrypt:

#!/bin/bash
echo $PATH  | tr : '\n' | 
while read e; do 
    for i in $e/*; do
        if [[ -x "$i" && -f "$i" ]]; then     
            echo $i
        fi
    done
done
 5
Author: victor hugo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:53:23

Przydatne jest wyświetlanie poleceń na podstawie słów kluczowych powiązanych z poleceniem.

Użycie: man -k "your keyword"

Zapraszam do łączenia z: | grep "another word"

Na przykład, aby znaleźć edytor tekstu: man -k editor | grep text

 3
Author: Finch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-07 17:46:26

Spróbuj nacisnąć ALT-? (alt i znak zapytania w tym samym czasie). Daj mu sekundę lub dwie, aby zbudować listę. Powinno działać w bash.

 2
Author: Igor Krivokon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:50:15

Oto rozwiązanie, które daje listę wszystkich aliasów wykonywalnych i. Jest również przenośny dla Systemów Bez xargs -d (np. Mac OS X) i prawidłowo obsługuje ścieżki ze spacjami w nich.

#!/bin/bash
(echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@"

Użycie: myscript.sh [grep-options] pattern, np. aby znaleźć wszystkie polecenia zaczynające się od ls, rozróżnia wielkość liter, do:

myscript -i ^ls
 2
Author: Adam Rosenfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 01:50:56

Dla użytkowników komputerów Mac (find doesn 't have-executable and xargs doesn' t have-d):

echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'
 2
Author: vault,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-24 15:41:04

Metoda skrótu do wypisania wszystkich poleceń. Otwórz terminal i naciśnij dwa razy przycisk"tab". To pokazuje wszystkie polecenia w Terminalu

 2
Author: denny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-25 19:24:29

Inne polecenie nie działało dla mnie na systemach wbudowanych, ponieważ wymagają bash lub bardziej kompletnej wersji xargs.

Poniższe polecenia powinny działać na każdym systemie Uniksopodobnym.

Lista według folderów:

ls $(echo $PATH | tr ':' ' ')

Lista wszystkich poleceń po nazwie

ls $(echo $PATH | tr ':' ' ') | grep -v '/' | sort
 2
Author: Olivier Lasne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-07 09:17:53

Zawsze możesz:

1. Hold the $PATH environment variable value.
2. Split by ":"
3. For earch entry: 
    ls * $entry 
4. grep your command in that output.

Powłoka wykona polecenia tylko wtedy, gdy są one wymienione w ścieżce ENV var.

 1
Author: OscarRyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:39:11

To zależy, chodzi mi o to, że zależy od tego, jakiej powłoki używasz. oto ograniczenia, które widzę:

  1. musi działać w tym samym procesie co powłoka, aby przechwycić aliasy, funkcje i zmienne, które wpłyną na polecenia, które możesz znaleźć, myśleć ścieżkę lub edytor, chociaż edytor może być poza zakresem. Możesz mieć nieprzewidziane zmienne, które mogą wpływać na rzeczy.
  2. jest specyficzny dla shell ' a lub Twojego wchodzenia do jądra, / proc / pid / enviorn i przyjaciele nie mają wystarczająco Informacje

Używam ZSH więc tutaj jest odpowiedź zsh, robi następujące 3 rzeczy:

  1. dumps path
  2. wyrzuca nazwy aliasów
  3. zrzuca funkcje, które są w env
  4. sortuje je

Oto jest:

feed_me() {
    (alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort
}

Jeśli używasz zsh to powinno to zrobić.

 1
Author: ms4720,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-20 14:56:58

Alternatywnie, możesz uzyskać wygodną listę poleceń wraz z krótkimi opisami (o ile polecenie ma stronę podręcznika, co większość z nich robi):

apropos -s 1 ''

-s 1 returns only "section 1" manpages which are entries for executable programs.

'' is a search for anything. (If you use an asterisk, on my system, bash throws in a search for all the files and folders in your current working directory.)
Wtedy po prostu go grep jak chcesz.
apropos -s 1 '' | grep xdg

xdg-desktop-icon (1) - command line tool for (un)installing icons to the desktop
xdg-desktop-menu (1) - command line tool for (un)installing desktop menu items
xdg-email (1)        - command line tool for sending mail using the user's preferred e-mail composer
xdg-icon-resource (1) - command line tool for (un)installing icon resources
xdg-mime (1)         - command line tool for querying information about file type handling and adding descriptions for new file types
xdg-open (1)         - opens a file or URL in the user's preferred application
xdg-screensaver (1)  - command line tool for controlling the screensaver
xdg-settings (1)     - get various settings from the desktop environment
xdg-user-dir (1)     - Find an XDG user dir
xdg-user-dirs-update (1) - Update XDG user dir configuration

Wyniki nie wydają się być posortowane, więc jeśli szukasz długiej listy, możesz wrzucić | sort/do środka, a następnie przesłać to do pagera jak less/more / most. ala:

apropos -s 1 '' | sort | grep zip | less

Który zwraca posortowaną listę wszystkich poleceń, które mają "zip" w nazwie lub ich krótki opis, i pompuje, że" mniej " pager. (Możesz również zastąpić" less " $PAGER i użyć domyślnego pagera.)

 1
Author: Katastic Voyage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-11 08:08:58

Problem polega na tym, że dopełnienie karty przeszukuje twoją ścieżkę, ale wszystkich poleceń nie ma na twojej ścieżce.

Aby znaleźć polecenia w ścieżce używając bash, możesz zrobić coś takiego:

For x in echo $PATH | cut -d":" -f1; do ls $x; done

 0
Author: nikudesu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:42:59

Oto funkcja, którą możesz umieścić w pliku bashrc:

function command-search
{
   oldIFS=${IFS}
   IFS=":"

   for p in ${PATH}
   do
      ls $p | grep $1
   done

   export IFS=${oldIFS}
}

Przykładowe użycie:

$ command-search gnome
gnome-audio-profiles-properties*
gnome-eject@
gnome-keyring*
gnome-keyring-daemon*
gnome-mount*
gnome-open*
gnome-sound-recorder*
gnome-text-editor@
gnome-umount@
gnome-volume-control*
polkit-gnome-authorization*
vim.gnome*
$

FYI: IFS jest zmienną, której bash używa do dzielenia łańcuchów.

Na pewno można to zrobić na kilka lepszych sposobów.
 0
Author: Craig Wright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:58:59

Może to nieporozumienie, ale co jeśli naciśniesz Escape, aż pojawi się wyświetlacz wszystkich możliwości X ?

 -1
Author: LB40,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 01:02:33

Podstawowe polecenia:

$ touch: - user for create empty file

Syn: - touch filename

Ex: touch rama

$LS Lista plików i katalogów

$ ls-l Long listing

Typ pliku, uprawnienia, pliki linków, nazwa użytkownika( lub) właściciela, nazwa grupy, Rozmiar pliku, znacznik czasu, nazwa pliku lub katalogu.

{–0]} - zwykły (lub) zwykły plik

D katalog

L link file

Ls-a: Pokaż wszystkie (łącznie z ukrytymi plikami)

Ukryte pliki i katalogi zaczynają się od . (kropka)

Znajdź więcej poleceń @ http://k2schools.com/linux-commands/

 -1
Author: reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-11 06:50:11
compgen -c > list.txt && wc list.txt
 -2
Author: some1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-05 04:55:56

Może po prostu napiszesz:

seachstr

W terminalu.

Powłoka powie coś jak

seacrhstr: command not found 

EDIT:

Ok, zabieram głos, ponieważ odpowiedź jest głupia, chcę tylko wiedzieć: co jest nie tak z tą odpowiedzią!!! Asker powiedział:

i sprawdź, czy polecenie jest dostępne.

Wpisanie polecenia powie Ci, czy jest ono dostępne!.

Prawdopodobnie miał na myśli "z out executing the polecenie" lub ", aby umieścić go w skrypcie " , ale nie mogę czytać w jego myślach (to nie to, że nie mogę regularnie, to tylko to, że ma na sobie deflektor czytania w myślach )

 -3
Author: OscarRyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:57:33

W Debianie: ls / bin / / grep "whatImSearchingFor"

 -5
Author: Gabriel Sosa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-04 00:37:41