Сколько команд в системе?
Для начала -- каким образом можно узнать. какие команды имеют место быть в нашей системе? В первом приближении этому послужит клавиша табуляции: нажав ее в пустой командной строке, мы (в большинстве случаев) получим сообщение вроде такого:
do you wish to see all XXX possibilities (YYY lines)?
И если согласимся с этим предложением (нажав клавишу y), то нашему взору предстанет всё доступное изобилие команд.
Конечно, с некоторыми оговорками. Клавиша табуляции не извлекает волшебным образом имена команд откуда-то из загашников системы. Нет, она просто выводит список всех исполняемых файлов (то есть файлов, для которых установлен атрибут исполнения), расположенных в каталогах, перечисленных как значения переменной PATH
.
Из чего следует, что, во-первых, список этот будет разным для обычного пользователя и для администратора. Потому что значения переменной PATH
у них, как правило, по умолчанию разные (или -- должны быть таковыми в правильно настроенной системе). Как уже говорилось, для юзера в ответ на команду
$ echo $PATH
обычно можно увидеть список вроде
/bin /usr/bin /usr/bin /usr/local/bin
тогда как для root'а к нему добавятся пути вроде
/sbin /usr/sbin /usr/local/sbin
Во-вторых, как-то уже упоминалось, что одна и та же команда может иметь более чем одно имя -- например, /bin/bash
и /bin/sh
. Эти синонимичные имена (их не следует смешивать с псевдонимами -- те в списке по нажатию табулятора не встречаются) представляют собой жесткие или символические ссылки на одну и ту же программу. Создавая, таким образом, иллюзию того, будто команд в системе больше, чем на самом деле.
В третьих, получаемый по нажатию табулятора список включает только файлы из каталогов, стандартно перечисляемых в переменной PATH
. И некоторые программы, которые в ряде дистрибутивов Linux часто норовят установиться в каталоги вида /opt/pkg_name
, вполне могут и не попасть в список, если значения переменной PATH
не скорректированы должным образом.
Однако первое представление о наличных командах, тем не менее, с помощью табулятора получить можно. На худой конец всегда есть возможность просто просмотреть содержимое каталогов и исполняемыми файлами, как было сказано выше:
$ ls /{bin,sbin} /usr/{bin,sbin} /usr/local/{bin,sbin}
Остается установить только, что каждая из наличествующих команд делает -- не всегда же можно определить ее функции по англо-русскому словарю. И тут нам на помощь приходит самая главная команда -- команда man
.