Tengo algunas dudas con respecto a * nix.
No sé qué tipo de archivo ejecutable es
ls
, si es .sh o .ksh o cualquier otro tipo de sistema ejecutable si lo es, ¿qué es eso?cuando traté de ver cómo se ve el código fuente del
ls
comando, muestra algo ilegible, qué método usa * nix para crear este tipo de archivos ilegibles y puedo hacer que mis archivos sean similares a estos archivos (comols
- ilegible).
shell
executable
architecture
Jeyanthinath
fuente
fuente
Respuestas:
Puede determinar la naturaleza de un ejecutable en Unix utilizando el
file
comando y eltype
comando.tipo
Se usa
type
para determinar la ubicación de un ejecutable en el disco de la siguiente manera:Así que ahora sé que
ls
se encuentra aquí en mi sistema en 2 ubicaciones:/usr/bin/ls
&/bin/ls
. Mirando esos ejecutables puedo ver que son idénticos:NOTA: Puede confirmar que son idénticos más allá de sus tamaños usando
con diff con cmpcmp
odiff
.Usando archivo
Si los consulto con el
file
comando:Por lo tanto, estos serían programas físicos reales que se han compilado de C / C ++. Si fueran scripts de shell, normalmente se presentarían así a
file
:¿Qué es ELF?
ELF es un formato de archivo , es la salida de un compilador como
gcc
, que se utiliza para compilar programas C / C ++ comols
.Normalmente tendrá una de las siguientes extensiones en el nombre de archivo: none, .o, .so, .elf, .prx, .puff, .bin
fuente
type
cualquier lugar que esté tentado a usarwhich
owhereis
.md5sum
osha1sum
, no solo verificar el tamaño y la hora del archivo.coreutils-8.21-13.fc19.x86_64
y sé que son idénticos después de 20 años de lidiar con los lanzamientos de Red Hat.Es un ejecutable binario (compilado en código de máquina, como la mayoría del sistema). Los scripts de Shell son más como "pegar" para unir partes para crear soluciones de manera rápida y flexible a partir de cosas existentes. Ese es el poder de * nix.
Necesita el código fuente (c, a veces c ++, son los lenguajes más comunes en * nix), no solo el ejecutable compilado. Como es de código abierto, puede obtener el código para todo de los repositorios en línea (las utilidades principales generalmente provienen del proyecto gnu). Sin embargo, es un poco complicado si no sabes cómo usar git u otros sistemas de seguimiento de versiones.
Aquí está el archivo ls.c, si ayuda: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
fuente