Me gustaría leer el código fuente real con el que se escriben los comandos de Linux. He adquirido cierta 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 . Lamentablemente, no pude encontrar comandos básicos como 'ls', que me parece bastante fácil de comenzar.
¿Cómo leo exactamente el código fuente de los comandos de shell simples como 'ls'? Estoy corriendo en Ubuntu 12.04
linux
command
gnu-coreutils
Luigi Tiburzi
fuente
fuente
ls
no es parte de Linux, es parte de Gnu. Gnu se ejecuta en Linux y otros núcleos.Respuestas:
Todos estos comandos básicos son parte del
coreutils
paquete.Puede encontrar toda la información que necesita aquí:
http://www.gnu.org/software/coreutils/
Si desea descargar la última fuente, debe usar 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í puede encontrar una fuente específica para el
ls
comando:http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
Solo 4984 líneas de código para un comando 'bastante fácil' como
ls
... ¿todavía está interesado en leerlo? ¡Buena suerte! :REfuente
cat
. Son solo 767 líneas.Only 4984 code lines ...
- Parece que en 4 años y 3 meses sels
ha convertido en otras 57 líneas más complejas.wc
es mucho más rápido que un programa Java equivalente. Así que miré el código ... OMG está optimizado para lecturas de disco, entradas de almacenamiento en búfer, etc. o qué :)Enlaces directos a la fuente de 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)Lista completa aquí.
fuente
su
?ls
es parte de coreutils. Puedes conseguirlo con git:Encontrará coreutils enumerados con otros paquetes (desplácese hacia abajo) en esta página .
fuente
En realidad, http://suckless.org proporciona fuentes más sanas en su
sbase
repositorio:git clone git://git.suckless.org/sbase
Son más claros, más inteligentes, más simples y desagradables, por ejemplo,
ls.c
solo tiene 369 LOCDespués de eso, será más fácil entender el código GNU más complicado.
fuente
CoreUtils mencionado en otras publicaciones NO muestra la implementación real de la mayoría de las funciones que creo que busca. En la mayoría de los casos, proporciona interfaces para las funciones reales que recuperan los datos, que se pueden encontrar aquí:
Está construido sobre Gnulib con el código fuente real en el subdirectorio lib
fuente
Puedes tenerlo en github usando el comando
Puede encontrar todos los códigos fuente en la carpeta src.
Las cosas han cambiado desde 2012, el
ls
código fuente ahora tiene 5309 líneasfuente
Debería poder usar un comando como este en ubuntu para recopilar la fuente de un paquete, puede omitir
sudo
su descarga en la ubicación que posee.fuente