web-dev-qa-db-fra.com

Comment lire le code source des commandes Shell?

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

132
Luigi Tiburzi

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É

148
Zagorax

Liens directs vers les sources de certains programmes populaires dans coreutils :

Liste complète ici.

103
Drew Noakes

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 .

6
Denys Séguret

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.

4
hurufu

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

1
slashmais

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.

0
Danilo Akou