Есть ли команда Linux, которая перечислит все доступные команды и псевдонимы для этого терминального сеанса?
Как будто вы набрали «а» и нажали клавишу табуляции, но для каждой буквы алфавита. Или запускать псевдоним, а также возвращать команды.
Зачем? Я хотел бы запустить следующее и посмотреть, доступна ли команда:
ListAllCommands | grep searchstr
linux
command-line
terminal
извед
источник
источник
Ответы:
Вы можете использовать встроенную в Bash (1)
compgen
compgen -c
перечислит все команды, которые вы могли бы выполнить.compgen -a
перечислит все псевдонимы, которые вы могли бы запустить.compgen -b
перечислит все встроенные модули, которые вы можете запустить.compgen -k
перечислит все ключевые слова, которые вы могли бы запустить.compgen -A function
перечислит все функции, которые вы могли бы запустить.compgen -A function -abck
перечислю все вышеперечисленное за один раз.Проверьте справочную страницу для других дополнений, которые вы можете создать.
Чтобы прямо ответить на ваш вопрос:
должен делать то, что ты хочешь.
источник
compgen | grep
этого может быть более эффективно передать строку в качестве аргумента самомуcompgen
себе (если известно, что это префикс, как подразумевается в вопросе). В этом случае это будетcompgen -ac searchstr
.whatis compgen
и «Нет ручного ввода» дляman compgen
.bash
встроенная, а не отдельная команда со своей собственной страницей руководства. Вам нужно прочитатьbash(1)
справочную страницу или запуститьhelp compgen
изbash
командной строки.compgen -c | sort | uniq | less
выведет все доступные команды без дублированных строк и отсортированных по алфавиту.Добавить в .bashrc
Если вам также нужны псевдонимы, тогда:
источник
-L
чтобы следовать символическим ссылкам к их месту назначения. Примечание:-L
это опция, а не часть соответствующего выражения, поэтому она должна быть помещена перед путем в командной строке. В данном случаеfind -L {}
echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 -executable -type f -printf '%P\n' 2> /dev/null | sort -u
(+1 для совместимости с zsh)Здесь
команда, которая перечисляет все псевдонимы и команды в $ PATH, где используется mycommand . Может использоваться, чтобы проверить, существует ли команда в нескольких вариантах. Кроме этого ... Возможно, есть какой-то скрипт, который анализирует $ PATH и все псевдонимы, но не знает ни о каком таком скрипте.
источник
Используйте "which searchstr". Возвращает путь двоичного файла или настройки псевдонима, если это псевдоним
Изменить: Если вы ищете список псевдонимов, вы можете использовать:
Добавьте это в любой ответ поиска PATH, который вам нравится. Предполагается, что вы используете Bash ..
источник
Другие команды не работают для меня во встроенных системах, потому что они требуют bash или более полной версии xargs (busybox был ограничен).
Следующие команды должны работать в любой Unix-подобной системе.
Список по папке:
Список всех команд по имени
источник
tr
. Почему не простоls $(echo ${PATH//:/ })
?Попробуйте этот скрипт:
источник
Для пользователей Mac ( find не имеет -executable и xargs не имеет -d):
источник
Полезно перечислить команды на основе ключевых слов, связанных с командой.
Использование:
man -k "your keyword"
не стесняйтесь сочетать с:
| grep "another word"
например, чтобы найти текстовый редактор:
man -k editor | grep text
источник
Попробуйте нажать ALT-? (alt и вопросительный знак одновременно). Дайте секунду или две, чтобы построить список. Это должно работать в Bash.
источник
Вот решение, которое дает вам список всех исполняемых файлов и псевдонимов. Он также переносим на системы без
xargs -d
(например, Mac OS X) и правильно обрабатывает пути с пробелами в них.Использование:
myscript.sh [grep-options] pattern
например, чтобы найти все команды, которые начинаются сls
регистра без учета регистра, выполните:источник
ярлык метод, чтобы перечислить все команды. Откройте терминал и дважды нажмите кнопку «вкладка» . Это показывает все команды в терминале
источник
grep
точно?Кроме того, вы можете получить удобный список команд в сочетании с краткими описаниями (при условии, что у команды есть справочная страница, что большинство делает):
Тогда вы просто делаете это так, как хотите.
выходы:
Результаты не сортируются, поэтому, если вы ищете длинный список, вы можете бросить | сортировать | в середину, а затем направьте это на пейджер, как меньше / больше / больше. ала:
Который возвращает отсортированный список всех команд, которые имеют «zip» в названии или кратком описании, и прокачивает этот «менее» пейджер. (Вы также можете заменить «less» на $ PAGER и использовать пейджер по умолчанию.)
источник
Вы всегда можете к следующему:
Оболочка выполнит команду, только если они все равно перечислены в пути env var.
источник
это зависит от того, что я имею в виду, это зависит от того, какую оболочку вы используете. Вот ограничения, которые я вижу:
Я использую ZSH, поэтому вот ответ zsh, он делает 3 вещи:
вот:
Если вы используете zsh, это должно быть сделано.
источник
Проблема в том, что завершение табуляции ищет ваш путь, но не все команды находятся на вашем пути.
Чтобы найти команды на вашем пути, используя bash, вы можете сделать что-то вроде:
для х в
echo $PATH | cut -d":" -f1
; сделать ls $ x; сделаноисточник
Вот функция, которую вы можете поместить в ваш файл bashrc:
Пример использования:
К вашему сведению: IFS - это переменная, которую bash использует для разделения строк.
Конечно, могут быть и лучшие способы сделать это.
источник
может быть, я неправильно понимаю, но что если вы нажмете Escape, пока не получите возможности «Показать все X»?
источник
источник
compgen -c > /tmp/list.txt && /tmp/wc list.txt
Почему бы вам просто не набрать:
В терминале.
Оболочка скажет что-то вроде
РЕДАКТИРОВАТЬ:
Хорошо, я принимаю отрицательный ответ, потому что ответ глуп, я просто хочу знать: что не так с этим ответом !!! Аскер сказал:
Ввод команды скажет вам, если она доступна!
Возможно, он имел в виду «без выполнения команды» или «включить ее в сценарий», но я не могу читать его мысли (не то, что я не могу регулярно, просто он носит дефлектор чтения мыслей )
источник
formathdd
существует ли команда. Ой, подождите, я просто запустить его и посмотреть. гы. Спасибо :)в Debian: ls / bin / | grep "whatImSearchingFor"
источник