2012-07-17 14 views
115

Mi piacerebbe leggere il codice reale con cui vengono scritti i comandi di linux. Ho acquisito una certa esperienza nell'usarli e ora penso che sia il momento di interagire con la mia macchina a un livello più profondo. Ho trovato alcuni comandi qui http://directory.fsf.org/wiki/GNU.Dove posso trovare il codice sorgente per i comandi principali di Linux?

Purtroppo non sono riuscito a trovare comandi di base come "ls", che mi sembra abbastanza facile da iniziare.

Ti capita di conoscere qualche pagina web, libro o qualsiasi altra cosa per iniziare?

Io corro su Ubuntu 12,04

+1

possibile duplicato del [codice sorgente di comandi di shell] (http://stackoverflow.com/questions/8417373/source-code-of-shell-commands) – Kevin

+0

Ciao, trovo anche le utility, è util-linux. Puoi trovarlo [qui] (https://github.com/karelzak/util-linux) – acgtyrant

+0

'ls' non fa parte di Linux, fa parte di Gnu. Gnu gira su Linux e altri kernel. –

risposta

129

Tutti questi comandi di base fanno parte del pacchetto coreutils.

Potete trovare tutte le informazioni necessarie qui:

http://www.gnu.org/software/coreutils/

Se volete scaricare l'ultima fonte, è necessario utilizzare git:

git clone git://git.sv.gnu.org/coreutils

Per installare git sul tuo Macchina Ubuntu, dovresti usare apt-get (git non è incluso nell'installazione standard di Ubuntu):

sudo apt-get install git

verità da raccontare, qui si possono trovare fonte specifica per il comando ls:

http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c

Solo 4984 linee di codice per un comando 'abbastanza facile' come ls ... sei ancora interessato a leggerlo ?? In bocca al lupo! : D

+2

OMG! Ho pensato che fosse un po 'più facile ... Beh, il percorso è più lungo e più duro del previsto :-) –

+13

Prova la [fonte per 'cat'] (http://git.savannah.gnu.org/cgit/coreutils.git /tree/src/cat.c). Sono solo 767 linee. –

+2

'Solo 4984 righe di codice ...' - Sembra che tra 4 anni e 3 mesi 'ls' siano diventate altre 57 linee più complesse. – sherrellbc

6

ls fa parte di coreutils. Si può ottenere con git:

git clone git://git.sv.gnu.org/coreutils 

Troverete coreutils elencati con altri pacchetti (scorrere verso il basso) su this page.

+0

o consultare il repository online ... ad es. http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c – Useless

-1
cd ~ && apt-get source coreutils && ls -d coreutils*  

Si dovrebbe essere in grado di utilizzare un comando come questo su Ubuntu per raccogliere l'origine per un pacchetto, è possibile omettere sudo supponendo che il download per una posizione che si possiede.

86

collegamenti diretti alla fonte per alcuni programmi popolari coreutils:

Full list here.

+0

Grazie per l'elenco con il numero di linee. :) –

+0

Avete 'su'? – Arin

3

In realtà più fonti sensate sono fornite da http://suckless.org look al loro sbase repository:

git clone git://git.suckless.org/sbase

Essi sono più chiari, più intelligente, più semplice e suckless, ad esempio, ha appena ls.c 369 LOC

Dopo di che sarà più facile da capire il codice GNU più complicato.

1

CoreUtils di cui in altri post non mostra l'effettiva attuazione della maggior parte delle funzionalità che credo che cercate. Nella maggior parte dei casi si fornisce front-end per le funzioni effettive che recuperano i dati, che possono essere trovati qui:

È costruire su Gnulib con il codice sorgente effettivo nel lib-subdirectory

Problemi correlati