Ich möchte den eigentlichen Quellcode lesen, mit dem die Linux-Befehle geschrieben wurden. Ich habe einige Erfahrungen mit ihnen gesammelt und jetzt denke ich, dass es Zeit ist, auf einer tieferen Ebene mit meiner Maschine zu interagieren.
Ich habe hier einige Befehle gefunden http://directory.fsf.org/wiki/GNU . Leider konnte ich keine grundlegenden Befehle wie 'ls' finden, was mir zunächst einfach erscheint.
Wie genau lese ich den Quellcode der einfachen Shell-Befehle wie 'ls'? Ich laufe unter Ubuntu 12.04
linux
command
gnu-coreutils
Luigi Tiburzi
quelle
quelle
ls
ist nicht Teil von Linux, es ist Teil von Gnu. Gnu läuft unter Linux und anderen Kerneln.Antworten:
Alle diese grundlegenden Befehle sind Teil des
coreutils
Pakets.Alle Informationen, die Sie benötigen, finden Sie hier:
http://www.gnu.org/software/coreutils/
Wenn Sie die neueste Quelle herunterladen möchten, sollten Sie git verwenden:
git clone git://git.sv.gnu.org/coreutils
Um git auf Ihrem Ubuntu-Computer zu installieren, sollten Sie apt-get verwenden (git ist in der Standard-Ubuntu-Installation nicht enthalten):
sudo apt-get install git
Um ehrlich zu sein, hier finden Sie eine bestimmte Quelle für den
ls
Befehl:http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
Nur 4984 Codezeilen für einen Befehl 'einfach genug', da
ls
... Sie immer noch daran interessiert sind, ihn zu lesen? Viel Glück! : D.quelle
cat
. Es sind nur 767 Zeilen.Only 4984 code lines ...
- Es scheint in 4 Jahren und 3 Monatenls
weitere 57 Zeilen komplexer geworden zu sein.wc
es so viel schneller ist als ein gleichwertiges Java-Programm. Also habe ich mir den Code angesehen ... OMG ist optimiert für Festplattenlesevorgänge,Direkte Links zur Quelle für einige beliebte Programme in
coreutils
:cat
(767 Zeilen)chmod
(570 Zeilen)cp
(2912 Zeilen)cut
(831 Zeilen)date
(570 Zeilen)df
(1718 Zeilen)du
(1112 Zeilen)echo
(272 Zeilen)head
(1070 Zeilen)hostname
(116 Zeilen)kill
(312 Zeilen)ln
(651 Zeilen)ls
(4954 Zeilen)md5sum
(878 Zeilen)mkdir
(306 Zeilen)mv
(512 Zeilen)nice
(220 Zeilen)pwd
(394 Zeilen)rm
(356 Zeilen)rmdir
(252 Zeilen)shred
(1325 Zeilen)tail
(2301 Zeilen)tee
(220 Zeilen)touch
(437 Zeilen)wc
(801 Zeilen)whoami
(91 Zeilen)Vollständige Liste hier.
quelle
su
?ls
ist Teil von Coreutils. Sie können es mit git bekommen:Auf dieser Seite finden Sie Coreutils, die mit anderen Paketen aufgelistet sind (nach unten scrollen) .
quelle
Tatsächlich werden vernünftigere Quellen von http://suckless.org bereitgestellt. Schauen Sie sich deren
sbase
Repository an:git clone git://git.suckless.org/sbase
Sie sind klarer, intelligenter, einfacher und saugfreier, z. B.
ls.c
haben sie nur 369 LOCDanach ist es einfacher, komplizierteren GNU-Code zu verstehen.
quelle
CoreUtils, auf die in anderen Posts verwiesen wird, zeigt NICHT die tatsächliche Implementierung der meisten Funktionen, die Sie meiner Meinung nach suchen. In den meisten Fällen bietet es Frontends für die eigentlichen Funktionen, mit denen die Daten abgerufen werden. Diese finden Sie hier:
Es basiert auf Gnulib mit dem eigentlichen Quellcode im Unterverzeichnis lib
quelle
Sie können es mit dem Befehl auf Github haben
Sie finden alle Quellcodes im Ordner src.
Die Dinge haben sich seit 2012 geändert, der
ls
Quellcode hat jetzt 5309 Zeilenquelle
Sie sollten in der Lage sein, einen Befehl wie diesen auf Ubuntu zu verwenden, um die Quelle für ein Paket zu erfassen. Sie können
sudo
davon ausgehen, dass Sie an einen Ort heruntergeladen haben, den Sie besitzen.quelle