J'ai des doutes concernant * nix.
Je ne sais pas quel type de fichier exécutable est
ls
, que ce soit .sh ou .ksh ou tout autre type d'exécutable système s'il l'est, qu'est-ce que c'est?lorsque j'ai essayé de voir à quoi ressemble le code source de la
ls
commande, il montre quelque chose d'illisible, quelle méthode * nix utilise-t-il pour créer ces types de fichiers illisibles et puis-je rendre mes fichiers similaires à ces fichiers (commels
- illisibles).
shell
executable
architecture
Jeyanthinath
la source
la source
Réponses:
Vous pouvez déterminer la nature d'un exécutable sous Unix à l'aide de la
file
commande et de latype
commande.type
Vous utilisez
type
pour déterminer l'emplacement d'un exécutable sur le disque comme suit:Je sais donc maintenant qu'il
ls
se trouve ici sur mon système à 2 endroits:/usr/bin/ls
&/bin/ls
. En regardant ces exécutables, je peux voir qu'ils sont identiques:REMARQUE: vous pouvez confirmer qu'ils sont identiques au-delà de leurs tailles en utilisant
avec diff avec cmpcmp
oudiff
.Utilisation d'un fichier
Si je les interroge à l'aide de la
file
commande:Il s'agit donc de programmes physiques réels qui ont été compilés à partir de C / C ++. S'il s'agissait de scripts shell, ils se présenteraient généralement comme suit pour
file
:Qu'est-ce que ELF?
ELF est un format de fichier , c'est la sortie d'un compilateur tel que
gcc
, qui est utilisé pour compiler des programmes C / C ++ tels quels
.Il aura généralement l'une des extensions suivantes dans le nom de fichier: aucune, .o, .so, .elf, .prx, .puff, .bin
la source
type
n'importe où vous êtes tenté d'utiliserwhich
ouwhereis
.md5sum
ousha1sum
, pas seulement vérifier la taille et la durée des fichiers.coreutils-8.21-13.fc19.x86_64
et je sais juste qu'ils sont identiques après 20 ans de gestion des versions de Red Hat.Il s'agit d'un exécutable binaire (compilé en code machine, comme la plupart du système). Les scripts shell ressemblent plus à de la «colle» pour assembler des pièces afin de créer rapidement et de manière flexible des solutions à partir de choses existantes. C'est la puissance de * nix.
Vous avez besoin du code source (c, parfois c ++, sont les langages les plus courants sur * nix), pas seulement l'exécutable compilé. Comme il est open source, vous pouvez obtenir le code de tout à partir de référentiels en ligne (les principaux utilitaires proviennent généralement du projet gnu). Cependant, c'est un peu délicat si vous ne savez pas comment utiliser git ou d'autres systèmes de suivi de version.
Voici le fichier ls.c, si cela peut vous aider: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
la source