Команда Linux для перечисления всех доступных команд и псевдонимов

есть ли команда Linux, которая перечислит все доступные команды и псевдонимы для этого терминального сеанса?

как если бы вы набрали 'a' и нажали tab, но для каждой буквы алфавита. Или запуск "псевдонима", но и возврат команд.

почему? Я хотел бы запустить следующее и посмотреть, доступна ли команда:

ListAllCommands | grep searchstr

21 ответов


вы можете использовать встроенный bash(1)compgen

  • compgen -c список всех команд можно запускать.
  • compgen -a перечислит все псевдонимы, которые вы могли бы запустить.
  • compgen -b перечислит все встроенные модули, которые вы можете запустить.
  • compgen -k перечислит все ключевые слова, которые вы можете запустить.
  • compgen -A function буду перечислять все функции, которые вы могли бы выполнить.
  • compgen -A function -abck перечислит все вышеперечисленное в одном идти.

Проверьте man-страницу для других завершений, которые вы можете создать.

отвечая на ваш вопрос:

compgen -ac | grep searchstr

должны делать то, что вы хотите.


добавить .bashrc и

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

Если вы также хотите псевдонимы, то:

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
}

есть

type -a mycommand

команда, в которой перечислены все псевдонимы и команды в $PATH where mycommand есть. Может использоваться для проверки наличия команды в нескольких вариантах. Другие, чем, что... Вероятно, есть какой-то скрипт, который анализирует $PATH и все псевдонимы, но не знает ни о каком таком скрипте.


используйте "which searchstr". Возвращает путь двоичного файла или настройки псевдонима, если это псевдоним

изменить: Если вы ищете список псевдонимов, вы можете использовать:

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

добавьте это в любой путь поиска ответа, который вам нравится. Предполагает, что вы используете bash..


попробовать этот скрипт:

#!/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

полезно перечислить команды на основе ключевых слов, связанных с командой.

использование: man -k "your keyword"

смело сочетать с:| grep "another word"

например, чтобы найти текстовый редактор: man -k editor | grep text


попробуйте нажать ALT -? (Alt и вопросительный знак одновременно). Дайте ему пару секунд, чтобы составить список. Он должен работать в bash.


вот решение, которое дает вам список всех исполняемых и псевдонимы. Он также переносится в системы без xargs -d (например, Mac OS X) и правильно обрабатывает пути с пробелами в них.

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

использование: myscript.sh [grep-options] pattern, например, найти все команды, которые начинаются с ls, без учета регистра, сделать:

myscript -i ^ls

для пользователей Mac (найти не имеет-исполняемого файла и xargs не имеет -d):

echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'

shortcut метод, чтобы перечислить все команды. Откройте терминал и нажмите два раза "tab". Это показывает все команды в terminal


команда others не работала для меня во встроенных системах, потому что им требуется bash или более полная версия xargs.

следующие команды должны работать на любой Unix-подобной системе.

списке папку :

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

Список всех команд с именем

ls $(echo $PATH | tr ':' ' ') | grep -v '/' | sort

вы всегда можете следующим образом:

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

оболочка будет выполнять команду, только если они перечислены в пути env var в любом случае.


Это зависит, под этим я подразумеваю, что это зависит от того, какую оболочку вы используете. вот ограничения, которые я вижу:

  1. должен работать в том же процессе, что и ваша оболочка, чтобы поймать псевдонимы, функции и переменные, которые повлияют на команды, которые вы можете найти, подумать о пути или редакторе, хотя редактор может быть вне области. Вы можете иметь несообщаемые переменные, которые могут влиять на вещи.
  2. это конкретная оболочка или ваш уход в ядро, /proc/pid/enviorn и друзья не есть достаточно информации

Я использую ZSH, поэтому вот ответ zsh, он делает следующие 3 вещи:

  1. путь дампы
  2. dumps псевдонимы
  3. функции дампов, которые находятся в env
  4. сортирует их

вот это:

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

Если вы используете zsh, это должно сделать это.


кроме того, вы можете получить удобный список команд в сочетании с быстрыми описаниями (если команда имеет man-страницу, что большинство делает):

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.)

тогда вы просто grep это, как вы хотите.

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

результаты, похоже, не сортируются, поэтому, если вы ищете длинный список, вы можете бросить | сортировать | в середину, а затем передать это на пейджер, как less/more/most. Ала:

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

который возвращает отсортирован список всех команд, которые имеют " zip "в своем имени или их кратком описании, и насосы, которые" меньше " пейджера. (Вы также можете заменить "меньше" на $PAGER и использовать пейджер по умолчанию.)


проблема в том, что вкладка-завершение ищет ваш путь, но все команды не находятся в вашем пути.

чтобы найти команды в вашем пути с помощью bash, вы можете сделать что-то вроде :

для x в echo $PATH | cut -d":" -f1; do LS $x; done


вот функция, которую вы можете поместить в свой файл bashrc:

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

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

   export IFS=${oldIFS}
}

пример использования:

$ 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-это переменная, которую bash использует для разделения строк.

конечно, там могут быть некоторые лучшие способы сделать это.


может быть, я недопонимаю, но что, если вы нажмете Escape, пока не получите отображение всех возможностей X ?


основные команды:

$ touch : - пользователь для создания пустого файла

Syn: - нажмите имя файла

Ex: нажмите рама

$LS список файлов и каталогов

$ ls-l длинный список

тип файла, разрешения, файлы ссылок, имя пользователя(или)владельца, имя группы, размер файла, отметка времени, имя файла или каталога.

– обычный (или) обычный файл

каталог d

Я ссылка

ls - a: показать все (включая скрытые файлы)

скрытые файлы и папки начинать . (точка)

найти больше команд @ http://k2schools.com/linux-commands/


compgen -c > list.txt && wc list.txt

почему бы вам просто не ввести:

seachstr

в терминале.

снаряд будет сказать somehing как

seacrhstr: command not found 

EDIT:

хорошо, я беру downvote, потому что ответ глупый, я просто хочу знать: что не так с этим ответом!!! Спрашивающий сказал:--3-->

и посмотреть, доступна ли команда.

ввод команды скажет вам, если это в наличии!.

вероятно, он имел в виду "без выполнения команды" или "включить его в сценарий" но я не могу читать его мысли ( не то, что я не могу регулярно это просто, что он носит чтение мыслей дефлектор )


в debian: ls/ bin | / grep "whatImSearchingFor"