Dateien und Verzeichnisse durchsuchen
Zuletzt aktualisiert am 2025-10-23 | Diese Seite bearbeiten
Geschätzte Zeit: 40 Minuten
Übersicht
Fragen
- Wie kann ich mich auf meinem Computer bewegen?
- Wie kann ich sehen, welche Dateien und Verzeichnisse ich habe?
- Wie kann ich den Ort einer Datei oder eines Verzeichnisses auf meinem Computer angeben?
Ziele
- Erkläre die Gemeinsamkeiten und Unterschiede zwischen einer Datei und einem Verzeichnis.
- Übersetzt einen absoluten Pfad in einen relativen Pfad und umgekehrt.
- Konstruieren Sie absolute und relative Pfade, die bestimmte Dateien und Verzeichnisse identifizieren.
- Verwenden Sie Optionen und Argumente, um das Verhalten eines Shell-Befehls zu ändern.
- Demonstrieren Sie die Verwendung der Tabulatorvervollständigung und erklären Sie ihre Vorteile.
Die Einführung und Navigation im Dateisystem in der Shell (behandelt im Abschnitt Navigieren in Dateien und Verzeichnissen) kann verwirrend sein. Sie können sowohl das Terminal als auch den GUI-Dateiexplorer nebeneinander geöffnet haben, damit die Lernenden den Inhalt und die Dateistruktur sehen können, während sie das Terminal zum Navigieren im System verwenden.
Der Teil des Betriebssystems, der für die Verwaltung von Dateien und Verzeichnissen zuständig ist, wird Dateisystem genannt. Es organisiert unsere Daten in Dateien, die Informationen enthalten, und Verzeichnissen (auch ‘Ordner’ genannt), die Dateien oder andere Verzeichnisse enthalten.
Mehrere Befehle werden häufig zum Erstellen, Überprüfen, Umbenennen und Löschen von Dateien und Verzeichnissen verwendet. Um sie zu erforschen, gehen wir zu unserem geöffneten Shell-Fenster.
Zuerst wollen wir herausfinden, wo wir uns befinden, indem wir einen
Befehl namens pwd ausführen (das steht für ‘print working
directory’). Verzeichnisse sind wie Orte - zu jeder Zeit,
während wir die Shell benutzen, sind wir an genau einem Ort, der unser
aktuelles Arbeitsverzeichnis genannt wird. Die meisten
Befehle lesen und schreiben Dateien im aktuellen Arbeitsverzeichnis,
d.h. ‘hier’, daher ist es wichtig zu wissen, wo man sich befindet, bevor
man einen Befehl ausführt.pwd zeigt Ihnen, wo Sie sich
befinden:
AUSGABE
/Users/nelle
Hier ist die Antwort des Computers /Users/nelle, was
Nelles Home-Verzeichnis ist:
Variation des Homeverzeichnisses
Der Pfad zum Homeverzeichnis sieht auf verschiedenen Betriebssystemen
unterschiedlich aus. Unter Linux kann er wie /home/nelle
aussehen, und unter Windows wird er ähnlich wie
C:\Documents and Settings\nelle oder
C:\Users\nelle sein. (Beachten Sie, dass es bei
verschiedenen Windows-Versionen etwas anders aussehen kann.) In den
zukünftigen Beispielen haben wir die Mac-Ausgabe als Standard verwendet
- die Linux- und Windows-Ausgabe kann leicht abweichen, sollte aber im
Allgemeinen ähnlich sein.
Wir nehmen auch an, dass Ihr pwd-Befehl das
Homeverzeichnis Ihres Benutzers zurückgibt. Wenn pwd etwas
anderes zurückgibt, müssen Sie möglicherweise mit cd
dorthin navigieren, oder einige Befehle in dieser Lektion werden nicht
wie geschrieben funktionieren. Siehe Andere Verzeichnisse erforschen
für weitere Details über den cd Befehl.
Um zu verstehen, was ein “Homeverzeichnis” ist, schauen wir uns an, wie das Dateisystem als Ganzes organisiert ist. Für dieses Beispiel werden wir das Dateisystem auf dem Computer unserer Wissenschaftlerin Nelle darstellen. Nach dieser Veranschaulichung werden Sie Befehle lernen, um Ihr eigenes Dateisystem zu erforschen, das ähnlich aufgebaut sein wird, aber nicht exakt identisch ist.
Auf Nelle’s Computer sieht das Dateisystem wie folgt aus:
Das Dateisystem sieht aus wie ein auf dem Kopf stehender Baum. Das
oberste Verzeichnis ist das Rootverzeichnis, das alles
andere enthält. Wir verweisen auf es mit einem Schrägstrich,
/, allein; dieses Zeichen ist der führende Schrägstrich in
/Users/nelle.
Innerhalb dieses Verzeichnisses gibt es mehrere andere Verzeichnisse:
bin (in dem einige eingebaute Programme gespeichert
werden), data (für verschiedene Datendateien),
Users (in dem sich die persönlichen Verzeichnisse der
Benutzer befinden), tmp (für temporäre Dateien, die nicht
langfristig gespeichert werden müssen), und so weiter.
Wir wissen, dass unser aktuelles Arbeitsverzeichnis
/Users/nelle innerhalb von /Users gespeichert
ist, weil /Users der erste Teil seines Namens ist. Ebenso
wissen wir, dass /Users innerhalb des Stammverzeichnisses
/ gespeichert ist, weil sein Name mit /
beginnt.
Schrägstriche
Beachten Sie, dass es zwei Bedeutungen für das Zeichen /
gibt. Wenn es am Anfang eines Datei- oder Verzeichnisnamens erscheint,
bezieht es sich auf das Stammverzeichnis. Wenn es innerhalb
eines Pfades erscheint, ist es nur ein Trennzeichen.
Unterhalb von /Users finden wir ein Verzeichnis für
jeden Benutzer mit einem Konto auf Nelles Rechner, ihre Kollegen
imhotep und larry.
{alt=“Wie andere Verzeichnisse
sind Home-Verzeichnisse Unterverzeichnisse unterhalb von”/Users” wie
“/Users/imhotep”, “/Users/larry” oder”/Users/nelle”“}
Die Dateien des Benutzers imhotep werden in
/Users/imhotep gespeichert, die des Benutzers
larry in /Users/larry und die von Nelle in
/Users/nelle. Nelle ist der Benutzer in unseren Beispielen
hier; daher bekommen wir /Users/nelle als unser
Homeverzeichnis. Wenn Sie eine neue Eingabeaufforderung öffnen, befinden
Sie sich normalerweise zunächst in Ihrem Homeverzeichnis.
Jetzt wollen wir den Befehl lernen, mit dem wir den Inhalt unseres
eigenen Dateisystems sehen können. Wir können sehen, was sich in unserem
Homeverzeichnis befindet, indem wir ls ausführen:
AUSGABE
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
(Auch hier können die Ergebnisse leicht abweichen, je nachdem, wie Sie Ihr Dateisystem angepasst haben und unter welchem Betriebssystem Sie arbeiten)
ls gibt die Namen der Dateien und Verzeichnisse im
aktuellen Verzeichnis aus. Wir können die Ausgabe verständlicher machen,
indem wir die Option -F verwenden, die
ls anweist, die Ausgabe zu klassifizieren, indem es den
Datei- und Verzeichnisnamen eine Markierung hinzufügt, um anzuzeigen,
worum es sich handelt:
- ein nachgestelltes
/zeigt an, dass dies ein Verzeichnis ist -
@zeigt einen Link an -
*zeigt eine ausführbare Datei an
Abhängig von den Standardeinstellungen Ihrer Shell, kann die Shell auch Farben verwenden, um anzuzeigen, ob jeder Eintrag eine Datei oder ein Verzeichnis ist.
AUSGABE
Applications/ Documents/ Library/ Music/ Public/
Desktop/ Downloads/ Movies/ Pictures/
Hier können wir sehen, dass das Homeverzeichnis nur Unterverzeichnisse enthält. Alle Namen in der Ausgabe, die kein Klassifizierungssymbol haben, sind Dateien im aktuellen Arbeitsverzeichnis.
Löschen des Terminals
Wenn Ihr Bildschirm zu unübersichtlich wird, können Sie Ihr Terminal
mit dem Befehl clear leeren. Du kannst immer noch auf
vorherige Befehle zugreifen, indem du ↑ und ↓
verwendest, um dich Zeile für Zeile zu bewegen, oder indem du in deinem
Terminal scrollst.
Hilfe erhalten
ls hat eine Menge anderer Optionen. Es
gibt zwei übliche Wege, um herauszufinden, wie man einen Befehl benutzt
und welche Optionen er akzeptiert — Abhängig von Ihrer Umgebung
könnten Sie feststellen, dass nur einer dieser Wege
funktioniert:
- Wir können die Option
--helpan jeden Befehl übergeben (verfügbar unter Linux und Git Bash), zum Beispiel:
- Wir können sein Handbuch mit
manlesen (verfügbar unter Linux und macOS):
Wir werden beide Möglichkeiten im Folgenden beschreiben.
Hilfe für eingebaute Befehle
Einige Befehle sind in die Bash-Shell eingebaut, anstatt als separate
Programme im Dateisystem zu existieren. Ein Beispiel ist der Befehl
cd (Verzeichnis wechseln). Wenn Sie eine Meldung wie
No manual entry for cd erhalten, versuchen Sie stattdessen
help cd. Mit dem Befehl help erhalten Sie
Nutzungsinformationen für Bash
built-ins.
Die --help Option
Die meisten Bash-Befehle und -Programme, die für die Ausführung
innerhalb der Bash geschrieben wurden, unterstützen eine Option
--help, die weitere Informationen zur Verwendung des
Befehls oder Programms anzeigt.
AUSGABE
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if neither -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options, too.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print C-style escapes for nongraphic characters
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
-B, --ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last
modification of file status information);
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
-C list entries by columns
--color[=WHEN] colorize the output; WHEN can be 'always' (default
if omitted), 'auto', or 'never'; more info below
-d, --directory list directories themselves, not their contents
-D, --dired generate output designed for Emacs' dired mode
-f do not sort, enable -aU, disable -ls --color
-F, --classify append indicator (one of */=>@|) to entries
... ... ...
Wann man kurze oder lange Optionen verwenden sollte
Wenn Optionen sowohl als kurze als auch als lange Optionen existieren:
- Verwenden Sie die Option short, wenn Sie Befehle direkt in die Shell eingeben, um die Anzahl der Tastenanschläge zu minimieren und Ihre Aufgabe schneller zu erledigen.
- Verwenden Sie die Option long in Skripten, um Klarheit zu schaffen. Sie wird viele Male gelesen und nur einmal eingegeben.
Der man Befehl
Die andere Möglichkeit, etwas über ls zu erfahren, ist
die Eingabe von
Dieser Befehl verwandelt Ihr Terminal in eine Seite mit einer
Beschreibung des Befehls ls und seiner Optionen.
Um durch die man-Seiten zu navigieren, können Sie
↑ und ↓ benutzen, um sich zeilenweise zu bewegen,
oder b und Leertaste ausprobieren, um eine ganze
Seite vor- und zurückzuspringen. Um nach einem Zeichen oder Wort in den
man-Seiten zu suchen, verwenden Sie /, gefolgt
von dem Zeichen oder Wort, das Sie suchen. Manchmal führt eine Suche zu
mehreren Treffern. In diesem Fall können Sie zwischen den Treffern mit
N (vorwärts) und Shift+N (rückwärts)
wechseln.
Um die man Seiten zu beenden, drücken
Sie q.
Manual pages on the web
Natürlich gibt es noch eine dritte Möglichkeit, auf die Hilfe für
Befehle zuzugreifen: die Suche im Internet über Ihren Webbrowser. Wenn
Sie die Internetsuche verwenden, hilft es, den Ausdruck
unix man page in Ihre Suchanfrage aufzunehmen, um relevante
Ergebnisse zu finden.
GNU bietet Links zu seinen Handbüchern, einschließlich der core GNU utilities, die viele in dieser Lektion vorgestellte Befehle abdeckt.
Weitere ls-Optionen
erforschen
Sie können auch zwei Optionen gleichzeitig verwenden. Was bewirkt der
Befehl ls, wenn er mit der Option -l verwendet
wird? Was ist, wenn Sie sowohl die Option -l als auch die
Option -h verwenden?
Ein Teil der Ausgabe bezieht sich auf Eigenschaften, die wir in dieser Lektion nicht behandeln (z.B. Dateiberechtigungen und Besitzverhältnisse), aber der Rest sollte trotzdem nützlich sein.
Die Option -l bewirkt, dass ls ein
llanges Listenformat verwendet, das nicht nur die
Datei-/Verzeichnisnamen, sondern auch zusätzliche Informationen wie die
Dateigröße und den Zeitpunkt der letzten Änderung anzeigt. Wenn Sie
sowohl die Option -h als auch die Option -l
verwenden, macht dies die Dateigröße ‘hmenschlich
lesbar’, d.h. es wird etwas wie 5.3K statt
5369 angezeigt.
Auflistung in umgekehrter chronologischer Reihenfolge
Standardmäßig listet ls den Inhalt eines Verzeichnisses
in alphabetischer Reihenfolge nach Namen auf. Der Befehl
ls -t listet die Einträge nicht alphabetisch, sondern nach
dem Zeitpunkt der letzten Änderung auf. Der Befehl ls -r
listet den Inhalt eines Verzeichnisses in umgekehrter Reihenfolge auf.
Welche Datei wird zuletzt angezeigt, wenn Sie die Optionen
-t und -r kombinieren? Hinweis: Möglicherweise
müssen Sie die Option -l verwenden, um das Datum der
letzten Änderung zu sehen.
Die zuletzt geänderte Datei wird zuletzt aufgelistet, wenn
-rt verwendet wird. Dies kann sehr nützlich sein, um die
letzten Bearbeitungen zu finden oder um zu überprüfen, ob eine neue
Ausgabedatei geschrieben wurde.
Andere Verzeichnisse erforschen
Wir können ls nicht nur für das aktuelle
Arbeitsverzeichnis verwenden, sondern auch, um den Inhalt eines anderen
Verzeichnisses aufzulisten. Schauen wir uns unser
Desktop-Verzeichnis an, indem wir
ls -F Desktop ausführen, d.h. den Befehl ls
mit der Option -F und dem
[Argument][Argumente] Desktop. Das
Argument Desktop sagt ls, dass wir eine
Auflistung von etwas anderem als unserem aktuellen Arbeitsverzeichnis
wollen:
AUSGABE
shell-lesson-data/
Beachten Sie, dass dieser Befehl einen Fehler zurückgibt, wenn ein
Verzeichnis namens Desktop in Ihrem aktuellen
Arbeitsverzeichnis nicht existiert. Normalerweise existiert ein
Desktop-Verzeichnis in Ihrem Home-Verzeichnis, von dem wir
annehmen, dass es das aktuelle Arbeitsverzeichnis Ihrer Bash-Shell
ist.
Ihre Ausgabe sollte eine Liste aller Dateien und Unterverzeichnisse
in Ihrem Desktop-Verzeichnis sein, einschließlich des
shell-lesson-data-Verzeichnisses, das Sie im [Setup für
diese Lektion] (../learners/setup.md) heruntergeladen haben. (Auf den
meisten Systemen wird der Inhalt des Verzeichnisses Desktop
in der Shell als Symbole in einer grafischen Benutzeroberfläche hinter
allen offenen Fenstern angezeigt. Prüfen Sie, ob dies bei Ihnen der Fall
ist.)
Die hierarchische Organisation von Dingen hilft uns, den Überblick über unsere Arbeit zu behalten. Es ist zwar möglich, Hunderte von Dateien in unserem Home-Verzeichnis abzulegen, so wie es möglich ist, Hunderte von gedruckten Papieren auf unserem Schreibtisch zu stapeln, aber es ist viel einfacher, Dinge zu finden, wenn sie in sinnvoll benannten Unterverzeichnissen organisiert sind.
Jetzt, da wir wissen, dass sich das Verzeichnis
shell-lesson-data in unserem Desktop-Verzeichnis befindet,
können wir zwei Dinge tun.
Zunächst können wir mit der gleichen Strategie wie zuvor seinen
Inhalt betrachten, indem wir einen Verzeichnisnamen an ls
übergeben:
AUSGABE
exercise-data/ north-pacific-gyre/
Zweitens können wir unseren Standort in ein anderes Verzeichnis ändern, so dass wir uns nicht mehr in unserem Homeverzeichnis befinden.
Der Befehl zum Wechseln des Verzeichnisses lautet cd,
gefolgt von einem Verzeichnisnamen, um das Arbeitsverzeichnis zu
wechseln.cd steht für “Verzeichnis wechseln”, was ein wenig
irreführend ist. Der Befehl wechselt nicht das Verzeichnis, sondern das
aktuelle Arbeitsverzeichnis der Shell. Mit anderen Worten, er ändert die
Einstellungen der Shell, in welchem Verzeichnis wir uns befinden. Der
Befehl cd ist vergleichbar mit einem Doppelklick auf einen
Ordner in einer grafischen Oberfläche, um in diesen Ordner zu
gelangen.
Nehmen wir an, wir wollen in das Verzeichnis
exercise-data wechseln, das wir oben gesehen haben. Wir
können die folgende Reihe von Befehlen verwenden, um dorthin zu
gelangen:
Diese Befehle verschieben uns von unserem Home-Verzeichnis in unser
Desktop-Verzeichnis, dann in das Verzeichnis
shell-lesson-data und dann in das Verzeichnis
exercise-data. Sie werden feststellen, dass cd
nichts ausgibt. Das ist normal. Viele Shell-Befehle geben bei
erfolgreicher Ausführung nichts auf dem Bildschirm aus. Wenn wir aber
pwd danach ausführen, können wir sehen, dass wir jetzt in
/Users/nelle/Desktop/shell-lesson-data/exercise-data
sind.
Wenn wir jetzt ls -F ohne Argumente ausführen, listet es
den Inhalt von
/Users/nelle/Desktop/shell-lesson-data/exercise-data auf,
weil wir uns jetzt dort befinden:
AUSGABE
/Users/nelle/Desktop/shell-lesson-data/exercise-data
AUSGABE
alkanes/ animal-counts/ creatures/ numbers.txt writing/
Wir wissen jetzt, wie wir im Verzeichnisbaum nach unten gehen (d.h. wie wir in ein Unterverzeichnis gehen), aber wie gehen wir nach oben (d.h. wie verlassen wir ein Verzeichnis und gehen in sein übergeordnetes Verzeichnis)? Wir könnten das Folgende versuchen:
FEHLER
-bash: cd: shell-lesson-data: No such file or directory
Aber wir bekommen einen Fehler! Woran liegt das?
Mit unseren bisherigen Methoden kann cd nur
Unterverzeichnisse innerhalb deines aktuellen Verzeichnisses sehen. Es
gibt verschiedene Möglichkeiten, Verzeichnisse oberhalb Ihres aktuellen
Standorts zu sehen; wir beginnen mit der einfachsten.
Es gibt eine Abkürzung in der Shell, um eine Verzeichnisebene höher zu gehen. Es funktioniert wie folgt:
.. ist ein spezieller Verzeichnisname, der “das
Verzeichnis, das dieses enthält” bedeutet, oder einfacher ausgedrückt,
das Elternteil des aktuellen Verzeichnisses.
Sicherlich, wenn wir pwd nach cd .. ausführen,
sind wir wieder in
/Users/nelle/Desktop/shell-lesson-data:
AUSGABE
/Users/nelle/Desktop/shell-lesson-data
Das spezielle Verzeichnis .. wird normalerweise nicht
angezeigt, wenn wir ls ausführen. Wenn wir es anzeigen
wollen, können wir die Option -a zu ls -F
hinzufügen:
AUSGABE
./ ../ exercise-data/ north-pacific-gyre/
-a steht für ‘show all’ (einschließlich versteckter
Dateien); es zwingt ls dazu, uns Datei- und
Verzeichnisnamen zu zeigen, die mit . beginnen, wie z.B.
.. (was sich, wenn wir in /Users/nelle sind,
auf das Verzeichnis /Users bezieht). Wie Sie sehen können,
zeigt es auch ein anderes spezielles Verzeichnis an, das einfach
. heißt, was “das aktuelle Arbeitsverzeichnis” bedeutet. Es
mag überflüssig erscheinen, einen Namen dafür zu haben, aber wir werden
bald einige Anwendungen dafür sehen.
Beachten Sie, dass in den meisten Kommandozeilen-Tools mehrere
Optionen mit einem einzigen - und ohne Leerzeichen zwischen
den Optionen kombiniert werden können; ls -F -a ist
äquivalent zu ls -Fa.
Andere versteckte Dateien
Zusätzlich zu den versteckten Verzeichnissen .. und
. sehen Sie möglicherweise auch eine Datei namens
.bash_profile. Diese Datei enthält normalerweise
Einstellungen für die Shell-Konfiguration. Sie können auch andere
Dateien und Verzeichnisse sehen, die mit . beginnen. Dies
sind normalerweise Dateien und Verzeichnisse, die zur Konfiguration
verschiedener Programme auf Ihrem Computer verwendet werden. Das Präfix
. wird verwendet, um zu verhindern, dass diese
Konfigurationsdateien das Terminal überladen, wenn ein Standardbefehl
ls verwendet wird.
Diese drei Befehle sind die grundlegenden Befehle zum Navigieren im
Dateisystem Ihres Computers: pwd, ls, und
cd. Lassen Sie uns einige Variationen dieser Befehle
untersuchen. Was passiert, wenn Sie cd allein eingeben,
ohne ein Verzeichnis anzugeben?
Wie kann man überprüfen, was passiert ist? pwd gibt uns
die Antwort!
AUSGABE
/Users/nelle
Es hat sich herausgestellt, dass cd ohne ein Argument
Sie zu Ihrem Homeverzeichnis zurückbringt, was großartig ist, wenn Sie
sich in Ihrem eigenen Dateisystem verirrt haben.
Versuchen wir, zu dem Verzeichnis exercise-data von
vorhin zurückzukehren. Letztes Mal haben wir drei Befehle benutzt, aber
wir können die Liste der Verzeichnisse, die wir nach
exercise-data verschieben wollen, in einem Schritt
zusammenstellen:
Überprüfen Sie, ob wir an den richtigen Ort umgezogen sind, indem Sie
pwd und ls -F ausführen.
Wenn wir vom Datenverzeichnis eine Ebene nach oben gehen wollen,
können wir cd .. verwenden. Es gibt aber auch eine andere
Möglichkeit, in ein beliebiges Verzeichnis zu wechseln, unabhängig
davon, wo Sie sich gerade befinden.
Bislang haben wir bei der Angabe von Verzeichnisnamen oder sogar
eines Verzeichnispfades (wie oben) relative Pfade
verwendet. Wenn Sie einen relativen Pfad mit einem Befehl wie
ls oder cd verwenden, wird versucht, diesen
Ort von der Stelle aus zu finden, an der wir uns befinden, und nicht von
der Root des Dateisystems.
Es ist jedoch möglich, den absoluten Pfad zu einem Verzeichnis anzugeben, indem man den gesamten Pfad vom Stammverzeichnis aus einbezieht, was durch einen führenden Schrägstrich angezeigt wird. Der führende Schrägstrich sagt dem Computer, dass er den Pfad vom Stammverzeichnis des Dateisystems aus verfolgen soll, so dass er sich immer auf genau ein Verzeichnis bezieht, egal wo wir uns befinden, wenn wir den Befehl ausführen.
So können wir von überall im Dateisystem in unser
shell-lesson-data-Verzeichnis wechseln (auch innerhalb von
exercise-data). Um den absoluten Pfad zu finden, den wir
suchen, können wir pwd verwenden und dann das Stück
extrahieren, das wir nach shell-lesson-data verschieben
wollen.
AUSGABE
/Users/nelle/Desktop/shell-lesson-data/exercise-data
Führen Sie pwd und ls -F aus, um
sicherzustellen, dass wir uns in dem Verzeichnis befinden, das wir
erwarten.
Zwei weitere Abkürzungen
Die Shell interpretiert eine Tilde (~) am Anfang eines
Pfades als “das Homeverzeichnis des aktuellen Benutzers”. Wenn zum
Beispiel das Homeverzeichnis von Nelle /Users/nelle ist,
dann ist ~/data äquivalent zu
/Users/nelle/data. Das funktioniert nur, wenn es das erste
Zeichen im Pfad ist; here/there/~/elsewhere ist
nicht here/there/Users/nelle/elsewhere.
Eine weitere Abkürzung ist das Zeichen -
(Bindestrich).cd übersetzt- in das
vorherige Verzeichnis, in dem ich mich befand, was schneller ist,
als sich an den vollständigen Pfad zu erinnern und ihn dann einzugeben.
Dies ist ein sehr effizienter Weg, um zwischen zwei
Verzeichnissen hin und her zu wechseln – d.h. wenn Sie
cd - zweimal ausführen, landen Sie wieder im
Ausgangsverzeichnis.
Der Unterschied zwischen cd .. und cd -
ist, dass ersteres Sie nach oben bringt, während letzteres Sie
zurück bringt.
Versuchen Sie es! Navigieren Sie zuerst zu
~/Desktop/shell-lesson-data (Sie sollten bereits dort
sein).
Dann cd in das exercise-data/creatures
Verzeichnis
Wenn Sie nun folgendes ausführen
Sie werden sehen, dass Sie sich wieder in
~/Desktop/shell-lesson-data befinden. Führen Sie
cd - erneut aus und Sie befinden sich wieder in
~/Desktop/shell-lesson-data/exercise-data/creatures
Absolute vs. Relative Pfade
Welchen der folgenden Befehle könnte Nelle ausgehend von
/Users/nelle/data verwenden, um zu ihrem Homeverzeichnis zu
navigieren, das /Users/nelle ist?
cd .cd /cd /home/nellecd ../..cd ~cd homecd ~/data/..cdcd ..
- Nein:
.steht für das aktuelle Verzeichnis. - Nein:
/steht für das Stammverzeichnis. - Nein: Nelle’s Homeverzeichnis ist
/Users/nelle. - Nein: Dieser Befehl geht zwei Ebenen nach oben, d.h. er endet mit
/Users. - Ja:
~steht für das Homeverzeichnis des Benutzers, in diesem Fall/Users/nelle. - Nein: Dieser Befehl würde in ein Verzeichnis
homeim aktuellen Verzeichnis navigieren, wenn es existiert. - Ja: unnötig kompliziert, aber korrekt.
- Ja: Abkürzung, um zum Homeverzeichnis des Benutzers zurückzukehren.
- Ja: geht eine Ebene höher.
Relative Pfadauflösung
Wenn pwd /Users/thing anzeigt, was zeigt
dann ls -F ../backup im untenstehenden Dateisystemdiagramm
an?
../backup: No such file or directory2012-12-01 2013-01-08 2013-01-272012-12-01/ 2013-01-08/ 2013-01-27/original/ pnas_final/ pnas_sub/
{alt=“Ein Verzeichnisbaum
unterhalb des Users-Verzeichnisses, in dem”/Users” die Verzeichnisse
“backup” und “thing” enthält; “/Users/backup” enthält “original”,
“pnas_final” und “pnas_sub”; “/Users/thing” enthält “backup”; und
“/Users/thing/backup” enthält “2012-12-01”, “2013-01-08” und
“2013-01-27”“}
- Nein: Es gibt ein Verzeichnis
backupin/Users. - Nein: das ist der Inhalt von
Users/thing/backup, aber mit..haben wir nach einer Ebene weiter oben gefragt. - Nein: siehe vorherige Erklärung.
- Ja:
../backup/verweist auf/Users/backup/.
Einsichten in ls
Wenn pwd /Users/backup anzeigt und
-r ls anweist, die Dinge in umgekehrter
Reihenfolge anzuzeigen, welche(r) Befehl(e) führt/führen dann zu
folgender Ausgabe?
AUSGABE
pnas_sub/ pnas_final/ original/
{alt=“Ein Verzeichnisbaum
unterhalb des Users-Verzeichnisses, in dem”/Users” die Verzeichnisse
“backup” und “thing” enthält; “/Users/backup” enthält “original”,
“pnas_final” und “pnas_sub”; “/Users/thing” enthält “backup”; und
“/Users/thing/backup” enthält “2012-12-01”, “2013-01-08” und
“2013-01-27”“}
ls pwdls -r -Fls -r -F /Users/backup
- Nein:
pwdist nicht der Name eines Verzeichnisses. - Ja:
lsohne Verzeichnisargument listet Dateien und Verzeichnisse im aktuellen Verzeichnis auf. - Ja: verwendet explizit den absoluten Pfad.
Allgemeine Syntax eines Shell-Befehls
Wir haben nun Befehle, Optionen und Argumente kennengelernt, aber es ist vielleicht sinnvoll, einige Begriffe zu formalisieren.
Betrachten Sie den folgenden Befehl als ein allgemeines Beispiel für einen Befehl, den wir in seine Bestandteile zerlegen werden:
ls ist der Befehl, mit einer
Option -F und einem
Argument /. Wir haben bereits Optionen
kennengelernt, die entweder mit einem einzelnen Bindestrich beginnen
(-), bekannt als kurze Optionen, oder mit
zwei Bindestrichen (--), bekannt als lange
Optionen. [Optionen] ändern das Verhalten eines Befehls und
Argumente] sagen dem Befehl, womit er arbeiten soll (z.B. Dateien und
Verzeichnisse). Manchmal werden Optionen und Argumente auch als
Parameter bezeichnet. Ein Befehl kann mit mehr als
einer Option und mehr als einem Argument aufgerufen werden, aber ein
Befehl benötigt nicht immer ein Argument oder eine Option.
Manchmal sieht man, dass Optionen als Schalter oder Flags bezeichnet werden, besonders bei Optionen, die kein Argument benötigen. In dieser Lektion werden wir bei dem Begriff Option bleiben.
Jeder Teil ist durch Leerzeichen getrennt. Wenn Sie das Leerzeichen
zwischen ls und -F weglassen, wird die Shell
nach einem Befehl namens ls-F suchen, den es nicht gibt.
Auch die Großschreibung kann wichtig sein. Zum Beispiel zeigt
ls -s die Größe von Dateien und Verzeichnissen neben den
Namen an, während ls -S die Dateien und Verzeichnisse nach
Größe sortiert, wie unten gezeigt:
AUSGABE
total 28
4 animal-counts 4 creatures 12 numbers.txt 4 alkanes 4 writing
Beachten Sie, dass die von ls -s zurückgegebenen Größen
in Blöcken angegeben sind. Da diese für verschiedene
Betriebssysteme unterschiedlich definiert sind, erhalten Sie
möglicherweise nicht die gleichen Zahlen wie im Beispiel.
AUSGABE
animal-counts creatures alkanes writing numbers.txt
Wenn man das alles zusammennimmt, gibt uns der obige Befehl
ls -F / eine Liste der Dateien und Verzeichnisse im
Stammverzeichnis /. Ein Beispiel für die Ausgabe, die Sie
mit dem obigen Befehl erhalten könnten, finden Sie unten:
AUSGABE
Applications/ System/
Library/ Users/
Network/ Volumes/
Nelle’s Pipeline: Organisieren von Dateien
Mit diesem Wissen über Dateien und Verzeichnisse ist Nelle bereit, die Dateien zu organisieren, die die Protein-Assay-Maschine erstellen wird.
Sie erstellt ein Verzeichnis mit dem Namen
north-pacific-gyre (um sich daran zu erinnern, woher die
Daten stammen), das die Datendateien von der Testmaschine und ihre
Datenverarbeitungsskripte enthalten wird.
Jede ihrer physischen Proben ist gemäß der Konvention ihres Labors
mit einer eindeutigen zehnstelligen ID gekennzeichnet, z. B.
“NENE01729A”. Diese ID hat sie in ihrem Entnahmeprotokoll verwendet, um
den Ort, die Zeit, die Tiefe und andere Merkmale der Probe
aufzuzeichnen, daher beschließt sie, sie im Dateinamen jeder Datendatei
zu verwenden. Da die Ausgabe des Prüfgeräts im Klartext erfolgt, nennt
sie ihre Dateien NENE01729A.txt,
NENE01812A.txt usw. Alle 1520 Dateien werden im selben
Verzeichnis gespeichert.
Jetzt kann Nelle in ihrem aktuellen Verzeichnis
shell-lesson-data sehen, welche Dateien sie hat, indem sie
den Befehl benutzt:
Dieser Befehl ist eine Menge zu tippen, aber sie kann die Shell die meiste Arbeit durch die sogenannte Tab-Vervollständigung erledigen lassen. Wenn sie tippt:
und drückt dann Tab (die Tabulator-Taste auf ihrer Tastatur), vervollständigt die Shell automatisch den Verzeichnisnamen für sie:
Erneutes Drücken von Tab bringt nichts, da es mehrere Möglichkeiten gibt; zweimaliges Drücken von Tab führt zu einer Liste aller Dateien.
Wenn Nelle dann G drückt und dann wieder Tab drückt, wird die Shell ‘goo’ anhängen, da alle Dateien, die mit ‘g’ beginnen, die ersten drei Zeichen ‘goo’ gemeinsam haben.
Um alle diese Dateien zu sehen, kann sie Tab noch zweimal drücken.
Dies wird Tab-Vervollständigung genannt, und wir werden es im weiteren Verlauf in vielen anderen Tools sehen.
- Das Dateisystem ist für die Verwaltung von Informationen auf der Festplatte zuständig.
- Informationen werden in Dateien gespeichert, die wiederum in Verzeichnissen (Ordnern) abgelegt sind.
- Verzeichnisse können auch andere Verzeichnisse speichern, die dann einen Verzeichnisbaum bilden.
-
pwdgibt das aktuelle Arbeitsverzeichnis des Benutzers aus. -
ls [path]gibt eine Auflistung einer bestimmten Datei oder eines bestimmten Verzeichnisses aus;lsallein listet das aktuelle Arbeitsverzeichnis auf. -
cd [path]ändert das aktuelle Arbeitsverzeichnis. - Die meisten Befehle nehmen Optionen an, die mit einem einzelnen
-beginnen. - Verzeichnisnamen in einem Pfad werden unter Unix mit
/getrennt, unter Windows jedoch mit\. -
/allein ist das Stammverzeichnis des gesamten Dateisystems. - Ein absoluter Pfad gibt einen Ort an, der von der Root des Dateisystems ausgeht.
- Ein relativer Pfad gibt einen Ort an, der vom aktuellen Ort ausgeht.
-
.allein bedeutet ‘das aktuelle Verzeichnis’;..bedeutet ‘das Verzeichnis über dem aktuellen’.