Какие языки используются для построения команд Unix?

9

Примеры команд я имею в виду это ls, pwdи cd. Кроме того, как они построены? У вас есть пример?

fronthem
источник
2
Это домашнее задание?
Стефан Ласевский

Ответы:

26

Обычно это просто C. Команды lsи pwdприходят из GNU Coreutilsпакета в (большинство?) Дистрибутивах Linux (и, возможно, в некоторых других системах). Вы можете найти код на их домашней странице .

В coreutilsчастности, вы создаете их обычными шагами: после распаковки исходного кода выполните:

./configure --prefix=/some/path
                   # type ./configure --help to get the available options
make
make install       # could require root access depending on the path you used

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

Обратите внимание, что хотя существует cdисполняемый файл , cdв большинстве случаев вы будете использовать его не как отдельный исполняемый файл. Он должен быть встроенным в оболочку (иначе он не может изменить текущий каталог оболочки - это должен делать сам процесс), поэтому он написан на том же языке, что и оболочка (что часто Cтоже).

Другие примеры:

  • OpenSolaris pwdисточник.
  • FreeBSD ls

Вы можете найти много других из них в Интернете.

Мат
источник
5

Просто чтобы добавить немного больше к ответу Мэта, хотя Unix реализует их как автономные программы, многие команды также реализованы внутри bash(чтобы избавить его от необходимости порождать новый процесс), смотрите bashстраницу руководства для более подробной информации или посмотрите тег.

bash также написано на C

Возможно, стоит отметить, что эти команды не должны быть написаны на C - действительно, некоторые дистрибутивы mini linux используют luaреализации этих и других.

symcbean
источник
2
Ну баш или любая другая хорошая оболочка.
Rds
1
Также обратите внимание, что некоторые команды, такие как, cdдолжны быть встроенными в оболочку для эффективной работы.
AProgrammer