2012-07-17 21 views
115

Me gustaría leer el código real con el que se escriben los comandos de Linux. He ganado experiencia en su uso y ahora creo que es hora de interactuar con mi máquina a un nivel más profundo. He encontrado algunos comandos aquí http://directory.fsf.org/wiki/GNU.¿Dónde puedo encontrar el código fuente para los comandos básicos de Linux?

Desafortunadamente no pude encontrar comandos básicos como 'ls' que me parece bastante fácil de comenzar.

¿Conoces alguna página web, libro o cualquier otra cosa para comenzar?

estoy corriendo en Ubuntu 12,04

+1

posible duplicado de [El código fuente de comandos de shell] (http://stackoverflow.com/questions/8417373/source-code-of-shell-commands) – Kevin

+0

Hola, también encuentro utilidades, es util-linux. Puede encontrarlo [aquí] (https://github.com/karelzak/util-linux) – acgtyrant

+0

'ls' no es parte de Linux, es parte de Gnu. Gnu se ejecuta en Linux y otros kernels. –

Respuesta

129

Todos estos comandos básicos son parte del paquete coreutils.

Puede encontrar toda la información que necesita aquí:

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

Si desea descargar la última fuente, se debe utilizar git:

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

Para instalar Git en su Máquina Ubuntu, debe usar apt-get (git no está incluido en la instalación estándar de Ubuntu):

sudo apt-get install git

A decir verdad, aquí se puede encontrar fuente específica para el comando ls:

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

Sólo las 4984 líneas de código para un comando 'bastante fácil' como ls ... ¿todavía interesado en leerlo ?? ¡Buena suerte! : D

+2

¡OMG! Pensé que era un poco más fácil ... Bueno, el camino es más largo y más difícil de lo esperado :-) –

+13

Pruebe la [fuente de 'cat'] (http://git.savannah.gnu.org/cgit/coreutils.git /tree/src/cat.c). Son solo 767 líneas. –

+2

'Solo 4984 líneas de código ...' - Parece que en 4 años y 3 meses 'ls' se ha convertido en otras 57 líneas más complejas. – sherrellbc

6

ls es parte de coreutils. Se puede conseguir con git:

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

Encontrará coreutils enumerados con otros paquetes (desplácese hacia abajo) en this page.

+0

o navegue por el repositorio en línea ... ej. http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c – Useless

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

Usted debe ser capaz de utilizar un comando como este en ubuntu para recabar el origen de un paquete, puede omitir sudo asumiendo su descarga a un lugar de su propiedad.

86

enlaces directos a la fuente para algunos programas populares en coreutils:

  • cat (767 líneas)
  • chmod (570 líneas)
  • cp (2912 líneas)
  • cut (831 líneas)
  • date (570 líneas)
  • df (1718 líneas)
  • du (1112 líneas)
  • echo (272 líneas)
  • head (1070 líneas)
  • hostname (116 líneas)
  • kill (312 líneas)
  • ln (651 líneas)
  • ls (4954 líneas)
  • md5sum (878 líneas)
  • mkdir (306 líneas)
  • mv (512 líneas)
  • nice (220 líneas)
  • pwd (394 líneas)
  • rm (356 líneas)
  • rmdir (252 líneas)
  • shred (1325 líneas)
  • tail (2301 líneas)
  • tee (220 líneas)
  • touch (437 líneas)
  • wc (801 líneas)
  • whoami (91 líneas)

Full list here.

+0

Gracias por el número de líneas. :) –

+0

¿Tiene 'su'? – Arin

3

En realidad, las fuentes más sensatas son provistas por http://suckless.org mira su sbase repositorio:

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

Ellos son más claras, más inteligente, más simple y suckless, por ejemplo ls.c tiene solo 369 LOC

Después de que será más fácil de entender el código GNU más complicado.

1

coreutils se hace referencia en otros mensajes no muestra la verdadera aplicación de la mayoría de la funcionalidad que creo que usted busca. En la mayoría de los casos se proporciona interfaces para las funciones reales que recuperan los datos, que se pueden encontrar aquí:

Se construye sobre Gnulib con el código fuente real en el lib-subdirectory

Cuestiones relacionadas