Ответы:
Обычно это просто 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
тоже).
Другие примеры:
Вы можете найти много других из них в Интернете.
Просто чтобы добавить немного больше к ответу Мэта, хотя Unix реализует их как автономные программы, многие команды также реализованы внутри bash
(чтобы избавить его от необходимости порождать новый процесс), смотрите bash
страницу руководства для более подробной информации или посмотрите оболочку. -встроенный тег.
bash
также написано на C
Возможно, стоит отметить, что эти команды не должны быть написаны на C - действительно, некоторые дистрибутивы mini linux используют lua
реализации этих и других.
cd
должны быть встроенными в оболочку для эффективной работы.