Получить все команды linux

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

Есть ли команда Linux, которая будет перечислять все доступные команды и псевдонимы для этого сеанса терминала? Как будто вы набрали «a» и нажали вкладку, но для каждой буквы алфавита. Или запускайте «псевдоним», но также возвращаете команды. Почему? Я хотел бы запустить следующее и посмотреть, доступна ли команда:

ListAllCommands | grep searchstr 

21 ответ

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

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

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

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

compgen -ac | grep searchstr 

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

Есть ли эквивалент этого для csh / tcsh? Эти терминалы также имеют какую-то функцию автозаполнения, используемую на вкладке, так что, может быть, что-то существует?

Вместо compgen | grep , может быть более эффективно передать строку в качестве аргумента самой compgen (если он известен как префикс, как подразумевается в вопросе). В этом случае это будет compgen -ac searchstr .

На самом деле, Ubuntu показывает «ничего не подходит» на whatis compgen и «Нет ручного ввода» для man compgen .

@MarAvFe: Это потому, что это встроенная команда bash , а не отдельная команда со своей собственной страницей руководства. Вам нужно прочитать help compgen страницу bash(1) или запустить help compgen в командной строке bash .

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 > 

Это очень близко, но это не включая псевдонимы. Как я могу добавить псевдоним | сократить -f1 до результатов, но до сортировки?

Зачем беспокоиться о сортировке, если единственная цель состоит в том, чтобы в любом случае поставить вывод через grep? Философия Unix состоит в том, чтобы создавать простые инструменты, а затем объединять их в цепочки, если это необходимо, поэтому не включайте сортировку в ListAllCommands и, если пользователь хочет отсортировать вывод, он может это сделать.

@fotomut Может быть, вы используете Mac OS? На Mac вы можете вместо этого запустить: find . -type f -exec sh -c ‘test -x <> && echo <>‘ \; Это сработало для меня при рекурсивном поиске исполняемых файлов в текущей папке.

Читайте также:  Emu 0404 usb linux

@VictorZamanian На самом деле я ssh в Unix. Но ответ хранилища работает для меня на моем unix и моем mac тоже.

Это не находит команды, которые являются символическими ссылками на исполняемые файлы. Используйте опцию -L on, чтобы следовать символическим ссылкам к их месту назначения. Примечание: -L является опцией, а не частью соответствующего выражения, поэтому его необходимо поместить перед путем в командной строке. В этом случае find -L <>

Возможно, вы захотите перенаправить STDERR в / dev / null, чтобы подавить несуществующие предупреждения каталога. echo -n $PATH | xargs -d : -I <> find <> -maxdepth 1 -executable -type f -printf ‘%P\n’ 2> /dev/null | sort -u (+1 для совместимости с zsh)

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

Даже если это не ответ на вопрос, я думаю, что это лучшее решение проблемы, чем призыв к grep. Таким образом, вы можете выполнить команду -a foo, и если foo недоступен, она возвращает команду not found или что-то в этом роде. Таким образом, вы можете проверить команду без вызова самой команды.

На самом деле это ответ на вопрос, поскольку ОП спросил: «Я хотел бы выполнить следующее и посмотреть, доступна ли команда», поэтому цель состоит в том, чтобы проверить, доступна ли команда, и этот ответ четко работает.

@lothar, что если команда, которую вы ищете, это что-то вроде «startserver» ?, «serverstart» ?, «server-что-or-other» ?. Я знаю, я просто «grep -i» для сервера и посмотреть, если это там. К сожалению. Бззз, не с этим решением. matey 🙂 Я не собираюсь опровергать этот ответ (поскольку он полезен, даже если он ограничен), но полное решение будет учитывать, что grep предназначен для регулярных выражений , а не только для фиксированных строк.

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

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

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

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

Попробуйте выполнить 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 

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

Читайте также:  494 burn fw linux kernel error

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

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

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

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

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

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

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

Спасибо за это. На самом деле я использую не-Mac Unix, где ответ @AntsAasma не работает. Это работает для меня на Mac и мой Unix тоже. Какую команду я могу набрать, чтобы определить версию Unix, на которой я нахожусь, чтобы я мог ответить здесь, чтобы помочь другим в моей проблеме?

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

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

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

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

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

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

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

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

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.

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

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

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

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 и использовать пейджер по умолчанию.)

Читайте также:  Изменить раздел linux swap

Источник

Справочник 70 основных команд Linux: полное описание с примерами

Справочник основных команд Linux

Одним из коренных отличий семейства ОС Linux от ОС Windows является ведущая роль командной строки или терминала в администрировании системы. Для успешной работы с «Линукс» одного графического интерфейса недостаточно. Полноценное управление тут возможно только через терминал. А в работе с терминалом никак не обойтись без изучения основных команд Linux.

В Linux насчитывается несколько сотен основных команд и их модификаций. Они группируются по нескольким категориям. По расположению — могут быть утилитами командной строки или встроенной функцией командной оболочки. По частоте применения – используемыми постоянно, эпизодически и редко. По типам действий – от получения справки до управления файлами и процессами. Именно третья, функциональная составляющая и станет основой группировки утилит в этой статье.

В обзоре собраны все важнейшие команды Linux, которые могут пригодиться для администрирования ОС Linux. Статья рассчитана как на новичков, так и на продвинутых пользователей, уже знакомых с основным функционалом терминала. Эту своеобразную шпаргалку можно смело добавлять в закладки всем, кто хочет извлечь из «Линукс» максимум полезных свойств и повысить свою продуктивность в несколько раз.

Справочная информация / документация

man

(Manual). Показывает инструкцию к программам и командам Linux. Чтобы получить руководство для программы, наберите:

whatis

whereis

Источник

Оцените статью
Adblock
detector