Команда 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"