Einführung
In diesem Lab sammeln Sie praktische Erfahrungen im Umgang mit Dateien und Verzeichnissen mithilfe grundlegender Kommandozeilenwerkzeuge in einer RHEL-Umgebung. Sie lernen, Ihren aktuellen Speicherort zu erkunden und Inhalte mit pwd und ls aufzulisten, Verzeichnisse zu navigieren und Dateien mit cd und touch zu erstellen sowie Dateien und Verzeichnisse effektiv mit mkdir, cp, mv und rm zu organisieren.
Darüber hinaus erfahren Sie, wie Sie mit ln (sowohl Hard- als auch Symbolic Links) Verknüpfungen zwischen Dateien erstellen und Dateien effizient mit Shell-Erweiterungen auswählen, wodurch Sie grundlegende Fähigkeiten für die Kommandozeilen-Dateiverwaltung erwerben.
Aktuellen Speicherort erkunden und Inhalte mit pwd und ls auflisten
In diesem Schritt lernen Sie, wie Sie Ihren aktuellen Speicherort im Dateisystem erkunden und dessen Inhalte mit den Befehlen pwd und ls auflisten. Das Verständnis Ihres aktuellen Arbeitsverzeichnisses und die Fähigkeit, dessen Inhalte anzuzeigen, sind grundlegende Fähigkeiten für die Navigation und Verwaltung von Dateien über die Kommandozeile.
Zuerst ermitteln wir Ihr aktuelles Arbeitsverzeichnis mit dem Befehl pwd. pwd steht für "print working directory" und zeigt den vollständigen Pfadnamen Ihres aktuellen Speicherorts im Dateisystem an.
pwd
Sie sollten eine Ausgabe ähnlich dieser sehen, die Ihr aktuelles Verzeichnis angibt:
/home/labex
Als Nächstes verwenden Sie den Befehl ls, um den Inhalt Ihres aktuellen Verzeichnisses aufzulisten. ls steht für "list" und listet Verzeichnisinhalte für das angegebene Verzeichnis auf oder, wenn kein Verzeichnis angegeben ist, für das aktuelle Arbeitsverzeichnis.
ls
Sie sollten eine Ausgabe sehen, die den Inhalt Ihres Home-Verzeichnisses anzeigt:
project
Der Befehl ls verfügt über mehrere nützliche Optionen, um weitere Informationen über Dateien und Verzeichnisse anzuzeigen.
Die Option
-l(lange Listenformat) bietet detaillierte Informationen zu jeder Datei und jedem Verzeichnis, einschließlich Berechtigungen, Anzahl der Hardlinks, Besitzer, Gruppe, Größe und letztes Änderungsdatum.ls -lSie sollten eine Ausgabe ähnlich dieser sehen:
total 0 drwxr-xr-x 2 labex labex 6 Aug 27 2024 projectDie Option
-a(alle Dateien) listet alle Dateien auf, einschließlich versteckter Dateien. Unter Linux werden Dateinamen, die mit einem Punkt (.) beginnen, als versteckt betrachtet. Außerdem bezieht sich.auf das aktuelle Verzeichnis und..auf das übergeordnete Verzeichnis.ls -aSie sollten eine Ausgabe ähnlich dieser sehen, einschließlich versteckter Konfigurationsdateien:
. .. .bash_history .bash_logout .bash_profile .bashrc .tmux.conf projectDie Kombination von
-lund-aals-laergibt eine lange Liste aller Dateien, einschließlich der versteckten.ls -laDies zeigt detaillierte Informationen für alle Dateien und Verzeichnisse, einschließlich der versteckten:
total 20 drwx------ 1 labex labex 72 Jun 4 03:12 . drwxr-xr-x 1 root root 19 Aug 27 2024 .. -rw------- 1 labex labex 31 Jun 4 03:13 .bash_history -rw-r--r-- 1 labex labex 18 Feb 15 2024 .bash_logout -rw-r--r-- 1 labex labex 141 Feb 15 2024 .bash_profile -rw-r--r-- 1 labex labex 877 Jun 4 03:12 .bashrc -rw-r--r-- 1 labex labex 68 Aug 27 2024 .tmux.conf drwxr-xr-x 2 labex labex 6 Aug 27 2024 projectDie Option
-R(rekursiv) listet den Inhalt aller Unterverzeichnisse rekursiv auf. Um dies zu demonstrieren, erstellen wir zunächst ein Unterverzeichnis.mkdir mydirVerwenden Sie nun
ls -R, um die rekursive Auflistung anzuzeigen.ls -RSie sollten sowohl die Verzeichnisse
mydirals auchprojectaufgelistet sehen, gefolgt von deren Inhalten:.: mydir project ./mydir: ./project:Schließlich entfernen wir das Verzeichnis
mydir, um die Umgebung für die nächsten Schritte zu bereinigen.rmdir mydirDieser Befehl funktioniert nur für leere Verzeichnisse. Mehr über
rmdirundrmerfahren Sie in einem späteren Schritt.

