Команда Linux для получения списка всех доступных команд и псевдонимов - PullRequest
255 голосов
/ 04 июня 2009

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

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

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

ListAllCommands | grep searchstr

Ответы [ 21 ]

2 голосов
/ 04 июня 2009

Вот решение, которое дает вам список всех исполняемых файлов и псевдонимов. Он также переносим на системы без 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 "$@"

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

myscript -i ^ls
2 голосов
/ 25 сентября 2016

метод ярлыка для перечисления всех команд. Откройте терминал и дважды нажмите кнопку «tab» . Это показывает все команды в терминале

1 голос
/ 04 июня 2009

Вы всегда можете на следующее:

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 голос
/ 04 июня 2009

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

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

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

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

вот оно:

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

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

0 голосов
/ 04 июня 2009

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

seachstr

В терминале.

Снаряд скажет что-то вроде

seacrhstr: command not found 

EDIT:

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

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

При вводе команды вы узнаете, доступна ли она!

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

0 голосов
/ 04 июня 2009

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

0 голосов
/ 11 августа 2015

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

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

Син: - коснитесь имени файла

Пример: сенсорный рама

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

$ ls –l Длинный список

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

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

d каталог

Ссылочный файл

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

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

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

0 голосов
/ 05 апреля 2015
compgen -c > list.txt && wc list.txt
0 голосов
/ 04 июня 2009

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

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

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

0 голосов
/ 04 июня 2009

Вот функция, которую вы можете поместить в ваш файл 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*
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*
$

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...