Команда 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 в любом случае.
Это зависит, под этим я подразумеваю, что это зависит от того, какую оболочку вы используете. вот ограничения, которые я вижу:
- должен работать в том же процессе, что и ваша оболочка, чтобы поймать псевдонимы, функции и переменные, которые повлияют на команды, которые вы можете найти, подумать о пути или редакторе, хотя редактор может быть вне области. Вы можете иметь несообщаемые переменные, которые могут влиять на вещи.
- это конкретная оболочка или ваш уход в ядро, /proc/pid/enviorn и друзья не есть достаточно информации
Я использую ZSH, поэтому вот ответ zsh, он делает следующие 3 вещи:
- путь дампы
- dumps псевдонимы
- функции дампов, которые находятся в env
- сортирует их
вот это:
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/
почему бы вам просто не ввести:
seachstr
в терминале.
снаряд будет сказать somehing как
seacrhstr: command not found
EDIT:
хорошо, я беру downvote, потому что ответ глупый, я просто хочу знать: что не так с этим ответом!!! Спрашивающий сказал:--3-->
и посмотреть, доступна ли команда.
ввод команды скажет вам, если это в наличии!.
вероятно, он имел в виду "без выполнения команды" или "включить его в сценарий" но я не могу читать его мысли ( не то, что я не могу регулярно это просто, что он носит чтение мыслей дефлектор )