Я хотел бы прочитать фактический исходный код, на котором написаны команды Linux. Я приобрел некоторый опыт их использования, и теперь я думаю, что пришло время взаимодействовать с моей машиной на более глубоком уровне.
Я нашел несколько команд здесь http://directory.fsf.org/wiki/GNU . К сожалению, я не смог найти базовые команды, такие как «ls», которые мне кажутся достаточно простыми для начала.
Как именно я могу прочитать исходный код простых команд оболочки, таких как 'ls'? Я работаю на Ubuntu 12.04
linux
command
gnu-coreutils
Луиджи Тибурзи
источник
источник
ls
это не часть Linux, это часть Gnu. Gnu работает на Linux и других ядрах.Ответы:
Все эти основные команды являются частью
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источник
cat
. Всего 767 строк.Only 4984 code lines ...
- Кажется, за 4 года и 3 месяцаls
стало еще на 57 строк сложнее.wc
это намного быстрее, чем эквивалентная Java-программа. Итак, я посмотрел на код ... OMG, он оптимизирован для чтения с диска, буферизации входных данных и т. Д. Или чего-то еще :)Прямые ссылки на источники для некоторых популярных программ в
coreutils
:cat
(767 строк)chmod
(570 строк)cp
(2912 строк)cut
(831 строка)date
(570 строк)df
(1718 строк)du
(1112 строк)echo
(272 строки)head
(1070 строк)hostname
(116 строк)kill
(312 строк)ln
(651 строка)ls
(4954 строки)md5sum
(878 строк)mkdir
(306 строк)mv
(512 строк)nice
(220 строк)pwd
(394 строки)rm
(356 строк)rmdir
(252 строки)shred
(1325 строк)tail
(2301 строчка)tee
(220 строк)touch
(437 строк)wc
(801 строка)whoami
(91 строка)Полный список здесь.
источник
su
?ls
является частью coreutils. Вы можете получить это с помощью git:Вы найдете coreutils, перечисленные с другими пакетами (прокрутите вниз) на этой странице .
источник
На самом деле более здравомыслящие источники предоставлены http://suckless.org, посмотрите на их
sbase
репозиторий:git clone git://git.suckless.org/sbase
Они более четкие, умные, простые и бесполезные, например,
ls.c
имеют всего 369 LOCПосле этого будет легче понять более сложный код GNU.
источник
CoreUtils, о котором говорится в других статьях, НЕ показывает реальную реализацию большинства функций, которые, я думаю, вы ищете. В большинстве случаев он предоставляет внешние интерфейсы для реальных функций, которые извлекают данные, которые можно найти здесь:
Он построен на Gnulib с фактическим исходным кодом в подкаталоге lib
источник
Вы можете получить его на GitHub с помощью команды
Вы можете найти все исходные коды в папке src.
Вещи изменились с 2012 года,
ls
исходный код теперь 5309 строкисточник
Вы должны иметь возможность использовать подобную команду в Ubuntu для сбора исходного кода для пакета, вы можете пропустить его,
sudo
предполагая, что вы загружаете его в свое место.источник