Frage

Ich möchte genau wissen, wie die „Ist“ Befehl funktioniert unter Linux und Unix.

Soweit ich weiß, ls Gabeln & exec auf die Linux / Unix-Shell und dann die Ausgabe werden (von dem aktuellen Dateibaum. Eg./home/ankit/). Ich brauche eine ausführlichere Erklärung, wie ich bin nicht sicher, was passiert, nachdem Gabel aufrufen.

Könnte jemand bitte die Funktionalität des ‚ls‘ im Detail erklären?

War es hilfreich?

Lösung

ls Gabel nicht. Die Schalen Gabeln und execs, um jeden Befehl auszuführen, der in nicht eingebaut ist, und einer der Befehle es laufen kann, ist ls.

ls verwendet opendir () und readdir () durch alle Dateien in dem Verzeichnis zu treten. Wenn sie mehr Informationen über von ihnen braucht es nennt stat ().

Andere Tipps

auf die Antwort hinzuzufügen, in der Programmiersprache C Buch (K & RC) sie haben ein kleines Beispiel dafür, wie angegeben über die Implementierung von ls zu gehen. Sie haben die Datenstrukturen und Funktionen sehr gut verwendet erklärt.

Um zu verstehen, was ls sind, können Sie einen Blick an der Opensolaris-Quelle nehmen könnten: https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls.c .

Wenn das ist überwältigend, auf Solaris Sie mithilfe Truss beginnen bei dem System suchen fordert, dass ls zu verstehen macht, was es tut. Mit Truss, versuchen Sie:

Truss -afl -o ls.out / bin / ls

dann sehen Sie die Ausgabe in ls.out

Ich glaube, dass Spur ist das Äquivalent in Linux Truss.

Wenn Sie wirklich die detaillierten Innereien von ls verstehen wollen, schauen Sie sich den Quellcode. Sie können tpgould den Link auf die Solaris Quelle folgen, oder es ist einfach, die Quelle online von jedem Linux oder BSD Distribution zu finden.

Ich werde vor allem die 4.4BSD Quelle empfehlen.

Wie ich mich erinnere, ls beginnt mit seinen vielen Optionen Parsen beginnt dann mit den Dateien oder auf der Kommandozeile angegebenen Verzeichnissen (Standard ist „“). Unterverzeichnisse werden durch Rekursion in die Verzeichnisliste Routine behandelt. Es gibt keine fork () oder exec (), dass ich wieder zu verwenden.

Dies ist ein alter Thread, aber noch bin ich zu kommentieren, weil ich die Antwort glaube, die teilweise falsch upvoted und akzeptiert wurden, ist. @ Mark sagt, dass ls in die Hülle integriert ist, so Shell exec und Gabel nicht. Als ich das TLDP Dokument auf bash suchte (Ich habe den Link im Anhang) " ls " ist nicht als Build-in-Befehl aufgeführt.

http://tldp.org/LDP/Bash-Beginners- Guide / html / sect_01_03.html

Bash integrierten Befehle:

alias, bind, builtin, Befehl, erklären, Echo, ermöglichen, helfen lassen, lokal, Logout, printf, lesen, shopt, Typ, Schriftart, ulimit und unalias.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top