Как мне прочитать исходный код команд оболочки?
Я хотел бы прочитать фактический исходный код, с которым написаны команды Linux. Я приобрел некоторый опыт их использования, и теперь я думаю, что пришло время взаимодействовать с моей машиной на более глубоком уровне.
Я нашел несколько команд здесь http://directory.fsf.org/wiki/GNU. К сожалению, я не смог найти базовые команды, такие как "ls", которые мне кажутся достаточно простыми для начала.
Как именно я могу прочитать исходный код простых команд оболочки, таких как 'ls'? Я работаю на Ubuntu 12.04
Ответы
Ответ 1
Все эти основные команды являются частью пакета coreutils
.
Здесь вы можете найти всю необходимую информацию:
http://www.gnu.org/software/coreutils/
Если вы хотите загрузить последний источник, вы должны использовать git:
git clone git://git.sv.gnu.org/coreutils
Чтобы установить git на ваш компьютер Ubuntu, вы должны использовать apt-get (git не входит в стандартную установку Ubuntu):
sudo apt-get install git
По правде говоря, здесь вы можете найти конкретный источник для команды ls
:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
Только 4984 строк кода для команды "достаточно легко" как ls
... вы все еще заинтересованы в ее чтении? Удачи!: D
Ответ 2
Прямые ссылки на источник для некоторых популярных программ в coreutils
:
Полный список здесь.
Ответ 3
ls
является частью coreutils. Вы можете получить его с помощью git:
git clone git://git.sv.gnu.org/coreutils
Вы найдете coreutils, перечисленные с другими пакетами (прокрутите вниз) на на этой странице.
Ответ 4
На самом деле более зрелые источники предоставляются http://suckless.org в своем репозитории sbase
:
git clone git://git.suckless.org/sbase
Они более ясны, умнее, проще и непритязательны, например ls.c
имеет всего 369 LOC
После этого будет проще понять более сложный код GNU.
Ответ 5
Посетите, например:
http://ftp.gnu.org/pub/gnu/coreutils/
Вы можете просматривать код онлайн. Откройте один из архивов и проверьте папку src.
Ответ 6
CoreUtils, о котором говорится в других сообщениях, НЕ показывает реальную реализацию большинства функций, которые, как я думаю, вы ищете. В большинстве случаев он предоставляет интерфейсы для фактических функций, которые извлекают данные, которые можно найти здесь:
Он основан на Gnulib с фактическим исходным кодом в Lib-подкаталога
Ответ 7
Здесь вы можете найти множество команд:
http://www.opensource.apple.com/source/shell_cmds/shell_cmds-170/
Ответ 8
Вы можете получить его на GitHub с помощью команды
git clone https://github.com/coreutils/coreutils.git
Вы можете найти все исходные коды в папке src.
Вам нужно установить git.
С 2012 года все изменилось, исходный код ls
теперь содержит 5309 строк.
Ответ 9
cd ~ && apt-get source coreutils && ls -d coreutils*
Вы должны иметь возможность использовать такую команду на ubuntu для сбора источника для пакета, вы можете опустить sudo
при условии, что вы загрузите его в свое местоположение.