Me gustaría leer el código fuente real que los comandos de linux se escriben con. He adquirido experiencia en el uso de ellos y creo que ahora es el momento para interactuar con mi máquina a un nivel más profundo.

He encontrado algunos comandos aquí http://directory.fsf.org/wiki/GNU. Por desgracia, no fue capaz de encontrar comandos básicos tales como ‘ls’, que me parece bastante fácil para empezar.

Exactamente cómo hago para leer el código fuente de los simples comandos de la shell como ‘ls’?
Estoy corriendo en Ubuntu 12.04

  • Visite por ejemplo: ftp.gnu.org/pub/gnu/coreutils Usted puede examinar el código en línea. Abrir uno de los archivos y de verificación de la carpeta src.
  • Hola, me parece una de las utilidades demasiado, es util-linux. Usted puede encontrar aquí
  • ls no es parte de Linux, es parte de Gnu. Gnu se ejecuta en Linux y otros núcleos.
  • Me parece github interfaz más fácil para la lectura de código, github.com/coreutils/coreutils/blob/master/src/ls.c

7 Comentarios

  1. 157

    Todos estos comandos básicos son parte de la coreutils paquete.

    Usted puede encontrar toda la información que necesitas aquí:

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

    Si quieres descargar el código fuente más reciente, usted debe utilizar git:

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

    Para instalar git en tu Ubuntu máquina, usted debe utilizar apt-get (git no está incluido en la instalación estándar de Ubuntu):

    sudo apt-get install git

    Verdad sea dicha, aquí usted puede encontrar la fuente específica de la ls comando:

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

    Sólo 4984 líneas de código para un comando «bastante fácil» como ls … ¿todavía estás interesado en leerlo?? Buena suerte! 😀

    • 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 🙂
    • Pruebe el fuente para cat. Es sólo 767 líneas.
    • Only 4984 code lines ... — Parece que en 4 años y 3 meses ls ha convertido en otro de 57 líneas más complejas.
    • Recuerdo que una vez traté de entender por qué wc es mucho más rápido que el equivalente en Java programa. Así que busqué en el código … OMG es optimizado para las lecturas de disco, el búfer de entradas, etc, o qué 🙂
    • Yo no soy competente en C; ¿cómo puede saber lo que es la optimización para? Me puedes dar un ejemplo?
  2. 114

    Enlaces directos a la fuente de algunos programas populares en coreutils:

    Lista completa aquí.

    • Gracias por el listado con el número de líneas. 🙂
    • ¿Tienes su?
  3. 5

    Realidad más cuerdo fuentes son proporcionados por http://suckless.org vistazo a su sbase repositorio:

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

    Que son más claras, más inteligente, más simple y suckless, por ejemplo, la ls.c acaba de 369 LOC

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

  4. 1

    CoreUtils referido en otros posts NO muestran la verdadera aplicación de la mayoría de la funcionalidad que creo que usted busca. En la mayoría de los casos proporciona el front-ends para las funciones reales que recuperar los datos, que se puede encontrar aquí:

    Es construir sobre Gnulib con el código fuente en el lib-subdirectorio

  5. 1

    Usted puede tener en github con el comando

    git clone https://github.com/coreutils/coreutils.git
    

    Puede encontrar todos los códigos fuente en la carpeta src.

    Usted necesita tener git instalado.

    Las cosas han cambiado desde el año 2012, ls código fuente tiene ahora 5309 líneas

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

    Usted debería ser capaz de usar un comando como este en ubuntu para reunir el origen de un paquete, puede omitir sudo asumiendo que su descarga a una ubicación propia.

Dejar respuesta

Please enter your comment!
Please enter your name here