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

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

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

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

ListAllCommands | grep searchstr

Ответ 1

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

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

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

Чтобы прямо ответить на ваш вопрос:

compgen -ac | grep searchstr

должен делать то, что вам нужно.

Ответ 2

Добавить в .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
}

Ответ 3

Существует

type -a mycommand

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

Ответ 4

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

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

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

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

Ответ 5

Попробуйте выполнить script:

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

Ответ 6

Другие команды не работают для меня во встроенных системах, потому что они требуют bash или более полной версии xargs (busybox был ограничен).

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

Список по папке:

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

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

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

Ответ 7

Для пользователей Mac (find не имеет -executable и xargs не имеет -d):

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

Ответ 8

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

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

не стесняйтесь сочетать: | grep "another word"

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

Ответ 9

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

Ответ 10

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

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

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

myscript -i ^ls

Ответ 11

метод быстрого вызова для отображения всех команд. Откройте терминал и дважды нажмите кнопку "Tab". Thats показывает все команды в терминале

Ответ 12

Вы всегда можете выполнить следующие действия:

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.

Ответ 13

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

  • должен работать в том же процессе, что и ваша оболочка, для поиска псевдонимов и функций и переменных, которые будут влиять на команды, которые вы можете найти, подумайте о PATH или EDITOR, хотя РЕДАКТОР может оказаться вне сферы действия. У вас могут быть невыполненные переменные, которые могут влиять на вещи.
  • это оболочка специфическая или ваш выход в ядро, /proc/pid/enviorn и друзей не хватает информации

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

  • dumps path
  • выдает имена псевдонимов
  • выдает функции, находящиеся в env
  • сортирует их

вот он:

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

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

Ответ 14

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

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

Затем вы просто смажете его, как хотите.

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

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

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

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

Ответ 15

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

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

для x в echo $PATH | cut -d":" -f1; do ls $x; сделано

Ответ 16

Здесь вы можете добавить функцию в файл bashrc:

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

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

   export IFS=${oldIFS}
}

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

$ command-search gnome
gnome-audio-profiles-properties*
[email protected]
gnome-keyring*
gnome-keyring-daemon*
gnome-mount*
gnome-open*
gnome-sound-recorder*
[email protected]
[email protected]
gnome-volume-control*
polkit-gnome-authorization*
vim.gnome*
$

FYI: IFS - это переменная, которая bash использует для разделения строк.

Конечно, может быть несколько лучших способов сделать это.

Ответ 17

Может быть, я не понимаю, но что, если вы нажмете Escape, пока не получите возможности Display All X?

Ответ 18

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

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

Syn: - имя файла прикосновения

Ex: touch rama

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

$ls -l Длинное перечисление

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

- обычный (или) нормальный файл

d каталог

l файл ссылки

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

Скрытые файлы и каталоги начинаются с. (Точка)

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

Ответ 19

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

Ответ 20

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

seachstr

В терминале.

Оболочка скажет, как

seacrhstr: command not found 

EDIT:

Хорошо, я беру downvote, потому что ответ глуп, я просто хочу знать: что случилось с этим ответом!!! Ответчик сказал:

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

Ввод команды подскажет вам, доступна ли она.

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

Ответ 21

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