Je voudrais lire le code source actuel avec lequel les commandes linux sont écrites. J'ai acquis une certaine expérience en les utilisant et maintenant je pense qu'il est temps d'interagir plus profondément avec ma machine.
J'ai trouvé quelques commandes ici http://directory.fsf.org/wiki/GNU . Malheureusement, je n'ai pas réussi à trouver des commandes de base telles que «ls», ce qui me semble assez facile pour commencer.
Comment puis-je lire le code source des commandes Shell simples comme "ls"? Je suis sous Ubuntu 12.04
Toutes ces commandes de base font partie du package coreutils
.
Vous pouvez trouver toutes les informations dont vous avez besoin ici:
http://www.gnu.org/software/coreutils/
Si vous voulez télécharger la dernière source, vous devez utiliser git:
git clone git://git.sv.gnu.org/coreutils
Pour installer git sur votre machine Ubuntu, vous devez utiliser apt-get (git n’est pas inclus dans l’installation standard d’Ubuntu):
Sudo apt-get install git
En vérité, vous pouvez trouver ici une source spécifique pour la commande ls
:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
Seulement 4984 lignes de code pour une commande 'assez facile' en tant que ls
... êtes-vous toujours intéressé à le lire?? Bonne chance! :RÉ
Liens directs vers les sources de certains programmes populaires dans coreutils
:
cat
(767 lignes)chmod
(570 lignes)cp
(2912 lignes)cut
(831 lignes)date
(570 lignes)df
(1718 lignes)du
(1112 lignes)echo
(272 lignes)head
(1070 lignes)hostname
(116 lignes)kill
(312 lignes)ln
(651 lignes)ls
(4954 lignes)md5sum
(878 lignes)mkdir
(306 lignes)mv
(512 lignes)Nice
(220 lignes)pwd
(394 lignes)rm
(356 lignes)rmdir
(252 lignes)shred
(1325 lignes)tail
(2301 lignes)tee
(220 lignes)touch
(437 lignes)wc
(801 lignes)whoami
(91 lignes)ls
fait partie de coreutils. Vous pouvez l'obtenir avec git:
git clone git://git.sv.gnu.org/coreutils
Vous trouverez coreutils dans la liste avec d'autres paquets (défiler vers le bas) sur cette page .
http://suckless.org regardez leur dépôt sbase
:
git clone git://git.suckless.org/sbase
Ils sont plus clairs, plus intelligents, plus simples et sans problème, par exemple ls.c
a seulement 369 LOC
Après cela, il sera plus facile de comprendre un code plus complexe GNU.
CoreUtils mentionné dans d’autres publications ne montre PAS l’implémentation réelle de la plupart des fonctionnalités que vous recherchez, je pense. Dans la plupart des cas, il fournit des interfaces pour les fonctions qui extraient les données, qui peuvent être trouvées ici:
Il est construit sur Gnulib avec le code source actuel dans le sous-répertoire lib
Vous pouvez l'avoir sur github en utilisant la commande
git clone https://github.com/coreutils/coreutils.git
Vous pouvez trouver tous les codes sources dans le dossier src.
Vous devez avoir git installé.
Les choses ont changé depuis 2012, le code source ls
compte maintenant 5309 lignes.