Mit dem file
Befehl und dem type
Befehl können Sie die Art einer ausführbaren Datei in Unix bestimmen .
Art
So type
bestimmen Sie den Speicherort einer ausführbaren Datei auf der Festplatte:
$ type -a ls
ls is /usr/bin/ls
ls is /bin/ls
So weiß ich jetzt, dass ls
sich das hier auf meinem System an 2 Orten befindet: /usr/bin/ls
& /bin/ls
. Wenn ich mir die ausführbaren Dateien ansehe, sehe ich, dass sie identisch sind:
$ ls -l /usr/bin/ls /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /usr/bin/ls
HINWEIS: Mit cmp
oder können Sie bestätigen, dass sie über ihre Größe hinaus identisch sind diff
.
mit diff
$ diff -s /usr/bin/ls /bin/ls
Files /usr/bin/ls and /bin/ls are identical
mit cmp
$ cmp /usr/bin/ls /bin/ls
$
Datei verwenden
Wenn ich sie mit dem file
Befehl abfrage:
$ file /usr/bin/ls /bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
Dies wären also tatsächliche physische Programme, die aus C / C ++ kompiliert wurden. Wenn es sich um Shell-Skripte handelte, würden sie in der Regel folgendermaßen dargestellt file
:
$ file somescript.bash
somescript.bash: POSIX shell script, ASCII text executable
Was ist ELF?
ELF ist ein Dateiformat , es ist die Ausgabe eines Compilers wie gcc
, der zum Kompilieren von C / C ++ - Programmen wie verwendet wird ls
.
Beim Computing ist das ausführbare und verknüpfbare Format (ELF, ehemals Extensible Linking Format) ein gängiges Standarddateiformat für ausführbare Dateien, Objektcode, gemeinsam genutzte Bibliotheken und Core-Dumps.
Der Dateiname hat normalerweise eine der folgenden Erweiterungen: none, .o, .so, .elf, .prx, .puff, .bin