Ich habe einige Zweifel bezüglich * nix.
Ich weiß nicht, um welche Art von ausführbarer Datei es sich handelt
ls
, ob es sich um eine .sh- oder .ksh-Datei oder um eine andere Art von ausführbarer Systemdatei handelt. Was ist das?Als ich versuchte zu sehen, wie der Quellcode eines
ls
Befehls aussieht, zeigte er etwas Unlesbares, welche Methode * nix verwendet, um diese Art von unlesbaren Dateien zu erstellen, und kann ich meine Dateien diesen Dateien ähnlich machen (wiels
- unlesbar).
shell
executable
architecture
Jeyanthinath
quelle
quelle
Antworten:
Mit dem
file
Befehl und demtype
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: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:HINWEIS: Mit
mit diff mit cmpcmp
oder können Sie bestätigen, dass sie über ihre Größe hinaus identisch sinddiff
.Datei verwenden
Wenn ich sie mit dem
file
Befehl abfrage: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
:Was ist ELF?
ELF ist ein Dateiformat , es ist die Ausgabe eines Compilers wie
gcc
, der zum Kompilieren von C / C ++ - Programmen wie verwendet wirdls
.Der Dateiname hat normalerweise eine der folgenden Erweiterungen: none, .o, .so, .elf, .prx, .puff, .bin
quelle
type
wo Sie in Versuchung sind,which
oder zu verwendenwhereis
.md5sum
oder verwendensha1sum
und nicht nur Dateigrößen und -zeiten überprüfen.coreutils-8.21-13.fc19.x86_64
und ich weiß, dass sie seit 20 Jahren mit Red Hat-Releases identisch sind.Es ist eine ausführbare Binärdatei (kompiliert in Maschinencode, wie der Großteil des Systems). Shell-Skripte sind eher wie "Kleber", um Teile zusammenzufügen, um schnell und flexibel Lösungen aus vorhandenen Dingen zu erstellen. Das ist die Kraft von * nix.
Sie benötigen den Quellcode (c, manchmal c ++, sind die gebräuchlichsten Sprachen auf * nix), nicht nur die kompilierte ausführbare Datei. Da es sich um Open Source handelt, können Sie den Code für alles aus Online-Repositorys abrufen (Kerndienstprogramme stammen normalerweise aus dem Gnu-Projekt). Es ist jedoch etwas knifflig, wenn Sie nicht wissen, wie man Git oder andere Versionsverfolgungssysteme verwendet.
Hier ist die ls.c-Datei, falls sie hilft: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
quelle