Сколько команд в системе?

Для начала -- каким образом можно узнать. какие команды имеют место быть в нашей системе? В первом приближении этому послужит клавиша табуляции: нажав ее в пустой командной строке, мы (в большинстве случаев) получим сообщение вроде такого:

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.

. .