Verzeichnisse navigieren und Dateien mit cd und touch erstellen
In diesem Schritt lernen Sie, wie Sie Ihr aktuelles Arbeitsverzeichnis mit dem Befehl cd wechseln und leere Dateien mit dem Befehl touch erstellen. Diese Befehle sind unerlässlich, um Ihre Dateien zu organisieren und effizient durch das Dateisystem zu navigieren.
Zuerst überprüfen wir Ihren aktuellen Speicherort und navigieren zum Verzeichnis project, das in Schritt 1 angezeigt wurde.
pwd
Sie sollten /home/labex als Ausgabe sehen (Ihr Home-Verzeichnis).
Navigieren wir nun mit dem Befehl cd in das Verzeichnis project:
cd project
Überprüfen Sie Ihren neuen Speicherort:
pwd
Sie sollten nun /home/labex/project als Ausgabe sehen.
Erstellen wir nun ein neues Verzeichnis namens documents in Ihrem aktuellen project-Verzeichnis. Sie verwenden den Befehl mkdir, den Sie im vorherigen Schritt kurz kennengelernt haben.
mkdir documents
Überprüfen Sie, ob das Verzeichnis documents erstellt wurde:
ls
Sie sollten documents in der Ausgabe aufgelistet sehen.
Als Nächstes verwenden Sie den Befehl cd, um das aktuelle Arbeitsverzeichnis Ihrer Shell in das neu erstellte Verzeichnis documents zu ändern.
cd documents
Nachdem Sie das Verzeichnis gewechselt haben, ist es gute Praxis, Ihren neuen Speicherort mit pwd zu bestätigen:
pwd
Die Ausgabe sollte nun /home/labex/project/documents lauten.
Der Befehl cd bietet mehrere praktische Optionen für die Navigation:
cd -: Dieser Befehl wechselt in das vorherige Verzeichnis, in dem Sie sich befanden. Probieren wir es aus.cd -Sie sollten sich wieder in
/home/labex/projectbefinden. Überprüfen Sie dies mitpwd:pwdVerwenden Sie nun erneut
cd -, um zu/home/labex/project/documentszurückzukehren:cd -Und überprüfen Sie dies mit
pwd:pwdcd ..: Dieser Befehl verwendet das versteckte Verzeichnis..(zwei Punkte), um eine Ebene nach oben in das übergeordnete Verzeichnis zu wechseln, ohne den genauen Namen des übergeordneten Verzeichnisses kennen zu müssen.cd ..Sie sollten sich nun in
/home/labex/projectbefinden. Überprüfen Sie dies mitpwd:pwdSie können
..verketten, um mehrere Ebenen nach oben zu wechseln. Um beispielsweise von/home/labex/projectnach/home/labexzu gelangen:cd ../Überprüfen Sie Ihren Speicherort:
pwdSie sollten sich in
/home/labexbefinden.cd(ohne Argumente): Dieser Befehl bringt Sie immer zurück zu Ihrem Home-Verzeichnis, das für den Benutzerlabex/home/labexist.cdÜberprüfen Sie Ihren Speicherort:
pwdSie sollten sich in
/home/labexbefinden.
Navigieren wir nun zurück in Ihr Verzeichnis ~/project/documents, um einige Dateien zu erstellen.
cd ~/project/documents
Überprüfen Sie Ihren Speicherort:
pwd
Die Ausgabe sollte /home/labex/project/documents lauten.
Sie werden nun den Befehl touch verwenden. Der Befehl touch aktualisiert den Zeitstempel einer Datei auf das aktuelle Datum und die aktuelle Uhrzeit, ohne sie anderweitig zu ändern. Dieser Befehl ist auch sehr nützlich zum Erstellen leerer Dateien.
Erstellen wir zwei leere Dateien namens report.txt und notes.txt im Verzeichnis ~/project/documents.
touch report.txt notes.txt
Überprüfen Sie mit ls -l, ob die Dateien erstellt wurden:
ls -l
Sie sollten eine Ausgabe ähnlich dieser sehen, die die neu erstellten Dateien anzeigt:
total 0
-rw-rw-r--. 1 labex labex 0 Mar 7 HH:MM report.txt
-rw-rw-r--. 1 labex labex 0 Mar 7 HH:MM notes.txt
Erstellen wir schließlich ein neues Verzeichnis namens drafts innerhalb von ~/project/documents und erstellen dann eine Datei darin.
mkdir drafts
cd drafts
touch draft_v1.txt
Überprüfen Sie die Dateierstellung:
ls -l
Sie sollten draft_v1.txt aufgelistet sehen.
Navigieren Sie nun mit einem einzigen cd-Befehl zurück in Ihr Verzeichnis ~/project.
cd ~/project
Überprüfen Sie Ihren Speicherort:
pwd
Die Ausgabe sollte /home/labex/project lauten.
Dateien und Verzeichnisse mit mkdir, cp, mv und rm organisieren
In diesem Schritt lernen Sie, wie Sie Ihre Dateien und Verzeichnisse effektiv mit den Befehlen mkdir (make directory), cp (copy), mv (move/rename) und rm (remove) organisieren. Diese Befehle sind entscheidend für die Pflege eines sauberen und strukturierten Dateisystems.
Stellen Sie zunächst sicher, dass Sie sich in Ihrem Verzeichnis ~/project befinden.
cd ~/project
Überprüfen Sie Ihren aktuellen Speicherort:
pwd
Die Ausgabe sollte /home/labex/project lauten.
mkdir: Verzeichnisse erstellen
Sie haben mkdir bereits verwendet, um ein einzelnes Verzeichnis zu erstellen. Nun erkunden wir fortgeschrittenere mkdir-Optionen.
Sie können mehrere Verzeichnisse auf einmal erstellen, indem Sie sie als Argumente auflisten:
mkdir reports presentations
Überprüfen Sie deren Erstellung:
ls
Sie sollten documents, presentations und reports aufgelistet sehen.
Die Option -p (parents) des mkdir-Befehls ist sehr nützlich, um fehlende übergeordnete Verzeichnisse für das angeforderte Ziel zu erstellen. Dies verhindert Fehler, wenn Sie versuchen, ein Unterverzeichnis innerhalb eines nicht vorhandenen übergeordneten Verzeichnisses zu erstellen.
Erstellen wir eine verschachtelte Verzeichnisstruktur: projects/alpha/docs.
mkdir -p projects/alpha/docs
Verwenden Sie nun ls -R, um die neu erstellte verschachtelte Struktur anzuzeigen:
ls -R projects
Sie sollten Folgendes sehen:
projects:
alpha
projects/alpha:
docs
projects/alpha/docs:
cp: Dateien und Verzeichnisse kopieren
Der Befehl cp kopiert Dateien und Verzeichnisse. Beim Kopieren einer Datei wird eine Duplikat entweder im aktuellen Verzeichnis oder in einem anderen angegebenen Verzeichnis erstellt.
Kopieren wir report.txt aus documents in das Verzeichnis reports.
cp documents/report.txt reports/
Überprüfen Sie die Kopie, indem Sie den Inhalt des Verzeichnisses reports auflisten:
ls reports
Sie sollten report.txt im Verzeichnis reports sehen.
Wenn eine Datei mit demselben Namen im Zielverzeichnis existiert, überschreibt cp diese standardmäßig.
Um ein Verzeichnis und dessen Inhalt zu kopieren, müssen Sie die Option -r (recursive) verwenden. Standardmäßig ignoriert cp Verzeichnisse, wenn -r nicht angegeben ist.
Kopieren wir das gesamte Verzeichnis documents nach projects/alpha/.
cp -r documents projects/alpha/
Überprüfen Sie die rekursive Kopie:
ls -R projects/alpha/documents
Sie sollten den Inhalt des Verzeichnisses documents (einschließlich notes.txt, drafts und drafts/draft_v1.txt) nun dupliziert in projects/alpha/documents sehen.
projects/alpha/documents:
drafts notes.txt report.txt
projects/alpha/documents/drafts:
draft_v1.txt
mv: Dateien und Verzeichnisse verschieben und umbenennen
Der Befehl mv verschiebt Dateien von einem Speicherort zu einem anderen. Er kann auch zum Umbenennen von Dateien oder Verzeichnissen verwendet werden. Wenn Sie den absoluten Pfad einer Datei als ihren vollständigen Namen betrachten, ist das Verschieben einer Datei im Wesentlichen dasselbe wie das Umbenennen einer Datei. Der Inhalt der verschobenen Dateien bleibt unverändert.
Benennen wir notes.txt im Verzeichnis documents in meeting_notes.txt um.
mv documents/notes.txt documents/meeting_notes.txt
Überprüfen Sie die Umbenennung:
ls documents
Sie sollten nun meeting_notes.txt anstelle von notes.txt sehen.
Verschieben wir nun report.txt aus dem Verzeichnis reports in documents/drafts.
mv reports/report.txt documents/drafts/
Überprüfen Sie das Verschieben:
ls reports
Das Verzeichnis reports sollte nun leer sein.
ls documents/drafts
Sie sollten draft_v1.txt und report.txt im Verzeichnis documents/drafts sehen.
Die Option -v für mv zeigt eine detaillierte Ausgabe der Befehlsoperationen an, was zur Bestätigung hilfreich sein kann.
mv -v documents/meeting_notes.txt documents/final_notes.txt
Sie sehen eine Ausgabe wie diese:
renamed 'documents/meeting_notes.txt' -> 'documents/final_notes.txt'
rm: Dateien und Verzeichnisse entfernen
Der Befehl rm entfernt Dateien. Seien Sie vorsichtig mit rm, da gelöschte Dateien von der Kommandozeile aus normalerweise nicht wiederhergestellt werden können.
Erstellen wir eine temporäre Datei, um rm zu üben.
touch temp_file.txt
Entfernen Sie nun temp_file.txt:
rm temp_file.txt
Überprüfen Sie die Entfernung:
ls
temp_file.txt sollte nicht mehr aufgelistet werden.
Standardmäßig entfernt rm keine Verzeichnisse. Wenn Sie versuchen, ein nicht leeres Verzeichnis ohne die richtige Option zu entfernen, erhalten Sie eine Fehlermeldung.
rm presentations
Sie sehen eine Fehlermeldung:
rm: cannot remove 'presentations': Is a directory
Um Verzeichnisse und deren Inhalt zu entfernen, müssen Sie die Option -r (recursive) verwenden. Der Befehl rm -r durchläuft zuerst jedes Unterverzeichnis und entfernt dessen Dateien einzeln, bevor jedes Verzeichnis entfernt wird.
Entfernen wir das Verzeichnis presentations und dessen Inhalt (das derzeit leer ist, aber -r ist für Verzeichnisse immer noch erforderlich).
rm -r presentations
Überprüfen Sie die Entfernung:
ls
presentations sollte nicht mehr aufgelistet werden.
Die Option -i für rm fordert interaktiv zur Bestätigung auf, bevor jede Datei gelöscht wird. Dies ist eine gute Sicherheitsmaßnahme.
Erstellen wir ein paar weitere temporäre Dateien und entfernen sie dann interaktiv.
touch file1.txt file2.txt
rm -i file1.txt file2.txt
Sie werden für jede Datei aufgefordert:
rm: remove regular empty file 'file1.txt'? y
rm: remove regular empty file 'file2.txt'? y
Geben Sie für jede Aufforderung y ein und drücken Sie Enter, um die Löschung zu bestätigen.
Die Option -f (force) erzwingt die Entfernung, ohne den Benutzer zur Bestätigung aufzufordern. Wenn Sie sowohl -i als auch -f angeben, hat -f Vorrang. Verwenden Sie -f mit äußerster Vorsicht.
Bereinigen wir abschließend das Verzeichnis projects.
rm -r projects
Überprüfen Sie, ob projects verschwunden ist:
ls
rmdir: Leere Verzeichnisse entfernen
Sie können auch den Befehl rmdir verwenden, um leere Verzeichnisse zu entfernen. Er schlägt fehl, wenn das Verzeichnis nicht leer ist.
Erstellen wir ein leeres Verzeichnis und entfernen es mit rmdir.
mkdir empty_dir
rmdir empty_dir
Überprüfen Sie die Entfernung:
ls
empty_dir sollte nicht mehr aufgelistet werden.
Wenn Sie versuchen, ein nicht leeres Verzeichnis mit rmdir zu entfernen, schlägt dies fehl:
mkdir test_dir
touch test_dir/test_file.txt
rmdir test_dir
Sie sehen eine Fehlermeldung:
rmdir: failed to remove 'test_dir': Directory not empty
Denken Sie daran, rm -r für nicht leere Verzeichnisse zu verwenden.
rm -r test_dir
Links zwischen Dateien mit ln (Hard- und Symbolische Links) erstellen
In diesem Schritt lernen Sie, wie Sie Links zwischen Dateien mit dem Befehl ln erstellen. Linux-Dateisysteme unterstützen zwei Arten von Links: Hard-Links und symbolische (oder Soft-) Links. Das Verständnis des Unterschieds zwischen ihnen ist entscheidend für eine effektive Dateiverwaltung.
Stellen Sie zunächst sicher, dass Sie sich in Ihrem Verzeichnis ~/project befinden.
cd ~/project
Überprüfen Sie Ihren aktuellen Speicherort:
pwd
Die Ausgabe sollte /home/labex/project lauten.
Erstellen wir eine neue Datei namens original_file.txt mit etwas Inhalt, mit dem wir arbeiten können.
echo "This is the content of the original file." > original_file.txt
Überprüfen Sie den Dateiinhalt:
cat original_file.txt
Hard Links
Ein Hard-Link ist im Wesentlichen ein weiterer Name für eine vorhandene Datei. Er verweist direkt auf dasselbe Datenobjekt (Inode) auf dem Speichermedium wie die Originaldatei. Nachdem ein Hard-Link erstellt wurde, können Sie keinen Unterschied zwischen dem neuen Hard-Link und dem ursprünglichen Namen der Datei feststellen; sie sind gleichermaßen gültige Wege, um auf dieselben Daten zuzugreifen.
Sie können mit dem Befehl ls -l feststellen, ob eine Datei mehrere Hard-Links hat. Die zweite Spalte in der Ausgabe von ls -l zeigt die Anzahl der Hard-Links zur Datei an.
Anfänglich hat original_file.txt einen Hard-Link (sich selbst):
ls -l original_file.txt
Sie sollten eine Ausgabe ähnlich dieser sehen, wobei die Zahl 1 einen Hard-Link anzeigt:
-rw-rw-r--. 1 labex labex 35 Mar 7 HH:MM original_file.txt
Erstellen wir nun einen Hard-Link zu original_file.txt namens hard_link.txt mit dem Befehl ln.
ln original_file.txt hard_link.txt
Überprüfen Sie die Anzahl der Hard-Links für beide Dateien:
ls -l original_file.txt hard_link.txt
Sie sollten nun die Anzahl der Hard-Links als 2 für beide Dateien sehen, was darauf hinweist, dass sie auf dieselben Daten verweisen:
-rw-rw-r--. 2 labex labex 35 Mar 7 HH:MM hard_link.txt
-rw-rw-r--. 2 labex labex 35 Mar 7 HH:MM original_file.txt
Um zu bestätigen, dass sie auf dieselben Daten verweisen, können Sie die Option ls -i verwenden, um die Inode-Nummer jeder Datei aufzulisten. Wenn sich die Dateien auf demselben Dateisystem befinden und ihre Inode-Nummern gleich sind, dann sind die Dateien Hard-Links, die auf denselben Dateninhalt verweisen.
ls -i original_file.txt hard_link.txt
Die Inode-Nummern sollten identisch sein:
1234567 original_file.txt 1234567 hard_link.txt
Wenn Sie den Inhalt einer Datei ändern, werden die Änderungen in der anderen reflektiert, da es sich um dieselben zugrunde liegenden Daten handelt.
echo "Adding new line." >> hard_link.txt
cat original_file.txt
Sie werden sehen:
This is the content of the original file.
Adding new line.
Selbst wenn die Originaldatei gelöscht wird, können Sie immer noch auf den Inhalt der Datei zugreifen, vorausgesetzt, es existiert mindestens ein weiterer Hard-Link. Daten werden erst dann vom Speicher gelöscht, wenn der letzte Hard-Link gelöscht wird, wodurch der Dateiinhalt von keinem Hard-Link mehr referenziert wird.
Entfernen wir original_file.txt:
rm original_file.txt
Versuchen Sie nun, auf hard_link.txt zuzugreifen:
cat hard_link.txt
Sie werden immer noch den Inhalt sehen:
This is the content of the original file.
Adding new line.
Die Anzahl der Hard-Links für hard_link.txt sollte nun 1 betragen:
ls -l hard_link.txt
Einschränkungen von Hard-Links:
- Sie können Hard-Links nur mit regulären Dateien verwenden. Sie können den Befehl
lnnicht verwenden, um einen Hard-Link zu einem Verzeichnis oder einer speziellen Datei zu erstellen. - Sie können Hard-Links nur verwenden, wenn sich beide Dateien auf demselben Dateisystem befinden. Sie können den Befehl
dfverwenden, um die Dateisysteme aufzulisten.
Symbolische Links
Ein symbolischer Link (auch "Soft-Link" oder "Symlink" genannt) ist ein spezieller Dateityp, der über seinen Pfad auf eine andere Datei oder ein Verzeichnis verweist. Er ähnelt einer Verknüpfung unter Windows. Im Gegensatz zu Hard-Links verweisen symbolische Links nicht direkt auf die Daten; sie verweisen auf den Namen der Ziel-Datei oder des Ziel-Verzeichnisses.
Erstellen wir eine neue Datei namens target_file.txt für unseren symbolischen Link.
echo "This is the target file for the symbolic link." > target_file.txt
Erstellen Sie nun einen symbolischen Link namens sym_link.txt, der mit dem Befehl ln -s auf target_file.txt verweist.
ln -s target_file.txt sym_link.txt
Überprüfen Sie die Details des symbolischen Links mit ls -l:
ls -l target_file.txt sym_link.txt
Sie werden einige Unterschiede feststellen:
- Das erste Zeichen der langen Auflistung für
sym_link.txtistl(Buchstabel), was anzeigt, dass es sich um einen symbolischen Link handelt. - Die Ausgabe zeigt
sym_link.txt -> target_file.txt, was explizit zeigt, worauf es verweist. - Die Größe des symbolischen Links ist sehr klein (es ist nur die Länge des Zielpfads), nicht die Größe der Zieldatei.
- Die Anzahl der Hard-Links für
sym_link.txtist1.
-rw-rw-r--. 1 labex labex 45 Mar 7 HH:MM target_file.txt
lrwxrwxrwx. 1 labex labex 14 Mar 7 HH:MM sym_link.txt -> target_file.txt
Sie können auf den Inhalt von target_file.txt über sym_link.txt zugreifen:
cat sym_link.txt
Sie werden sehen:
This is the target file for the symbolic link.
Wichtige Unterschiede und Verhaltensweisen von symbolischen Links:
Dateisystemübergreifendes Verknüpfen: Symbolische Links können zwei Dateien auf verschiedenen Dateisystemen verknüpfen.
Verknüpfen mit Verzeichnissen: Symbolische Links können auf ein Verzeichnis verweisen, nicht nur auf eine reguläre Datei. Erstellen wir einen symbolischen Link zu Ihrem Verzeichnis
documents.ln -s documents doc_shortcutNun können Sie in
doc_shortcutwechseln, als wäre es das Verzeichnisdocumentsselbst:cd doc_shortcutÜberprüfen Sie Ihren Speicherort. Beachten Sie, dass
pwdstandardmäßig den Pfad des symbolischen Links anzeigt:pwdAusgabe:
/home/labex/project/doc_shortcutWenn Sie möchten, dass
pwdden tatsächlichen Pfad des Verzeichnisses anzeigt, auf das der symbolische Link verweist, verwenden Sie die Option-P:pwd -PAusgabe:
/home/labex/project/documentsWechseln Sie nun zurück zu
~/project:cd ~/projectDangling symbolic links (lose symbolische Links): Wenn die ursprüngliche reguläre Datei (das Ziel) gelöscht wird, existiert der symbolische Link weiterhin, verweist aber auf eine fehlende Datei. Dies wird als "dangling symbolic link" bezeichnet.
Entfernen wir
target_file.txt:rm target_file.txtÜberprüfen Sie nun
sym_link.txtmitls -l:ls -l sym_link.txtSie werden sehen, dass
sym_link.txtweiterhin existiert, aber sein Zieltarget_file.txtin Rot oder einer anderen Farbe (abhängig von der Konfiguration Ihres Terminals) angezeigt wird, um anzuzeigen, dass es defekt ist:lrwxrwxrwx. 1 labex labex 14 Mar 7 HH:MM sym_link.txt -> target_file.txtWenn Sie versuchen, den dangling symbolischen Link mit
catzu lesen, schlägt dies fehl:cat sym_link.txtAusgabe:
cat: sym_link.txt: No such file or directory
Räumen wir abschließend die in diesem Schritt erstellten Dateien und Links auf.
rm hard_link.txt sym_link.txt doc_shortcut
ls
Sie sollten nur noch die Verzeichnisse documents und reports aus den vorherigen Schritten sehen.
Dateien effizient mit Shell-Expansionen auswählen
In diesem Schritt lernen Sie, wie Sie Dateien und Verzeichnisse effizient mithilfe verschiedener Shell-Erweiterungsfunktionen (Shell Expansions) auswählen können, darunter Musterabgleich (Globbing), Tilde-Expansion, Brace-Expansion, Variablenerweiterung und Befehlssubstitution. Diese Funktionen ermöglichen es Ihnen, Operationen auf mehreren Dateien mit prägnanten Befehlen durchzuführen.
Stellen Sie zunächst sicher, dass Sie sich in Ihrem Verzeichnis ~/project befinden.
cd ~/project
Überprüfen Sie Ihren aktuellen Standort:
pwd
Die Ausgabe sollte /home/labex/project sein.
Um Shell-Expansionen zu demonstrieren, erstellen wir eine Reihe von Dateien und Verzeichnissen.
mkdir data
cd data
touch file1.txt file2.log file_a.txt file_b.log report_2023.txt report_2024.log
touch image.jpg document.pdf archive.zip
mkdir dir1 dir2 dir3
cd ..
Listen Sie nun den Inhalt des Verzeichnisses data auf, um die erstellten Dateien zu sehen:
ls data
Sie sollten sehen:
archive.zip dir1 dir2 dir3 document.pdf file1.txt file2.log file_a.txt file_b.log image.jpg report_2023.txt report_2024.log
Musterabgleich (Globbing)
Musterabgleich, auch bekannt als Globbing, ermöglicht die Auswahl von Dateien basierend auf Mustern unter Verwendung spezieller Zeichen, sogenannter Metazeichen.
| Metazeichen | Entspricht | Beispiel |
|---|---|---|
* |
Eine beliebige Zeichenfolge von null oder mehr Zeichen. | *.txt entspricht allen Dateien, die auf .txt enden. |
? |
Ein einzelnes beliebiges Zeichen. | file?.txt entspricht file1.txt, fileA.txt usw. |
[abc...] |
Ein einzelnes Zeichen aus der eingeschlossenen Klasse. | file[12].txt entspricht file1.txt oder file2.txt. |
[!abc...] |
Ein einzelnes Zeichen, das nicht in der eingeschlossenen Klasse enthalten ist. | file[!1].txt entspricht fileA.txt, aber nicht file1.txt. |
[[:alpha:]] |
Ein beliebiges alphabetisches Zeichen. | file[[:alpha:]].txt entspricht fileA.txt. |
[[:digit:]] |
Eine einzelne Ziffer von 0 bis 9. | file[[:digit:]].txt entspricht file1.txt. |
Probieren wir einige Beispiele im Verzeichnis data aus.
Verwendung von
*: Listen Sie alle Dateien auf, die auf.txtenden:ls data/*.txtAusgabe:
data/file1.txt data/file_a.txt data/report_2023.txtListen Sie alle Dateien auf, die
fileim Namen enthalten:ls data/*file*Ausgabe:
data/file1.txt data/file2.log data/file_a.txt data/file_b.logVerwendung von
?: Listen Sie Dateien auf, die genau ein Zeichen vor.loghaben:ls data/file?.logAusgabe:
data/file2.logVerwendung von
[]für Zeichenklassen: Listen Sie Dateien auf, die mitreport_beginnen und entweder2023oder2024im Namen haben:ls data/report_[2][0][2][34].*Ausgabe:
data/report_2023.txt data/report_2024.logVerwendung von
{}für Brace Expansion: Listen Sie Dateien auf, die mitfilebeginnen und auf.txtoder.logenden:ls data/file*.{txt,log}Ausgabe:
data/file1.txt data/file2.log data/file_a.txt data/file_b.log
Tilde-Expansion ~
Das Tilde-Zeichen (~) wird zum Home-Verzeichnis des aktuellen Benutzers (/home/labex) erweitert. Wenn ihm ein Benutzername folgt, wird es zum Home-Verzeichnis dieses Benutzers erweitert.
echo ~
Ausgabe:
/home/labex
echo ~root
Ausgabe:
/root
echo ~/project/data
Ausgabe:
/home/labex/project/data
Brace Expansion {}
Die Brace Expansion generiert beliebige Zeichenfolgen. Sie ist nützlich, um Listen von Dateien oder Verzeichnissen mit ähnlichen Namen zu erstellen, ohne jeden einzelnen Namen eintippen zu müssen.
Kommagetrennte Liste: Erstellen Sie die Dateien
report_jan.txt,report_feb.txt,report_mar.txt:touch data/report_{jan,feb,mar}.txtListen Sie diese auf:
ls data/report_*.txtAusgabe:
data/report_2023.txt data/report_jan.txt data/report_feb.txt data/report_mar.txtZahlen- oder Buchstabenbereich: Erstellen Sie die Dateien
doc1.txt,doc2.txt,doc3.txt:touch data/doc{1..3}.txtListen Sie diese auf:
ls data/doc*.txtAusgabe:
data/doc1.txt data/doc2.txt data/doc3.txtErstellen Sie die Verzeichnisse
chapterA,chapterB,chapterC:mkdir data/chapter{A..C}Listen Sie diese auf:
ls data/chapter*Ausgabe:
data/chapterA data/chapterB data/chapterC
Variablenerweiterung
Shell-Variablen speichern Werte, die in Befehlen erweitert werden können. Sie definieren eine Variable mit VARNAME=Wert und greifen auf ihren Wert mit $VARNAME oder ${VARNAME} zu.
MY_DIR=data
echo "Mein Verzeichnis ist: $MY_DIR"
Ausgabe:
Mein Verzeichnis ist: data
Sie können Variablen in Befehlen verwenden:
ls $MY_DIR
Die Ausgabe wird der Inhalt des Verzeichnisses data sein.
Befehlssubstitution (Command Substitution)
Die Befehlssubstitution ermöglicht es Ihnen, die Ausgabe eines Befehls als Teil eines anderen Befehls zu verwenden. Dies geschieht, indem der Befehl in $(command) oder Backticks `command` eingeschlossen wird. Die Syntax $(command) wird im Allgemeinen bevorzugt, da sie verschachtelt werden kann.
Holen wir uns das aktuelle Datum und verwenden es in einem Dateinamen.
touch data/log_$(date +%Y-%m-%d).txt
Listen Sie das Verzeichnis data auf, um die neue Datei zu sehen:
ls data/log_*.txt
Die Ausgabe wird ähnlich sein wie:
data/log_2024-03-07.txt
Sie können es auch verwenden, um Dateien zu zählen:
echo "Es gibt $(ls data | wc -l) Elemente im data-Verzeichnis."
Die Ausgabe wird ähnlich sein wie:
There are 19 items in the data directory.
Argumente vor Expansion schützen
Manchmal möchten Sie verhindern, dass die Shell bestimmte Zeichen erweitert. Dies können Sie wie folgt erreichen:
Backslash (
\): Maskiert das nächste einzelne Zeichen.echo "Der Wert von \$HOME ist Ihr Home-Verzeichnis."Ausgabe:
Der Wert von $HOME ist Ihr Home-Verzeichnis.Einfache Anführungszeichen (
''): Verhindern jegliche Shell-Expansion innerhalb der Anführungszeichen.echo 'Das aktuelle Datum ist $(date +%Y-%m-%d).'Ausgabe:
Das aktuelle Datum ist $(date +%Y-%m-%d).Doppelte Anführungszeichen (
""): Verhindern die meisten Shell-Expansionen, erlauben jedoch Variablenerweiterung ($VAR) und Befehlssubstitution ($()).MY_DATE=$(date +%Y-%m-%d) echo "Heute ist der $MY_DATE."Ausgabe:
Heute ist der 2024-03-07.Vergleich mit einfachen Anführungszeichen:
echo 'Heute ist $MY_DATE.'Ausgabe:
Heute ist $MY_DATE.
Zum Schluss räumen wir das Verzeichnis data auf.
rm -r data
Zusammenfassung
In diesem Lab haben Sie grundlegende Befehlszeilenwerkzeuge zur Verwaltung von Dateien und Verzeichnissen in RHEL kennengelernt. Sie haben mit pwd begonnen, um Ihr aktuelles Arbeitsverzeichnis zu identifizieren, und mit ls, um den Verzeichnisinhalt aufzulisten, einschließlich der Verwendung von Optionen wie -l für detaillierte Informationen und -a, um versteckte Dateien anzuzeigen. Anschließend haben Sie sich mit cd im Dateisystem bewegt und mit touch neue Dateien erstellt.
Darüber hinaus haben Sie sich mit der Organisation Ihres Dateisystems vertraut gemacht, indem Sie mkdir zum Erstellen von Verzeichnissen, cp zum Kopieren von Dateien und Verzeichnissen, mv zum Verschieben oder Umbenennen und rm zum Löschen verwendet haben. Das Lab behandelte auch die Erstellung von Hard- und symbolischen Links mit ln sowie die effiziente Auswahl von Dateien mithilfe von Shell-Expansionen, wodurch Ihre Fähigkeit zur effektiven Verwaltung von Dateien und Verzeichnissen über die Befehlszeile verbessert wurde.



