Die Linux-Befehlszeile
AnfängerEinheit 2 von 7 in Kurs: Linux – Befehlszeile, Shellskripte und Systemverwaltung
Was du lernst
- Erkenne die Shell und ihre Eingabeaufforderung, gib Befehle mit Optionen und Argumenten in der richtigen Form ein und nutze die Tasten, die die Arbeit auf der Befehlszeile schneller und sicherer machen.
- Shell, Terminal und Eingabeaufforderung erkennenUnterscheide die Shell vom Terminalfenster, lies aus der Eingabeaufforderung ab, wer du bist und wo du dich befindest, und nutze die grundlegenden Tasten, um Befehle auszuführen, zu stoppen und zu wiederholen.
- Befehle mit Optionen und Argumenten schreibenSetze einen Befehl aus seinem Namen, Optionen und Argumenten zusammen, kombiniere kurze Optionen, verwende lange Optionen und Optionswerte und gehe richtig mit Leerzeichen und ungewöhnlichen Namen um.
- Shell, Terminal und Eingabeaufforderung erkennen
- Nutze die Handbuchseiten und die schnellere Hilfe in Befehlen und der Shell, um herauszufinden, was ein Befehl tut und welche Optionen er hat, ohne das Terminal zu verlassen.
- Handbuchseiten lesen und durchsuchenÖffne eine Handbuchseite, verstehe ihre Abschnitte und die SYNOPSIS-Schreibweise, bewege dich darin und durchsuche sie, wähle eine Handbuchsektion und finde die richtige Seite, wenn du den Befehlsnamen nicht kennst.
- Kurzhilfe und weitere Dokumentation nutzenVerschaffe dir mit --help einen schnellen Überblick über Optionen, lies die Hilfe für eingebaute Shellbefehle, finde zusätzliche Dokumentation in /usr/share/doc und Info-Seiten und nutze Fehlermeldungen als Hinweise.
- Handbuchseiten lesen und durchsuchen
- Verstehe, wie Linux Dateien in einem einzigen Verzeichnisbaum anordnet, bewege dich mit absoluten und relativen Pfaden darin und liste und untersuche den Inhalt von Verzeichnissen.
- Den Verzeichnisbaum verstehenBeschreibe den einzigen Baum, der am Wurzelverzeichnis beginnt, erkenne die wichtigsten Systemverzeichnisse und das Home-Verzeichnis und beachte die Regeln für Dateinamen und versteckte Dateien.
- Mit absoluten und relativen Pfaden zwischen Verzeichnissen wechselnFinde heraus, wo du bist, wechsle das Verzeichnis und schreibe Pfade vom Wurzelverzeichnis und vom aktuellen Verzeichnis aus sowie mit .. und ~. Wähle für jede Aufgabe die passende Pfadart.
- Verzeichnisinhalte auflisten und untersuchenListe Dateien mit ls und seinen häufigen Optionen auf, lies jede Spalte einer langen Auflistung und zeige versteckte Dateien, Größen, Sortierreihenfolgen und den Inhalt von Unterverzeichnissen an.
- Den Verzeichnisbaum verstehen
- Verwalte Dateien und Verzeichnisse über die Shell: Lege sie an, kopiere, verschiebe oder benenne sie um und lösche sie sicher. Dabei weißt du genau, was jeder Befehl tut, wenn Namen bereits existieren.
- Dateien und Verzeichnisse anlegenLege neue Verzeichnisse an, auch verschachtelte, erstelle leere Dateien oder aktualisiere ihre Zeitstempel mit touch und entferne leere Verzeichnisse.
- Kopieren, verschieben und umbenennenKopiere Dateien und ganze Verzeichnisse mit cp, verschiebe und benenne sie mit mv um, sage voraus, wo das Ergebnis landet, und vermeide versehentliches Überschreiben.
- Dateien und Verzeichnisse sicher löschenEntferne Dateien und Verzeichnisbäume mit rm, verwende die Optionen zum Nachfragen oder Erzwingen und halte dich an eine Vorgehensweise, die das Löschen der falschen Dinge verhindert.
- Dateien und Verzeichnisse anlegen
- Verwende Platzhaltermuster der Shell, um mehrere Dateien auf einmal zu bezeichnen, sage genau voraus, auf welche Namen ein Muster passt, und verwende Muster sicher mit Befehlen zum Kopieren, Verschieben und Löschen.
- Dateinamen mit *, ? und [ ] abgleichenSchreibe Muster mit *, ? und Klammerausdrücken, einschließlich Bereichen und Negation, und sage unter Berücksichtigung von Groß- und Kleinschreibung und versteckten Dateien voraus, auf welche vorhandenen Namen sie passen.
- Platzhalter in Befehlen sicher verwendenSage voraus, was die Shell nach der Expansion an einen Befehl übergibt, prüfe Muster vor ihrer Verwendung, verhindere die Expansion mit Anführungszeichen und erzeuge Namen mit geschweiften Klammern.
- Dateinamen mit *, ? und [ ] abgleichen
- Rufe frühere Befehle aus dem Befehlsverlauf auf und wiederhole sie, speichere Werte in Shellvariablen und Umgebungsvariablen und steuere über PATH, wie die Shell Programme findet.
- Befehle aus dem Befehlsverlauf aufrufen und wiederverwendenBlättere durch frühere Befehle, suche sie und führe sie erneut aus. Verwende die Verlaufsexpansion vorsichtig und erfahre, wo Bash den Befehlsverlauf speichert und was darin aufgezeichnet wird.
- Shellvariablen und Umgebungsvariablen setzen und verwendenLege Variablen an, lies und entferne sie, exportiere sie in die Umgebung, verwende die gängigen Umgebungsvariablen, schütze Werte richtig mit Quoting und speichere Einstellungen dauerhaft.
- Mit PATH steuern, wie die Shell Befehle findetErkläre, wie die Shell aus einem Befehlsnamen ein Programm ermittelt, lies und erweitere PATH, führe ein Programm aus, das nicht in PATH steht, und prüfe, welches Programm ein Name ausführt.
- Befehle aus dem Befehlsverlauf aufrufen und wiederverwenden
Linux-Befehlszeile einfach erklärt
1An der Eingabeaufforderung der Shell arbeiten
Eine Terminalsitzung bietet dir einen Ort, um Anweisungen einzugeben und ihre Ergebnisse zu sehen. Die Shell liest jede Anweisung, während dir die Eingabeaufforderung hilft, dein Benutzerkonto und deinen Standort im Blick zu behalten. Du lernst die Tasten zum Vervollständigen von Namen und zum Korrigieren einer Zeile kennen und setzt dann Befehle aus Namen, Optionen und Argumenten zusammen. Auf die richtigen Leerzeichen und Anführungszeichen kommt es an: Die Shell verarbeitet die Wörter, die sie erhält, und eine kleine Änderung bei der Eingabe kann eine andere Datei bezeichnen.
1.1 Shell, Terminal und Eingabeaufforderung erkennen
Eine Shell liest Befehle und startet die angeforderten Arbeiten. Ein Terminal ist das Fenster, über das du Eingaben machst und Ausgaben siehst. Öffnest du ein weiteres Terminal, startet normalerweise eine weitere Shellsitzung. Eine Konsole bietet einen direkt angeschlossenen Textbildschirm; eine SSH-Anmeldung kann eine Shell auf einem anderen Computer bereitstellen.
Die Eingabeaufforderung lesen
In der beispielhaften Eingabeaufforderung sam@laptop:~$ ist sam der Benutzer, laptop der Host und ~ bezeichnet das Home-Verzeichnis. Das abschließende $ kennzeichnet üblicherweise einen regulären Benutzer. Das Format der Eingabeaufforderung kann sich ändern. Prüfe daher bei Bedarf die Einzelheiten mit Befehlen. whoami gibt den Kontonamen aus und pwd das aktuelle Verzeichnis.
Eine Eingabeaufforderung mit # kennzeichnet üblicherweise root, das Administratorkonto. Arbeite als regulärer Benutzer und verwende Administratorrechte nur, wenn eine Aufgabe sie benötigt. Ein vor einem Beispielbefehl ausgegebenes Symbol der Eingabeaufforderung gehört nicht zu dem Befehl, den du eingibst.
Eine erste Sitzung durchführen
Gib jede Zeile einzeln ein und drücke die Eingabetaste:
whoami
pwd
date
echo Hello
Für das Beispielkonto lauten die ersten beiden Ergebnisse sam und /home/sam. date zeigt das aktuelle Datum und die Uhrzeit; echo Hello gibt Hello aus. Die Ausgabe eines Befehls erscheint unter seiner Eingabe, gefolgt von einer neuen Eingabeaufforderung. Manche erfolgreiche Befehle geben nichts aus: mkdir reports erstellt ein Verzeichnis ohne Ausgabe. Prüfe das Ergebnis mit ls, wenn du eine Bestätigung brauchst.
Bash, die Bourne Again Shell, ist unter Linux weit verbreitet. Zu den weiteren Shells gehören zsh und fish. echo $0 zeigt, wie die aktuelle Shell aufgerufen wurde; echo $SHELL zeigt die für das Konto konfigurierte Login-Shell. Startest du eine andere Shell, können sich diese Antworten unterscheiden. Das Terminalfenster selbst bestimmt nicht, welche Shell darin läuft.
Bearbeiten und zurückkehren
| Taste | Aktion |
|---|---|
| Tab | Einen Befehls- oder Dateinamen vervollständigen; bei Mehrdeutigkeit zweimal drücken, um Möglichkeiten zu sehen |
| Pfeil nach oben / unten | Zuvor eingegebene Befehle durchblättern |
| Strg+C | Aktuelle Eingabezeile verwerfen oder ein laufendes Vordergrundprogramm unterbrechen |
| Strg+L | Bildschirm leeren; clear tut dies ebenfalls |
| Strg+D in einer leeren Zeile | Shell beenden, wie mit exit |
Angenommen, du gibst ls Doc ein und drückst Tab. Ist Documents der einzige passende Name, vervollständigt die Shell ihn. Beginnen mehrere Namen mit Doc, braucht Bash weitere Zeichen oder eine Auswahl. Die Vervollständigung hilft bei der Schreibweise und Groß- und Kleinschreibung: Documents und documents sind verschiedene Namen.
Ein bildschirmfüllendes Programm wartet möglicherweise auf eine eigene Taste, statt die Eingabeaufforderung der Shell anzuzeigen. Drücke q, um man oder less zu verlassen. Ein einfacher cat-Befehl ohne Datei wartet auf Eingaben; Strg+C bringt dich zur Shell zurück. Strg+C ist daher nicht die übliche Tastenkombination zum Kopieren im Terminal. Viele Terminalemulatoren verwenden Strg+Umschalt+C und Strg+Umschalt+V zum Kopieren und Einfügen.
Die Tastaturbelegung beeinflusst auch, wie du Zeichen wie ~, [ und { eingibst. Manche Belegungen verwenden AltGr und bei einem ~ als toter Taste musst du möglicherweise die Leertaste drücken, bevor es erscheint. Gib Befehle mit genau der richtigen Groß- und Kleinschreibung ein: LS und ls sind verschiedene Befehlsnamen.
Wichtige Erkenntnisse
- Die Shell interpretiert Befehle; das Terminal zeigt die Sitzung an.
- Eine Eingabeaufforderung hilft, das Konto, den Host und das aktuelle Verzeichnis zu erkennen.
- Verwende Tab zum Vervollständigen von Namen und Strg+C zum Unterbrechen oder Abbrechen.
- Strg+D in einer leeren Zeile beendet die Shell;
qbeendet den Pager einer Handbuchseite.
1.2 Befehle mit Optionen und Argumenten schreiben
Eine Befehlszeile besteht aus Wörtern. Das erste Wort nennt das auszuführende Programm oder die auszuführende Funktion, Optionen ändern das Verhalten und Argumente liefern die Objekte oder Werte, die bearbeitet werden. Leerzeichen trennen diese Wörter.
Die Bestandteile erkennen
In ls -l /etc ist ls der Befehl, -l fordert das lange Listenformat an und /etc ist das Verzeichnisargument. Die Aufrufform command [options] [arguments] beschreibt diese Anordnung; die eckigen Klammern gibst du nicht ein.
Kurze Optionen bestehen aus einem Bindestrich und einem Buchstaben. ls -a -l, ls -al und ls -la fordern dieselbe Auflistung an. Lange Optionen verwenden zwei Bindestriche, wie in ls --all. Halte lange Optionen getrennt; Wörter hinter einem Bindestrich zusammenzuschreiben erzeugt keine lange Option. So wird ls -all als die kurzen Optionen -a -l -l gelesen.
Eine Option kann auch einen Wert benötigen. In touch -d 2025-01-31 old.txt gehört das Datum zu -d; old.txt ist das Dateiargument. Die lange Form lautet touch --date=2025-01-31 old.txt. Lies die Aufrufbeschreibung, um zu sehen, ob eine Option einen Wert braucht und wie du ihn angibst.
Namen zusammenhalten
Die Shell behandelt nicht geschützte Leerzeichen als Wortgrenzen. Jede dieser drei Zeilen bezeichnet eine Datei:
ls "Annual Report.pdf"
ls 'Annual Report.pdf'
ls Annual\ Report.pdf
Die Anführungszeichen oder der umgekehrte Schrägstrich schützen das Leerzeichen; sie gehören nicht zum Dateinamen. Ohne diesen Schutz fragt ls Annual Report.pdf zwei Dateien ab. Ein ähnlicher Effekt zeigt sich bei echo: echo Hello world erhält zwei Wörter und gibt ein trennendes Leerzeichen aus, während echo "Hello world" alle drei Leerzeichen innerhalb eines Arguments erhält.
Optionen eindeutig machen
Stelle Optionen vor Dateiargumente. GNU-Befehle akzeptieren sie oft auch später, aber vorangestellte Optionen machen eine Zeile leichter lesbar und funktionieren bei mehr Befehlen. Bei Befehlen, die es unterstützen, beendet -- die Optionsverarbeitung. rm -- -draft.txt behandelt -draft.txt daher als Dateinamen. Der Pfad ./-draft.txt beginnt ebenfalls mit einem Punkt, sodass rm ./-draft.txt ein erstes Zeichen vermeidet, das wie eine Option aussieht.
Optionsbuchstaben gehören zu ihrem jeweiligen Befehl. cp -r kopiert Verzeichnisse rekursiv, aber ls -r kehrt die Sortierung um; ls -R listet Verzeichnisse rekursiv auf. ls -h ändert die Größenanzeige und fordert keine Hilfe an. Ein kopierter Gedankenstrich – unterscheidet sich ebenfalls vom gewöhnlichen -, den Optionen benötigen.
Herausfinden, was ein Name ausführt
Ein Befehl kann eine Programmdatei, ein eingebauter Befehl der Shell oder ein Alias sein, der zu einer anderen Befehlszeile expandiert. cd ist in Bash eingebaut, weil es das Verzeichnis dieser Shell ändert. ls ist normalerweise ein Programm, oft mit einem Alias, der Farben hinzufügt. type cd und type ls melden die jeweils aktive Bedeutung.
Schlägt ls-l mit command not found fehl, hat Bash nach diesem ganzen Namen gesucht. Füge das fehlende Leerzeichen ein: ls -l. Beschwert sich ein Befehl über eine unbekannte Option, prüfe die Schreibweise und die Dokumentation der Option; eine Änderung des Dateipfades behebt keinen Optionsfehler.
Wichtige Erkenntnisse
- Leerzeichen trennen den Befehl, die Optionen und die Argumente.
- Schütze ein Leerzeichen innerhalb eines Namens durch Anführungszeichen oder Maskierung.
- Kurze Optionen lassen sich kombinieren; lange Optionen verwenden zwei Bindestriche.
- Eine Option kann einen eigenen Wert benötigen.
- Mit
--oder einem./-Pfad behandelst du einen Dateinamen, der mit einem Bindestrich beginnt. typeunterscheidet zwischen eingebautem Befehl, Alias und Programmdatei.
2Hilfe auf der Befehlszeile finden
Hilfe auf der Befehlszeile ermöglicht es dir, eine konkrete Frage zu beantworten, ohne jede Option auswendig zu lernen. Eine Handbuchseite bietet eine vollständige Referenz; die Kurzhilfe eines Befehls dient als kürzere Erinnerung. Bash hat außerdem ein separates Hilfesystem für in die Shell eingebaute Befehle. Du lernst, die richtige Quelle zu wählen, die Kurzschreibweise in einer Aufrufzeile zu lesen, eine lange Seite zu durchsuchen und anhand einer Fehlermeldung zu entscheiden, was du als Nächstes prüfst.
2.1 Handbuchseiten lesen und durchsuchen
Eine Handbuchseite ist eine ausführliche Referenz für einen bestimmten Befehl oder eine Systemfunktion. Öffne eine solche Seite mit man ls. Normalerweise erscheint sie in less, einem Pager, der jeweils eine Bildschirmseite zeigt und das Suchen ermöglicht, ohne das Terminal zu verlassen.
Den Aufbau der Seite lesen
Die Überschrift NAME bezeichnet den Befehl und seinen Zweck. SYNOPSIS gibt sein Aufrufmuster an. DESCRIPTION und OPTIONS erklären das Verhalten und die Optionen. EXAMPLES kann tatsächliche Anwendungen zeigen, während FILES und ENVIRONMENT zugehörige Dateien und Variablen beschreiben. SEE ALSO nennt verwandte Seiten. Die Überschriften unterscheiden sich, weil manche Befehle Informationen benötigen, die andere nicht brauchen.
Eine Aufrufzeile wie ls [OPTION]... [FILE]... ist eine kompakte Schreibweise:
- Wörtlicher Text, oft fett gedruckt, wird wie abgedruckt eingegeben.
- Platzhaltertext, oft kursiv oder unterstrichen, wird durch deinen Wert ersetzt.
- Eckige Klammern umschließen optionale Teile.
...bedeutet, dass der vorhergehende Teil wiederholt werden kann.- Ein senkrechter Strich trennt Alternativen.
In dieser Form von ls sind sowohl die Options- als auch die Dateigruppe optional, daher ist ls allein gültig. In mkdir [OPTION]... DIRECTORY... hat die Verzeichnisgruppe keine eckigen Klammern: Mindestens ein Verzeichnisname ist erforderlich. Gib DIRECTORY nicht nur deshalb ein, weil es im Handbuch steht.
Beim Lesen suchen
Die Leertaste oder Bild ab bewegt eine Bildschirmseite vorwärts; b bewegt zurück. Die Pfeiltasten bewegen sich zeilenweise. Das kleine g führt zum Anfang und das große G zum Ende. Gib /human ein und drücke die Eingabetaste, um nach „human“ zu suchen. Verwende n für den nächsten und N für den vorherigen Treffer. Drücke q, um die Seite zu verlassen; h öffnet die Hilfe des Pagers.
Für eine praktische Suche öffne man ls, suche nach /human und lies den Eintrag für -h, --human-readable. Die Option funktioniert mit einer Auflistung, die Größen zeigt, etwa -l. Verlasse das Handbuch und führe ls -lh aus. Eine Datei mit 2.048 Byte erscheint als 2.0K. ls -h allein ergibt weiterhin eine einfache Namensliste, weil keine Größenspalte angefordert wurde.
Die richtige Handbuchsektion wählen
| Sektion | Thema |
|---|---|
| 1 | Benutzerbefehle |
| 2 | Systemaufrufe |
| 3 | Bibliotheksfunktionen |
| 4 | Spezielle Gerätedateien |
| 5 | Dateiformate |
| 6 | Spiele |
| 7 | Übersichten und Konventionen |
| 8 | Befehle zur Systemadministration |
Der Verweis passwd(5) bezeichnet die Erklärung des Passwortdateiformats in Sektion 5. Führe man 5 passwd aus, um sie auszuwählen. Einfaches man passwd öffnet normalerweise die Befehlsseite aus Sektion 1.
Kennst du den Zweck, aber nicht den Befehl, führe apropos directory oder man -k directory aus. Beide durchsuchen indexierte Namen und Kurzbeschreibungen. Kennst du bereits einen Namen und möchtest seinen Zweck in einer Zeile erfahren, verwende whatis ls oder man -f ls. Auf einem neuen System kann der Index leer sein; eine erfolglose Stichwortsuche beweist daher nicht, dass der Befehl fehlt.
Einige minimale Installationen enthalten keine Handbücher. Wenn eine Seite für man cd fehlt, liegt das häufig auch daran, dass cd ein eingebauter Shellbefehl ist. Verwende help cd für die Beschreibung von Bash.
Wichtige Erkenntnisse
- Verwende
man commandfür eine Referenz und/word, um darin zu suchen. - Eckige Klammern in SYNOPSIS kennzeichnen optionale Teile; Auslassungspunkte kennzeichnen Wiederholungen.
- Eine Sektionsnummer wählt zwischen Seiten mit demselben Namen.
aproposdurchsucht Zweckbeschreibungen;whatisschlägt einen bekannten Namen nach.- Verwende
helpfür eingebaute Bash-Befehle wiecd.
2.2 Kurzhilfe und weitere Dokumentation nutzen
Du brauchst nicht immer eine vollständige Handbuchseite. Eine kurze Optionsliste, die eigene Hilfe eines eingebauten Befehls oder eine Fehlermeldung kann die unmittelbare Frage beantworten. Wähle eine Quelle, die den Befehl beschreibt, den du tatsächlich ausführst.
Hilfe passend zum Befehl wählen
type cp weist normalerweise auf eine Programmdatei hin, daher liefert cp --help den Aufruf und die Optionen. type cd weist auf einen eingebauten Shellbefehl hin, daher beschreibt help cd die Bash-Version. help allein listet eingebaute Bash-Befehle auf; es stellt keine Hilfeseite für das externe Programm ls bereit.
Die meisten GNU-Befehle unterstützen --help, aber die Bedeutungen kurzer Optionen unterscheiden sich. Bei ls bedeutet -h lesbare Größenangaben, nicht Hilfe. Lies ls --help, um die Optionen von ls zuverlässig zu prüfen, statt von einem anderen Programm auf sie zu schließen.
Angenommen, du möchtest reports/2026/q1 erstellen, aber die übergeordneten Verzeichnisse existieren nicht. Gehe die Frage Schritt für Schritt durch:
apropos directoryschlägtmkdirzum Erstellen von Verzeichnissen vor.mkdir --helpzeigt-p, --parentsund erklärt das Erstellen fehlender übergeordneter Verzeichnisse.mkdir -p reports/2026/q1erstellt den ganzen Pfad.
Die Hilfesuche liefert die fehlende Funktion, nicht nur den Befehlsnamen. Das ist wichtig, wenn du mkdir bereits kennst, aber seine gewöhnliche Form meldet, dass ein übergeordnetes Verzeichnis fehlt.
Über die Optionsliste hinaussehen
GNU-Info-Handbücher sind längere verlinkte Dokumente. info coreutils öffnet die Dokumentation für die grundlegenden Dateiwerkzeuge. Innerhalb von Info führt n zum nächsten Knoten, p zum vorherigen Knoten, u eine Ebene nach oben, die Eingabetaste folgt einem ausgewählten Link und q beendet das Programm. Ein Knoten ist ein Teil des verlinkten Handbuchs.
Installierte Pakete können auch Dokumentation unter /usr/share/doc/ bereitstellen. Zum Beispiel listet ls /usr/share/doc/bash die Dokumentation des Bash-Pakets auf. Diese Verzeichnisse können README-Dateien, Änderungsprotokolle, Lizenztext und Beispiele enthalten. Die Endung .gz kennzeichnet eine komprimierte Datei; zless kann komprimierten Text anzeigen.
Einen Fehler als Hinweis lesen
Ein Fehler nennt normalerweise den Befehl, das Objekt und den Grund. In ls: cannot access 'note.txt': No such file or directory wurde ls ausgeführt, konnte diesen Pfad aber nicht finden. Prüfe pwd, die Schreibweise und Groß- und Kleinschreibung sowie das Verzeichnis, das die Datei enthält. Würdest du ls erneut in Großbuchstaben eingeben, entstünde ein separates Problem mit dem Befehlsnamen.
rmdir: failed to remove 'photos': Directory not empty bedeutet, dass das Ziel existiert, aber noch Einträge enthält. Eine Auflistung einschließlich versteckter Einträge erklärt, warum das Entfernen fehlgeschlagen ist. Eine unbekannte Option ist etwas anderes: Eine Meldung zu --bogus verweist dich auf ls --help, weil die Option selbst ungültig ist.
Die lokale Hilfe passt besser zum installierten Programm als ein beliebiges Beispiel aus dem Web. ls --version nennt die GNU-Version, wenn du Dokumentation vergleichen musst. Bevor du einen unbekannten kopierten Befehl verwendest, ermittle jede Option in seiner eigenen Hilfe, besonders bei Befehlen, die Dateien entfernen oder mit Administratorrechten laufen.
Wichtige Erkenntnisse
- Wähle
command --helpfür Programmoptionen undhelp namefür eingebaute Bash-Befehle. infound/usr/share/doc/können ausführlichere Erklärungen und Beispiele bieten.- Nutze Befehl, Pfad und Grund in einer Fehlermeldung, um zu entscheiden, was du als Nächstes prüfst.
3Im Linux-Dateisystem navigieren
Dateien und Verzeichnisse liegen in einem einzigen Baum, und jeder Befehl arbeitet von einer bestimmten Stelle in diesem Baum aus. Ein Pfad sagt ihm, wohin er gehen oder was er untersuchen soll. Du verfolgst Pfade vom Wurzelverzeichnis und von deinem aktuellen Verzeichnis aus, verwendest Kurzformen für Home-Verzeichnis und übergeordnete Verzeichnisse und liest Auflistungen, die mehr als Namen zeigen. So kannst du deinen Standort und die Objekte prüfen, mit denen du arbeitest, bevor du etwas änderst.
3.1 Den Verzeichnisbaum verstehen
Linux ordnet Dateien und Verzeichnisse in einem einzigen Baum an. Eine Datei enthält Daten; ein Verzeichnis, in einer grafischen Dateiverwaltung Ordner genannt, enthält benannte Einträge für Dateien und andere Verzeichnisse. Der Baum beginnt beim Wurzelverzeichnis /.
Dem Baum folgen
Ein Schrägstrich trennt Pfadkomponenten: /home/sam/photos führt von / nach home, dann nach sam und schließlich nach photos. Andere Datenträger erscheinen innerhalb desselben Baums, oft unter /media oder /mnt; sie brauchen keine Laufwerksbuchstaben. Ein umgekehrter Schrägstrich ist unter Linux kein Pfadtrennzeichen. Bash verwendet ihn, um ein nachfolgendes Zeichen zu schützen, wie in Annual\ Report.pdf.
Wichtige Orte haben unterschiedliche Aufgaben:
| Ort | Hauptzweck |
|---|---|
/home | Home-Verzeichnisse regulärer Benutzer |
/root | Home-Verzeichnis des Benutzers root |
/etc | Systemkonfiguration |
/bin, /usr/bin | Alltägliche Programmdateien |
/sbin, /usr/sbin | Programme zur Systemadministration |
/tmp | Temporäre Daten, die automatisch entfernt werden können |
/var | Veränderliche Daten, einschließlich Protokollen unter /var/log |
/dev | Gerätedateien |
Viele aktuelle Distributionen verknüpfen /bin mit /usr/bin und /sbin mit /usr/sbin. Du kannst daher zwei Verzeichnisnamen sehen, die zu denselben installierten Programmen führen. Das Wurzelverzeichnis / und das Verzeichnis /root bezeichnen dennoch unterschiedliche Orte: Das eine ist der Anfang des Baums, das andere das Home-Verzeichnis eines Kontos.
Eigene Dateien erkennen
Für den Beispielbenutzer sam ist das Home-Verzeichnis /home/sam, von der Shell als ~ abgekürzt. /home ist das übergeordnete Verzeichnis, nicht sams persönliches Verzeichnis. Persönliche Dokumente und Einstellungen liegen normalerweise im Home-Verzeichnis; /tmp ist für Dinge ungeeignet, die du behalten musst, weil temporäre Daten automatisch entfernt werden können.
Betrachte diesen Aufbau:
/home/sam/
.bashrc
Documents/
cv.pdf
letter.txt
photos/
projects/
notes.txt
website/
index.html
style.css
Der vollständige Pfad zum Stylesheet lautet /home/sam/projects/website/style.css. Die Datei notes.txt liegt neben website, nicht darin. Die Einträge jedes Verzeichnisses bestimmen den nächsten möglichen Schritt im Baum nach unten.
Namen genau lesen
Bei Namen wird zwischen Groß- und Kleinschreibung unterschieden: notes.txt, Notes.txt und NOTES.TXT können drei Dateien bezeichnen. Namen dürfen weder / noch ein Nullbyte enthalten. Einfache Buchstaben, Ziffern, Punkte, Bindestriche und Unterstriche erleichtern die alltägliche Eingabe von Namen; gängige Linux-Dateisysteme beschränken einen einzelnen Namen auf 255 Byte.
Eine Endung wie .txt ist Teil eines Namens, kein Beweis für seinen Inhalt. file report untersucht die Daten und kann ein PDF erkennen, selbst wenn dem Namen .pdf fehlt.
Ein führender Punkt versteckt einen Eintrag in der gewöhnlichen Ausgabe von ls. .bashrc, .profile und .config enthalten häufig Einstellungen. Versteckt bedeutet, dass der Eintrag in der Standardauflistung fehlt, nicht dass er vor Zugriff geschützt ist; ls -a zeigt diese Namen. Der besondere Eintrag . bezeichnet das Verzeichnis selbst und .. sein übergeordnetes Verzeichnis. Am Wurzelverzeichnis führt .. weiterhin nach /.
Wichtige Erkenntnisse
- Linux-Pfade gehören zu einem einzigen Baum mit
/als Wurzel. /home/sam,/homeund/rootsind verschiedene Verzeichnisse.- Bei Dateinamen wird zwischen Groß- und Kleinschreibung unterschieden; Endungen bestimmen nicht den Inhalt.
- Ein führender Punkt versteckt einen Namen in einer gewöhnlichen Auflistung, nicht vor berechtigtem Zugriff.
.bezeichnet das aktuelle Verzeichnis und..sein übergeordnetes Verzeichnis.
3.2 Mit absoluten und relativen Pfaden zwischen Verzeichnissen wechseln
Ein Pfad sagt einem Befehl, wo er ein Objekt findet. Um einen Pfad richtig zu lesen, entscheide zuerst, wo er beginnt. Ein absoluter Pfad beginnt bei /; ein relativer Pfad beginnt beim aktuellen Arbeitsverzeichnis der Shell.
Den Ausgangspunkt bestimmen
pwd gibt dein aktuelles Verzeichnis aus. Von /home/sam aus führt der Pfad projects/website nach /home/sam/projects/website. Von /etc aus würde derselbe relative Pfad /etc/projects/website bedeuten. Der absolute Pfad /home/sam/projects/website bezeichnet von beiden Ausgangspunkten aus denselben Ort.
cd ändert das aktuelle Verzeichnis. Es listet weder den Inhalt des Ziels auf noch öffnet es eine Datei. cd projects wechselt in ein untergeordnetes Verzeichnis namens projects; cd /etc wechselt zum absoluten Pfad /etc. Ohne Argument kehrt cd zum Home-Verzeichnis zurück. cd - kehrt zum vorherigen Arbeitsverzeichnis zurück und gibt diesen Ort aus.
Einen Pfad Schritt für Schritt verfolgen
Beginne in /home/sam/projects/website und betrachte cd ../../photos:
- Das erste
..führt nach/home/sam/projects. - Das zweite
..führt nach/home/sam. photosführt hinunter nach/home/sam/photos.
Der ganze Befehl führt einen Wechsel zum endgültigen Ziel aus. Vom Verzeichnis website aus hält cd .. bei projects, während cd ../.. im Home-Verzeichnis hält. Das Ausgangsverzeichnis ist jedes Mal entscheidend: Nach einem Wechsel beginnt ein zweiter relativer Befehl an deinem neuen Standort.
Ein vorangestelltes ./ bezeichnet ausdrücklich das aktuelle Verzeichnis. ./notes.txt und notes.txt beziehen sich auf dieselbe lokale Datei. ls ../photos listet ein nahe gelegenes Verzeichnis auf, ohne mit deiner Shell dorthin zu wechseln; nur ein Befehl, der das Arbeitsverzeichnis ändert, etwa cd, ändert die Grundlage für spätere relative Pfade.
Die Kurzform für das Home-Verzeichnis verwenden
Am Anfang eines nicht durch Quoting geschützten Wortes expandiert Bash ~ zu deinem Home-Verzeichnis. cd ~/Documents funktioniert daher für sam von überall aus. ~alex bezieht sich auf das Home-Verzeichnis von alex.
Anführungszeichen um die Tilde verhindern diese Expansion: cd "~/Documents" fragt nach einem Verzeichnis mit dem wörtlichen Namen ~ unterhalb des aktuellen Verzeichnisses. Enthält der spätere Teil ein Leerzeichen, lass die Tilde außerhalb der Anführungszeichen:
cd ~/"My Files"
Du kannst auch cd "$HOME/My Files" schreiben; doppelte Anführungszeichen erhalten das Leerzeichen und erlauben zugleich die Expansion des Variablenwerts.
Einen fehlgeschlagenen Pfad prüfen
cd /projects fragt nach projects direkt unter /, nicht unter deinem Home-Verzeichnis. cd.. ist ein einzelner Befehlsname; schreibe cd ... Ein kleingeschriebenes documents schlägt fehl, wenn der tatsächliche Name Documents lautet. Prüfe den Anfang, jede Komponente und ihre genaue Groß- und Kleinschreibung. Die Tab-Vervollständigung kann einen vorhandenen Namen ergänzen und einen Tippfehler vermeiden.
Absolute Pfade eignen sich für Anleitungen, die von verschiedenen Orten aus funktionieren müssen. Relative Pfade sind für die Arbeit in der Nähe praktisch. Beide Formen funktionieren auch als Dateiargumente für cp, mv, ls und andere Befehle; die Deutung eines Pfades hängt nicht davon ab, ob du ihn mit cd verwendest.
Wichtige Erkenntnisse
- Verwende
pwd, um die Grundlage eines relativen Pfades zu bestimmen. - Absolute Pfade beginnen mit
/; relative Pfade beginnen beim aktuellen Verzeichnis. - Lies jedes
..als einen Schritt zum übergeordneten Verzeichnis. cd,cd -undcd ..haben unterschiedliche Ziele.- Lass
~ungeschützt, wenn es zum Home-Verzeichnis expandiert werden soll.
3.3 Verzeichnisinhalte auflisten und untersuchen
ls zeigt den Inhalt des aktuellen Verzeichnisses oder die Dateien und Verzeichnisse, die du angibst. Eine Auflistung kann mehr beantworten als „Was ist hier?“: Optionen zeigen versteckte Einträge, Details, Größen, Reihenfolge und Unterverzeichnisse.
Auswählen, was angezeigt wird
Einfaches ls und ls -l lassen versteckte Einträge aus. -a schließt sie zusammen mit . und .. ein; -A schließt versteckte Einträge ohne diese beiden besonderen Namen ein. -F fügt nach Verzeichnisnamen einen Schrägstrich hinzu. Ausgabefarben sind eine weitere visuelle Hilfe, aber die genauen Farben hängen vom System ab.
ls projects listet den Inhalt von projects auf. ls -ld projects zeigt stattdessen eine lange Auflistung des Verzeichniseintrags selbst. Die Option -d ändert das angezeigte Objekt, nicht den Umfang der Details.
Eine lange Auflistung lesen
Betrachte diese Zeile aus ls -l:
-rw-r--r-- 1 sam sam 2048 Mar 3 14:20 notes.txt
Lies von links nach rechts:
-kennzeichnet eine reguläre Datei;dwürde ein Verzeichnis undleinen symbolischen Link kennzeichnen.- Die nächsten neun Zeichen beschreiben die Rechte für Eigentümer, Gruppe und andere.
1ist die Linkanzahl.- Die beiden
sam-Felder bezeichnen Eigentümer und Gruppe. 2048ist die Dateigröße in Byte.- Datum und Uhrzeit beschreiben die letzte Inhaltsänderung.
notes.txtist der Name.
ls -lh zeigt diese Größe als 2.0K an. Die Option -h ändert das Größenformat, während -l die Größenspalte liefert. ls -h allein zeigt weiterhin Namen ohne Größen.
Die eigene Größe eines Verzeichnisses ist der für seine Einträge verwendete Speicherplatz; sie ist nicht die Summe aller enthaltenen Daten. Die Überschrift total 12 beschreibt die Datenträgerblöcke für die aufgeführten Einträge, nicht zwölf Dateien. An den Zeilen mit Dateinamen siehst du die Einträge selbst.
Das Ergebnis sortieren
| Optionen | Was zuerst kommt |
|---|---|
| Keine Sortieroption | Namen in der Sortierreihenfolge der Locale |
-t | Zuletzt geänderte Einträge |
-S | Größte Einträge |
-r mit einer anderen Reihenfolge | Die Umkehrung dieser Reihenfolge |
Zum Beispiel stellt ls -lt die neuesten Änderungen an den Anfang, während ls -ltr sie ans Ende setzt. ls -lhS zeigt lesbare Größenangaben, die größten zuerst. Groß- und Kleinschreibung sowie Satzzeichen können je nach Locale-Einstellung unterschiedlich sortiert werden. Schließe daher nicht allein aus der erwarteten Position eines Namens, dass eine Datei fehlt.
Unterhalb der ersten Ebene untersuchen
ls -R projects listet den Inhalt von projects und danach den seiner Unterverzeichnisse auf. Liegt notes.txt neben einem Verzeichnis website, lautet die erste Überschrift projects: und ihre Einträge enthalten diese beiden Namen. Eine spätere Überschrift, projects/website:, bezeichnet die Auflistung mit index.html und style.css.
Das große -R wirkt rekursiv. Das kleine -r kehrt nur die Sortierung um. Kombinierst du -a mit einer rekursiven Auflistung, erscheinen auch versteckte Einträge, wodurch das Ergebnis viel länger werden kann. Für die Metadaten eines einzelnen Verzeichnisses ist ls -ld meist die übersichtlichere Abfrage.
Wichtige Erkenntnisse
-lergänzt Details und-hmacht angezeigte Größen leichter lesbar.-aschließt versteckte Einträge ein;-Alässt nur.und..aus.-dlistet ein Verzeichnis selbst auf;-Rlistet seine Unterverzeichnisse auf.-t,-Sund-rsteuern die Reihenfolge.- Die Größe eines Verzeichnisses und die
total-Zeile geben weder die Anzahl noch die Gesamtgröße aller enthaltenen Dateien an. - Eine lange Auflistung nennt Typ, Rechte, Links, Eigentümer, Gruppe, Größe, Änderungszeitpunkt und Namen.
4Dateien und Verzeichnisse anlegen, kopieren, verschieben und löschen
Ein Verzeichnis anzulegen, eine Datei zu kopieren und eine Datei umzubenennen verändert den Baum jeweils auf andere Weise. Das Ergebnis hängt auch davon ab, ob ein Ziel bereits existiert. Du baust eine kleine Verzeichnisstruktur auf, sagst voraus, wo Kopien und verschobene Dateien landen, und unterscheidest das Entfernen eines leeren Verzeichnisses vom Entfernen eines ganzen Baums. Wenn du den Befehl als Aktion auf bestimmte Quell- und Zielpfade liest, hilft dir das, versehentliches Überschreiben und Entfernen zu vermeiden.
4.1 Dateien und Verzeichnisse anlegen
mkdir erstellt Verzeichnisse und touch erstellt leere Dateien oder aktualisiert vorhandene Zeitstempel. Das sind verschiedene Aktionen: Ein Verzeichnis bietet Platz für Einträge, während eine leere Datei bereits eine Datei ist, obwohl sie keine Daten enthält.
Zuerst das Verzeichnis erstellen
mkdir drafts erstellt ein Verzeichnis unterhalb deines aktuellen Standorts. mkdir drafts final erstellt zwei Verzeichnisse auf derselben Ebene. Existiert ein angeforderter Name bereits, meldet ein einfaches mkdir den Fehler File exists.
Die übergeordneten Verzeichnisse eines Pfades müssen normalerweise existieren. Fehlt reports, kann mkdir reports/2026/q1 den angeforderten Ort nicht erreichen. Ergänze -p, um fehlende übergeordnete Verzeichnisse zu erstellen:
mkdir -p reports/2026/q1
Damit wird jede fehlende Ebene erstellt; bereits vorhandene Verzeichnisse werden akzeptiert. Es ist nützlich, den Befehl zu wiederholen, wenn du eine Struktur vorbereitest, deren vorhandene Teile bestehen bleiben sollen. Eine vorhandene reguläre Datei wird dadurch nicht in ein Verzeichnis umgewandelt.
Leere Dateien hinzufügen
touch todo.txt erstellt eine Datei mit null Byte, wenn dieser Name fehlt. Existiert die Datei, erhält touch ihren Inhalt und aktualisiert ihren Zugriffs- und Änderungszeitpunkt. Der Befehl leert keine Datei. Du kannst mehrere Dateien angeben, wie in touch a.txt b.txt, oder mit touch -d 2025-01-31 old.txt einen Zeitstempel wählen.
Dateien mit Inhalt stammen normalerweise aus einem Programm, das Daten speichert, etwa einem Editor. Erstellst du eine Datei mit touch, erhält sie einen Namen und einen leeren Inhalt; Text wird nicht hinzugefügt.
Ein kleines Projekt aufbauen
Führe von deinem Home-Verzeichnis aus Folgendes aus:
mkdir -p website/css website/images
touch website/index.html website/css/style.css
ls -R website
Die erste Zeile erstellt website und seine beiden Unterverzeichnisse. Die zweite legt index.html in website und style.css in website/css ab. Keine der beiden Dateien wird in images abgelegt. In der rekursiven Auflistung enthält website: die Einträge css, images und index.html; website/css: enthält style.css; website/images: hat keine gewöhnlichen Einträge.
Beachte, dass der Befehl touch auf die mit mkdir erstellten übergeordneten Verzeichnisse angewiesen ist. Würdest du diese beiden Schritte vertauschen, schlüge es fehl, wenn website noch nicht existierte.
Ein leeres Verzeichnis entfernen
rmdir website/images entfernt dieses leere Verzeichnis. rmdir website/css schlägt fehl, solange style.css darin liegt. Auch ein versteckter Eintrag macht ein Verzeichnis nicht leer. Untersuche es daher mit ls -A, wenn die gewöhnliche Auflistung leer aussieht.
rmdir -p reports/2026/q1 entfernt q1, versucht dann 2026 und danach reports. Der Befehl stoppt, wenn ein übergeordnetes Verzeichnis nicht leer ist. Diese Option arbeitet nach oben, während mkdir -p fehlende übergeordnete Verzeichnisse nach unten aufbaut.
Leerzeichen trennen weiterhin Argumente. mkdir My Project fordert zwei Verzeichnisse an; mkdir "My Project" fordert eines an. Ein einfacher Name wie my-project vermeidet das Leerzeichen. Die Namen Reports und reports sind verschieden. Verwende daher beim Erstellen und in späteren Pfaden dieselbe Groß- und Kleinschreibung.
Wichtige Erkenntnisse
mkdirerstellt Verzeichnisse;-perstellt auch fehlende übergeordnete Verzeichnisse.toucherstellt eine fehlende leere Datei oder aktualisiert eine vorhandene Datei, ohne sie zu leeren.- Erstelle übergeordnete Verzeichnisse vor den Dateien darin.
rmdirentfernt nur leere Verzeichnisse, die auch keine versteckten Einträge enthalten.
4.2 Kopieren, verschieben und umbenennen
Beim Kopieren bleibt eine Quelle bestehen. Beim Verschieben ändert sich ihr Name oder Speicherort. Um das Ergebnis einer der beiden Aktionen vorherzusagen, lies den Quellpfad und den Zielpfad und prüfe, ob das Ziel bereits existiert.
Das Ziel einer Kopie vorhersagen
cp notes.txt notes-backup.txt erstellt eine zweite Datei namens notes-backup.txt. Ist Documents ein vorhandenes Verzeichnis, erstellt cp notes.txt Documents/ stattdessen Documents/notes.txt. Der abschließende Schrägstrich drückt die Absicht aus, in ein Verzeichnis zu kopieren.
Bei mehreren Quellen muss das letzte Argument ein vorhandenes Verzeichnis sein. cp cv.pdf letter.txt backup/ legt beide angegebenen Dateien in backup ab. Ein fehlendes Zielverzeichnis wird von diesem Befehl nicht automatisch erstellt.
Verzeichnisse müssen rekursiv kopiert werden. cp website website-old lässt das Verzeichnis aus, weil keine rekursive Option angegeben wurde. cp -r website website-old kopiert den Baum, aber das Ergebnis hängt vom Ziel ab:
| Vor dem Kopieren | Speicherort des kopierten Baums |
|---|---|
website-old existiert nicht | website-old/index.html und so weiter |
website-old existiert als Verzeichnis | website-old/website/index.html und so weiter |
Ein vorhandenes Zielverzeichnis nimmt das Quellverzeichnis unter dessen Namen auf. Es wird nicht automatisch durch den Inhalt der Quelle ersetzt.
Verschieben oder umbenennen
mv draft.txt final.txt benennt eine Datei um. mv final.txt Documents/ verschiebt sie in ein vorhandenes Verzeichnis. mv website site benennt ein Verzeichnis um, wenn site fehlt, und benötigt keine rekursive Option.
Innerhalb eines Dateisystems ändert das Verschieben normalerweise Verzeichniseinträge, ohne alle Daten zu kopieren. Beim Verschieben zwischen Dateisystemen kann es nötig sein, Daten zu kopieren und zu entfernen. Ein großer Verschiebevorgang muss daher nicht sofort abgeschlossen sein.
Existiert archive nicht, benennt mv notes.txt archive die Datei in archive um. mv notes.txt archive/ verlangt dagegen ein Verzeichnis und schlägt fehl, wenn dieses Verzeichnis fehlt. Verwende den Schrägstrich, wenn ein neuer Dateiname das falsche Ergebnis wäre.
Ersetzen und Metadaten steuern
Einfaches cp und mv können eine vorhandene Zieldatei ohne Nachfrage überschreiben. -i fragt vor dem Ersetzen; -n überspringt vorhandene Ziele; -v gibt Aktionen aus. Aliase können Optionen hinzufügen. Verwende daher type cp oder type mv, wenn das beobachtete Verhalten abweicht.
Eine neu erstellte gewöhnliche Kopie erhält einen neuen Änderungszeitpunkt. cp -p erhält Zeitstempel und Rechte, während cp -a die Attribute eines Verzeichnisbaums rekursiv erhält und für Sicherungskopien nützlich ist. Nimm nicht an, dass eine einfache Kopie den Zeitstempel ihrer Quelle erhält, nur weil die Inhalte übereinstimmen.
Einen vollständigen Vorgang verfolgen
Erstelle von /home/sam aus zunächst backup. cp projects/notes.txt backup/ erstellt backup/notes.txt. Anschließend ändert mv backup/notes.txt backup/notes-2026.txt nur den Namen der Kopie. Schließlich erstellt cp -r projects/website backup/ das Verzeichnis backup/website samt seinen Dateien. Die Originale projects/notes.txt und projects/website bleiben an ihrem Ort, weil keines davon Quelle eines Verschiebevorgangs war.
Wichtige Erkenntnisse
cperhält die Quelle;mvändert ihren Namen oder Speicherort.- Ein vorhandenes Zielverzeichnis nimmt die Quelle unter deren Namen auf.
- Mehrere Quellen erfordern ein Verzeichnis als letztes Argument.
cp -rkopiert einen Baum;mvbraucht keine rekursive Option.-ifragt vor dem Überschreiben und-nüberspringt ein vorhandenes Ziel.cp -perhält Zeitstempel und Rechte;cp -aerhält einen Verzeichnisbaum rekursiv.
4.3 Dateien und Verzeichnisse sicher löschen
rm entfernt Dateien, die durch seine Argumente angegeben werden. Anders als beim Verschieben in den Papierkorb einer grafischen Dateiverwaltung legt der Befehl sie nicht in einem Papierkorb ab. Nach dem Entfernen lassen sie sich normalerweise aus einer Sicherungskopie wiederherstellen.
Den richtigen Befehl zum Entfernen wählen
rm old.txt entfernt eine Datei und rm a.txt b.txt entfernt mehrere angegebene Dateien. Einfaches rm old verweigert die Ausführung, wenn old ein Verzeichnis ist. rmdir old oder GNU rm -d old entfernt ein Verzeichnis nur, wenn es leer ist. rm -r old entfernt rekursiv seinen Inhalt und dann das Verzeichnis selbst.
Diese Unterscheidung ist nützlich, wenn du ein leeres Verzeichnis erwartest. Schlägt rmdir mit Directory not empty fehl, hast du Gelegenheit, unerwartete Inhalte zu untersuchen. Rekursives Entfernen würde auch diese Inhalte entfernen.
Nachfragen bewusst steuern
| Option | Wirkung |
|---|---|
-i | Vor jedem Entfernen fragen |
-I | Vor dem Entfernen von mehr als drei Dateien oder vor rekursivem Entfernen einmal fragen |
-f | Nicht fragen; fehlende Namen ignorieren |
-v | Aktionen beim Entfernen ausgeben |
Bei gewöhnlicher interaktiver Eingabe kann rm auch wegen einer schreibgeschützten Datei nachfragen. -f unterdrückt diese Frage. Dadurch lässt sich das Löschen weder rückgängig machen, noch entfällt jeder mögliche Grund für das Fehlschlagen eines Befehls.
Die genauen Ziele prüfen
Verwende vor einem Entfernen, das mehrere Namen betreffen könnte, diese Vorgehensweise:
- Führe
pwdaus, um deinen Standort zu bestätigen. - Liste genau die Namen oder das Muster auf, die du entfernen möchtest.
- Prüfe die Liste und achte auch darauf, ob Verzeichnisse ausgewählt sind.
- Verwende denselben Zielausdruck mit
rmund ergänze-i, wenn eine Bestätigung hilft.
Angenommen, das Verzeichnis enthält draft1.tmp, draft2.tmp, final.txt und notes.tmp. ls *.tmp zeigt die drei temporären Dateien. rm -i *.tmp fragt nach diesen drei Namen; final.txt passt nicht auf das Muster. Die Antwort n überspringt eine Datei, während y das Entfernen bestätigt.
Die Schreibweise des Pfades beibehalten
Ein Leerzeichen ist auch in einem gefährlichen Befehl eine Wortgrenze. Ein zusätzliches Leerzeichen zwischen ~/ und einem untergeordneten Namen macht aus einem Pfad relativ zum Home-Verzeichnis zwei getrennte Ziele. Prüfe vor der Eingabetaste die ganze Zeile. Vermeide für routinemäßiges Aufräumen erzwungenes rekursives Entfernen, wenn ein genauer eingegrenzter Befehl die Aufgabe erfüllt. GNU rm schützt / selbst standardmäßig; dieser Schutz bewahrt nicht jeden Pfad unter / vor einem fehlerhaften Muster.
Ein führender Bindestrich kann mit einer Option verwechselt werden. rm -- -draft.txt beendet die Optionsverarbeitung vor dem Dateinamen. Auch rm ./-draft.txt bezeichnet ihn eindeutig. Verwende für ein Leerzeichen innerhalb eines Namens rm "old notes.txt"; die Version ohne Anführungszeichen bezeichnet old und notes.txt getrennt.
Ein Fehler muss untersucht werden und verlangt nicht automatisch nach höheren Rechten. Schlägt ein Entfernen fehl, prüfe, ob das Ziel ein Verzeichnis ist, ob sein Pfad stimmt und was genau die Meldung sagt. Wiederholst du einen falsch eingegebenen Befehl mit Administratorrechten, kann der Fehler größere Auswirkungen haben.
Wichtige Erkenntnisse
rmentfernt direkt; es verschiebt Dateien nicht in einen Papierkorb.- Verwende
rmdirfür ein leeres Verzeichnis undrm -rfür einen Baum. - Prüfe vor dem Entfernen das Arbeitsverzeichnis und die genauen Ziele.
-ifragt für jedes Ziel;-funterdrückt Nachfragen und ignoriert fehlende Namen.- Leerzeichen, Anführungszeichen und führende Bindestriche ändern, wie Argumente beim Entfernen gelesen werden.
5Dateien mit Platzhaltern auswählen
Ein Platzhalter kann ein kurzes Muster in viele Dateinamen verwandeln. Bash gleicht das Muster ab, bevor es den Befehl startet. Daher kann dasselbe Muster zum Auflisten, Kopieren oder Entfernen dienen. Du ermittelst genau, welche Namen passen, berücksichtigst Groß- und Kleinschreibung und versteckte Einträge und siehst, wie Quoting verändert, was ein Programm erhält. Die Klammerexpansion ergänzt ein weiteres nützliches Werkzeug: Sie erzeugt neue Namen, selbst wenn keine Dateien mit diesen Namen existieren.
5.1 Dateinamen mit *, ? und [ ] abgleichen
Ein Glob ist ein Dateinamenmuster. Bash ersetzt ein nicht durch Quoting geschütztes Muster durch passende vorhandene Namen, bevor es den Befehl startet. Du kannst dasselbe Muster mit ls, cp, mv oder einem anderen Befehl verwenden, der diese Namen akzeptiert.
Einen Namen Schritt für Schritt abgleichen
| Musterteil | Worauf er passt |
|---|---|
* | Jede Zeichenfolge, auch eine leere |
? | Genau ein Zeichen |
[12] | Ein Zeichen: 1 oder 2 |
[0-9] | Eine Ziffer im Bereich |
[!0-9] | Ein Zeichen außerhalb des Ziffernbereichs |
Ein Muster passt auf den ganzen Namen. report* passt auf report, weil der Stern auch auf kein Zeichen passen kann. beach?.jpg passt auf beach1.jpg, aber nicht auf beach10.jpg: Zwei Ziffern passen nicht auf ein Fragezeichen. beach[12].jpg beschränkt diese eine Stelle auf 1 oder 2.
Für ein durchgerechnetes Auswahlbeispiel enthalte photos die Einträge beach1.jpg, beach2.jpg, beach10.jpg, city1.jpg, city2.png, IMG_01.JPG, notes.txt und .index. Das Muster *.jpg passt auf die drei Strandfotos und city1.jpg. city* passt auch auf city2.png, weil es den Anfang und nicht die Endung einschränkt. [!b]* passt auf Namen, deren erstes Zeichen nicht b ist, und lässt sowohl die Strandnamen als auch die versteckte Datei .index aus.
Groß- und Kleinschreibung und führende Punkte berücksichtigen
Beim Abgleich wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden. *.jpg wählt IMG_01.JPG nicht aus. Das Muster *.[jJ][pP][gG] akzeptiert an jeder Stelle der Endung beide Schreibweisen und schließt daher beide Formen ein.
Ein führender Punkt erfordert beim gewöhnlichen Abgleich in Bash einen ausdrücklichen Punkt am Anfang dieser Pfadkomponente. * überspringt .index; .i* wählt die Datei aus. Diese Regel gilt auch innerhalb eines Verzeichnisses: photos/* überspringt versteckte Namen in photos. Das Muster erfasst versteckte Dateien nicht allein deshalb, weil ls -a der empfangende Befehl ist; die Expansion ist bereits vor dem Start von ls erfolgt.
Ein Platzhalter überschreitet kein /. photos/*.jpg wählt passende Einträge direkt in photos aus. */notes.txt wählt eine passende Datei genau eine Verzeichnisebene unterhalb des aktuellen Verzeichnisses aus. Es durchsucht nicht alle tieferen Verzeichnisse.
Zeichenmengen sorgfältig lesen
[abc] steht für eine Zeichenposition, nicht für eine Auswahl unter ganzen Dateinamen. Ein führendes ! oder ^ negiert die Zeichenmenge. Ein Bereich wie [a-f] folgt den Regeln der Locale, die Reihenfolge und Abgleich beeinflussen können. Benannte Klassen verwenden ein weiteres Klammerpaar: [[:digit:]], [[:upper:]] und [[:lower:]]. Ihre Zeicheneinteilung richtet sich nach der Locale; Kleinbuchstaben sind nicht auf die ASCII-Buchstaben a bis z beschränkt.
Für Globs und reguläre Ausdrücke gelten unterschiedliche Regeln. In einem Glob ist ein Punkt ein wörtlicher Punkt und * bereits eine vollständige Anweisung für „eine beliebige Zeichenfolge“. Übernimm nicht die Bedeutung von . oder * aus einem Textsuchmuster, wenn du vorhersagst, welche Dateinamen passen.
Wichtige Erkenntnisse
- Bash expandiert Globs zu passenden vorhandenen Namen, bevor ein Befehl ausgeführt wird.
*passt auf null oder mehr Zeichen;?und eine Zeichenmenge in Klammern passen jeweils auf ein Zeichen.- Groß- und Kleinschreibung sowie ein führender Punkt beeinflussen den Abgleich.
- Platzhalter passen innerhalb einer Pfadkomponente und überschreiten kein
/. - Zeichenbereiche und Zeichenklassen hängen von der Locale ab.
- Globs und reguläre Ausdrücke interpretieren Symbole unterschiedlich.
5.2 Platzhalter in Befehlen sicher verwenden
Ein Programm erhält die Namen, die Bash erzeugt, nicht den Platzhalterausdruck, der sie ausgewählt hat. Deshalb ist eine Vorschau nützlich: Du kannst die ausgewählten Argumente prüfen, bevor ein Befehl Dateien verändert.
Erst expandieren, dann ausführen
Sind notes.txt und todo.txt die einzigen Namen mit .txt, erhält ls *.txt diese beiden Namen. Die Shell führt den Abgleich durch; ls kann dann jedes Argument nach seinen eigenen Regeln auflisten. Passende Verzeichnisse zählen ebenfalls als Namen. Ein Muster garantiert also nicht, dass jedes Ziel eine reguläre Datei ist.
echo *.tmp gibt die expandierten Wörter aus, ohne Dateien zu verändern. ls -d -- *.tmp listet die passenden Einträge selbst auf, einschließlich etwaiger Verzeichniseinträge, statt deren Inhalt zu zeigen. Bei unkomplizierten Dateinamen kannst du mit diesen Vorschauen die Auswahl vor dem Kopieren, Verschieben oder Entfernen leicht prüfen.
In der Standardeinstellung von Bash bleibt ein Muster ohne Treffer unverändert. Existiert kein Name mit .pdf, gibt echo *.pdf den Text *.pdf aus; ls *.pdf versucht, auf diesen wörtlichen Namen zuzugreifen, und meldet, dass er nicht existiert. Ein ausgegebener Stern kann daher ein Hinweis auf einen fehlenden Treffer sein und keine tatsächliche Liste ausgewählter Dateien.
Entscheiden, wer das Muster sehen soll
Anführungszeichen verhindern die Platzhalterexpansion. echo '*.txt', echo "*.txt" und echo \*.txt geben alle das wörtliche Muster aus. Dagegen fordert echo *.txt Bash auf, vorhandene passende Namen auszuwählen. Quoting ist angebracht, wenn das Programm selbst die Sonderzeichen erhalten soll oder wenn eine echte Datei einen Stern im Namen hat.
Halte diese Entscheidung vom Quoting von Leerzeichen getrennt. Ein durch Glob-Expansion ausgewählter Dateiname bleibt ein Argument, auch wenn der ausgewählte Name ein Leerzeichen enthält. Eine Variable, die einen Pfad enthält, sollte bei ihrer Verwendung dagegen normalerweise in doppelte Anführungszeichen gesetzt werden, weil ihre ungeschützte Expansion in Wörter aufgeteilt werden kann.
Das Ziel des Befehls prüfen
cp *.jpg ~/backup/ kopiert passende Namen in ein vorhandenes Sicherungsverzeichnis. mv draft* archive/ verschiebt passende Namen in ein vorhandenes Archivverzeichnis. Ein abschließender Schrägstrich verlangt ein Verzeichnis als Ziel und hilft so, ein fehlendes Ziel zu erkennen, statt eine einzelne Quelle ohne Meldung umzubenennen.
Ein weit gefasstes * schließt Verzeichnisse ein. cp * backup/ kopiert gewöhnliche Dateien, lässt Verzeichnisse aber ohne rekursives Kopieren aus. Ergänzt du -r, werden Verzeichnisse eingeschlossen, darunter auch backup selbst, wenn es im aktuellen Verzeichnis liegt; cp verweigert es dann, dieses Verzeichnis in sich selbst zu kopieren. Lege eine Sicherung außerhalb der ausgewählten Quellen ab oder wähle ein engeres Muster.
Leerzeichen ändern die Auswahl. *.tmp ist ein Muster; * .tmp ist ein weit gefasstes Muster plus ein separates Argument, dessen Name mit einem Punkt beginnt. Prüfe genau den Ausdruck, den du verwenden wirst.
Neue Namen mit geschweiften Klammern erzeugen
Die Klammerexpansion schreibt Wörter aus, unabhängig davon, ob sie existieren:
mkdir -p project/{src,docs,tests}
touch file{1..3}.txt
cp notes.txt{,.bak}
Die erste Zeile erstellt drei benannte Unterverzeichnisse. Die zweite erzeugt file1.txt, file2.txt und file3.txt. Die letzte wird zu cp notes.txt notes.txt.bak expandiert; ihre erste Auswahl in den geschweiften Klammern ist leer. Verwende geschweifte Klammern, um Namen zu erzeugen, und Globs, um vorhandene Namen auszuwählen.
Wichtige Erkenntnisse
- Prüfe das tatsächliche Muster, bevor du einen Befehl verwendest, der Dateien verändert.
- Ohne Treffer bleibt das Muster in der Standardeinstellung von Bash wörtlich erhalten.
- Anführungszeichen oder ein umgekehrter Schrägstrich erhalten Platzhalterzeichen wörtlich.
- Globs wählen sowohl Verzeichnisse als auch reguläre Dateien aus.
- Die Klammerexpansion erzeugt Wörter, auch wenn keine passenden Dateien existieren.
6Befehle wiederverwenden und mit Variablen arbeiten
Eine Shell kann sich deine Befehle merken und Werte speichern, die du erneut verwendest. Der Befehlsverlauf spart Tipparbeit, Variablen benennen nützliche Werte und die Umgebung gibt ausgewählte Werte an neu gestartete Programme weiter. PATH sagt Bash über eine Umgebungsvariable, wo es nach Programmdateien suchen soll. Du verknüpfst diese Funktionen mit Quoting, Befehlsauflösung und Startdateien, sodass du erklären kannst, was jetzt funktioniert und was eine spätere Terminalsitzung erbt.
6.1 Befehle aus dem Befehlsverlauf aufrufen und wiederverwenden
Bash führt einen Befehlsverlauf mit den in der Shell eingegebenen Befehlen. Du kannst eine Zeile aufrufen, prüfen, einen Teil ändern und die bearbeitete Version ausführen. Das ist besonders bei einem langen Pfad oder einer kürzlich verwendeten Optionskombination nützlich.
Eine Zeile vor der Ausführung aufrufen
Die Pfeiltasten nach oben und unten führen durch frühere Befehle. Die aufgerufene Zeile wird zu einer bearbeitbaren Eingabe; sie wird erst ausgeführt, wenn du die Eingabetaste drückst. history gibt die nummerierte Liste aus und history 5 beschränkt die Ausgabe auf die jüngsten Einträge.
Strg+R sucht rückwärts. Gib einen Teil eines Befehls ein, etwa mkdir, um die jüngste passende Zeile zu finden. Drücke erneut Strg+R für einen älteren Treffer. Die Eingabetaste führt den angezeigten Befehl aus, während Strg+G die Suche abbricht. Lies das ganze Ergebnis, da der gefundene Ausschnitt in mehreren Befehlen mit unterschiedlichen Pfaden vorkommen kann.
Kurzformen mit Ausrufezeichen verstehen
Die Verlaufsexpansion schreibt Ausdrücke vor der Ausführung um:
| Ausdruck | Wiederverwendeter Text |
|---|---|
!! | Der vorherige Befehl |
!42 | Verlaufsereignis 42 |
!ls | Der jüngste Befehl, der mit ls beginnt |
!$ | Das letzte Argument des vorherigen Befehls |
Unmittelbar nach mkdir -p reports/2026 wird cd !$ zum Beispiel zu cd reports/2026 expandiert. Die Kurzform bezieht sich auf den vorherigen Befehl. Ein anderer Befehl zwischen diesen Zeilen würde daher ändern, was !$ auswählt. Um einen nummerierten Befehl zu wiederholen, verwende seine Ereignisnummer; um sein letztes Argument wiederzuverwenden, verwende im passenden Kontext eine Wortkurzform.
Normalerweise gibt die Expansion den expandierten Befehl aus und führt ihn sofort aus. Die Anzeige ist keine Bestätigungsaufforderung. Ein Zusatz :p, etwa in !rm:p, gibt die Expansion aus, ohne sie auszuführen. Das Aufrufen mit den Pfeiltasten oder Strg+R ist oft einfacher, wenn du eine möglicherweise destruktive Zeile prüfen und bearbeiten möchtest. Du kannst sudo !! sehen, um den letzten Befehl mit Administratorrechten zu wiederholen; prüfe die beabsichtigte Aktion, bevor du entscheidest, dass zusätzliche Rechte angemessen sind.
Wissen, was gespeichert wird
Die aktive Shell hält den Befehlsverlauf im Arbeitsspeicher. Beim Beenden schreibt sie ihn normalerweise in die von HISTFILE angegebene Datei, meist ~/.bash_history. Jedes Terminal hat seine eigene Liste im Arbeitsspeicher. Daher müssen zwei offene Terminals zu diesem Zeitpunkt nicht denselben Verlauf zeigen.
HISTSIZE begrenzt die Anzahl der im Arbeitsspeicher gehaltenen Befehle. Der eingebaute Standardwert von Bash ist 500, obwohl Distributionen ihn oft ändern. HISTFILESIZE begrenzt die Zeilen in der gespeicherten Verlaufsdatei. Diese Einstellungen steuern verschiedene Orte; wenn du eine änderst, hast du daher nicht beide Begrenzungen geändert.
HISTCONTROL=ignorespace lässt Zeilen aus, die mit einem Leerzeichen beginnen; ignoredups lässt eine Zeile aus, die mit der vorherigen identisch ist; ignoreboth kombiniert beides. Das sind Konfigurationsmöglichkeiten, aber keine Gründe für die Annahme, dass ein beliebiges Terminal einen Befehl nicht aufzeichnet. history -d 42 entfernt einen Eintrag und history -c leert die aktuelle Liste im Arbeitsspeicher.
Passwörter in Befehlsargumenten können im Verlauf gespeichert werden. Lass ein Programm das Passwort über seine eigene Eingabeaufforderung anfordern, statt es auf die Befehlszeile zu schreiben.
Wichtige Erkenntnisse
- Mit den Pfeiltasten und Strg+R kannst du einen Befehl vor der Eingabetaste prüfen.
!!, nummerierte Ereignisse, Präfixe und!$beziehen sich auf unterschiedliche frühere Texte.- Die Verlaufsexpansion führt normalerweise sofort aus;
:pgibt aus, ohne auszuführen. - Die aktive Verlaufsliste und die gespeicherte Verlaufsdatei haben separate Begrenzungen.
- Halte Passwörter aus Befehlsargumenten heraus.
6.2 Shellvariablen und Umgebungsvariablen setzen und verwenden
Eine Variable gibt einem Wert einen Namen. Bash kann diesen Wert in späteren Befehlszeilen einsetzen. Eine Umgebungsvariable wird außerdem an Programme weitergegeben, die aus dieser Shell gestartet werden. So können diese Programme Einstellungen wie Sprache oder den Ort des Home-Verzeichnisses lesen.
Einen Wert zuweisen und auslesen
Schreibe eine Zuweisung ohne Leerzeichen um das =:
city=Lisbon
echo "$city"
echo "${city}_trip"
Die erste Zeile speichert Lisbon; die nächsten Zeilen geben Lisbon und Lisbon_trip aus. Geschweifte Klammern markieren das Ende des Variablennamens. Ohne sie bedeutet $city_trip eine andere Variable namens city_trip.
city = Lisbon ist keine Zuweisung: Bash versucht, einen Befehl namens city mit zwei Argumenten auszuführen. Bei Namen wird zwischen Groß- und Kleinschreibung unterschieden. Sie dürfen Buchstaben, Ziffern und Unterstriche enthalten, aber nicht mit einer Ziffer beginnen. Das Auslesen einer nicht gesetzten Variablen ergibt bei gewöhnlicher Verwendung von Bash einen leeren Wert. unset city entfernt den Wert.
Passende Anführungszeichen wählen
| Eingabe | Was Bash tut |
|---|---|
echo "$HOME" | Expandiert HOME und hält das Ergebnis zusammen |
echo '$HOME' | Übergibt den wörtlichen Text $HOME |
echo \$HOME | Schützt das Dollarzeichen und gibt ebenfalls $HOME aus |
Nach greeting="Good morning" gibt echo "$greeting, $USER" die Begrüßung und den Kontonamen als ein Argument aus. Setze eine als Pfad verwendete Variable in doppelte Anführungszeichen, wenn ihr Wert Leerzeichen enthalten kann. Einfache Anführungszeichen schützen alles darin, einschließlich des Dollarzeichens. Sie können daher nicht denselben Zweck wie doppelte Anführungszeichen erfüllen, wenn eine Variable expandiert werden soll.
Einstellungen an Kindprogramme weitergeben
Eine einfache Zuweisung erstellt eine Shellvariable. export city markiert sie für die Umgebung; export city=Lisbon kombiniert beide Aktionen. Vergleiche:
city=Lisbon
bash -c 'echo $city'
export city
bash -c 'echo $city'
Wurde city zuvor nicht exportiert, gibt die erste Kind-Shell eine Leerzeile aus. Nach dem Export erhält ein neu gestarteter Kindprozess Lisbon. Der Export übergibt beim Start eine Kopie; bereits laufende Programme werden dadurch nicht aktualisiert.
env und printenv listen Umgebungseinträge auf, während printenv HOME einen davon zeigt. set listet auch Shellvariablen und Funktionen auf. Zu den üblichen Einstellungen gehören HOME für das Home-Verzeichnis, USER für den Benutzer, PWD für das Arbeitsverzeichnis, SHELL für die Login-Shell, LANG für Sprache und regionale Formate und PATH für die Programmsuche. Kleingeschriebene Namen für eigene Werte vermeiden Konflikte mit diesen üblicherweise großgeschriebenen Namen.
Geltungsdauer und Start steuern
Eine Zuweisung vor einem Befehl stellt eine Einstellung nur für diesen Befehl bereit: TZ=Asia/Tokyo date gibt die Uhrzeit in Tokio aus, ohne die Zeitzoneneinstellung der Shell zu ersetzen. LC_ALL=C ls --help fordert nicht übersetzte Meldungen an.
Eine nicht gespeicherte Einstellung an der Eingabeaufforderung gehört zu dieser Shell; das Öffnen eines separaten Terminals macht sie nicht dauerhaft. Schreibe eine wiederkehrende Einstellung wie export EDITOR=nano für interaktive Bash-Shells, die keine Login-Shells sind, in ~/.bashrc. Login-Shells lesen Profildateien, die diese Datei oft laden. Eine neue Shell, die keine Login-Shell ist, liest die gespeicherte Einstellung; source ~/.bashrc wendet die Datei in der aktuellen Shell an.
Wichtige Erkenntnisse
- Zuweisungen haben keine Leerzeichen um
=;$nameliest den Wert aus. - Doppelte Anführungszeichen erlauben Expansion und erhalten Leerzeichen; einfache Anführungszeichen erhalten Text wörtlich.
exportgibt eine Variable an anschließend gestartete Kindprogramme weiter.envzeigt die Umgebung;setenthält auch Shellvariablen und Funktionen.- Eine vorangestellte Zuweisung kann nur einen Befehl betreffen.
- Startdateien machen gespeicherte Einstellungen in späteren Shells verfügbar.
6.3 Mit PATH steuern, wie die Shell Befehle findet
Wenn du einen Befehlsnamen eingibst, muss Bash entscheiden, was dieser Name bedeutet. Er kann ein Alias, eine Funktion, ein eingebauter Befehl oder eine Programmdatei sein. PATH steuert die Suche nach einer Programmdatei für einen Namen ohne Schrägstrich.
Die Suchliste lesen
PATH enthält durch Doppelpunkte getrennte Verzeichnisnamen, zum Beispiel /usr/local/bin:/usr/bin:/bin. echo "$PATH" gibt die Liste aus. Bash berücksichtigt zuerst in der Shell definierte Bedeutungen; bei einem externen Programmnamen durchsucht es die aufgeführten Verzeichnisse von links nach rechts und verwendet den ersten ausführbaren Treffer.
Entscheidend sind die Verzeichnisnamen, nicht die Tatsache, dass ein Programm irgendwo installiert ist. Eine Datei außerhalb der Suchliste wird mit einem bloßen Namen nicht gefunden. Alltägliche Programme liegen häufig unter /usr/bin oder /bin; Administrationsprogramme verwenden /usr/sbin oder /sbin; lokale Installationen verwenden oft /usr/local/bin. Persönliche Programme können unter ~/bin oder ~/.local/bin liegen.
Enthalten zwei PATH-Verzeichnisse ein Programm mit demselben Namen, hat bei einer erneuten Suche das frühere Verzeichnis Vorrang.
Den aktiven Befehl untersuchen
type cd weist auf einen eingebauten Shellbefehl hin. type ls kann /usr/bin/ls anzeigen oder einen Alias für die Farbausgabe melden. type -a echo listet die eingebauten und externen Treffer auf. which ls meldet normalerweise einen Programmpfad aus PATH, kann aber Shellfunktionen übersehen, die type kennt. Verwende type, wenn du verstehen möchtest, was Bash tatsächlich tun wird.
Einen expliziten Pfad ausführen
Der übliche PATH lässt das aktuelle Verzeichnis aus. Eine ausführbare Datei namens backup im aktuellen Verzeichnis benötigt daher ./backup, sofern ihr Verzeichnis nicht in PATH steht. Ein Befehlsname mit / bezeichnet einen Ort direkt:
./backup
/home/sam/bin/backup
Beide Formen umgehen die PATH-Suche. Die erste ist relativ zu deinem Arbeitsverzeichnis; die zweite beginnt bei /. Die Datei muss dennoch ausführbar sein. Dass du sie auflisten oder lesen kannst, macht sie allein nicht ausführbar.
Erweitern, ohne zu ersetzen
Um ein persönliches Verzeichnis am Ende hinzuzufügen, behalte den vorhandenen Wert bei:
export PATH="$PATH:$HOME/bin"
Der Doppelpunkt trennt die alte Liste vom hinzugefügten Verzeichnis. Liegt ein ausführbares backup in /home/sam/bin, kann es ein späterer Befehl backup nun finden. Durch das Anhängen bleibt jedes frühere passende Programm vor deinem neuen Verzeichnis. Würdest du das neue Verzeichnis an den Anfang stellen, änderte sich, welcher doppelt vorkommende Name Vorrang hat.
PATH=$HOME/bin verwirft dagegen alle vorhandenen Verzeichnisse im Wert. Externe Befehle wie ls funktionieren möglicherweise nicht mehr mit bloßem Namen. Öffnest du ein neues Terminal mit der normalen Startkonfiguration, wird dessen normaler PATH wiederhergestellt; für die aktuelle Shell liefert export PATH=/usr/local/bin:/usr/bin:/bin eine grundlegende Reparaturliste. Eingebaute Befehle können weiterhin funktionieren, weil sie nicht über PATH gefunden werden.
Um eine beabsichtigte Ergänzung für neue interaktive Shells, die keine Login-Shells sind, zu erhalten, speichere ihre Exportzeile in ~/.bashrc.
Wichtige Erkenntnisse
- PATH ist eine durch Doppelpunkte getrennte Liste, die für externe Befehle von links nach rechts durchsucht wird.
typemeldet auch Aliase, Funktionen und eingebaute Befehle.- Ein Befehl mit
/bezeichnet direkt einen Pfad und umgeht PATH. - Behalte
$PATHbeim Erweitern der Liste bei. - Die Suchreihenfolge entscheidet, welches externe Programm bei doppeltem Namen Vorrang hat.
Linux-Befehlszeile: Beispiele
1Einen Befehl aufbauen und lesen
11 Schritte
- 1EinführungEine Terminalsitzung lesen
Ein Terminal zeigt einen Dialog: Du gibst einen Befehl ein, die Shell interpretiert ihn und ein mögliches Ergebnis erscheint darunter. Die Eingabeaufforderung kennzeichnet die Stelle, an der eine weitere Zeile beginnen kann.
Wir lesen diese Eingabeaufforderung, verwenden einige Tasten und bauen einen Befehl auf, dessen Leerzeichen und Optionen genau das bedeuten, was wir beabsichtigen. Ziel ist, die Zeile vor dem Drücken der Eingabetaste zu verstehen.
- 2ErklärungShell und Fenster erkennen
Die Shell ist der Interpreter. Das Terminal ist das Fenster, das ihre Ein- und Ausgabe anzeigt. Bash ist eine häufig verwendete Linux-Shell; auch ein anderes Terminalfenster kann Bash ausführen.
In
sam@laptop:~$zeigt die Eingabeaufforderung sam auf laptop bei der Arbeit im Home-Verzeichnis. Das abschließende Dollarzeichen kennzeichnet üblicherweise einen regulären Benutzer. Gib dieses Symbol der Eingabeaufforderung nicht ein, wenn du einen Beispielbefehl eingibst. - 3BeispielNach Benutzer und Standort fragen
Gib
whoamiein und lies das Ergebnis: Für unser Beispielkonto ist essam. Gib dannpwdein; vom Home-Verzeichnis aus gibt es/home/samaus. Jeder Befehl ist eine separate Eingabezeile.Die Ausgabe ist eine vom Befehl zurückgegebene Information, kein Text, den du erneut eingeben musst. Eine neue Eingabeaufforderung bedeutet, dass die Shell bereit ist. Ein erfolgreicher Befehl kann auch ohne Ausgabe bleiben; die Länge der Ausgabe ist daher kein Maß für den Erfolg.
- 4TippVervollständigen, abbrechen oder verlassen
Beginne einen Verzeichnisnamen und drücke Tab, um ihn zu vervollständigen. Passen mehrere Namen, gib weitere Zeichen ein oder drücke zweimal Tab, um Möglichkeiten zu sehen. Die Vervollständigung folgt der tatsächlichen Schreibweise und Groß- und Kleinschreibung vorhandener Namen.
Strg+C verwirft die Eingabe oder unterbricht ein Vordergrundprogramm. Strg+D in einer leeren Zeile beendet die Shell. In einem Handbuch-Pager beendet
qdie Seite; derselbe Tastendruck hat eine andere Bedeutung als ein an der Eingabeaufforderung der Shell eingegebener Befehl. - 5HerausforderungDie Taste zum Abbrechen wählen
Du hast
ls-leingegeben, das fehlende Leerzeichen bemerkt und möchtest die ganze Eingabezeile verwerfen, bevor sie ausgeführt wird. Welche Taste bringt dich zu einer neuen Eingabezeile zurück?---reveal---
Drücke Strg+C. Damit verwirfst du die ausstehende Eingabe, ohne sie auszuführen. Strg+L leert dagegen den Bildschirm; das ist nicht dasselbe wie das Verwerfen deiner Eingabe. Du könntest die Zeile auch zu
ls -lbearbeiten, aber hier ist das Abbrechen gefragt. - 6ErklärungJedem Wort eine Aufgabe geben
Lies
ls -l /etcals drei Wörter mit drei Aufgaben.lsbezeichnet den Befehl,-ländert sein Verhalten und/etcgibt an, was aufgelistet werden soll. Die trennenden Leerzeichen ermöglichen Bash, diese Teile getrennt weiterzugeben.Kurze Optionen haben einen Bindestrich; lange Optionen haben zwei.
ls -lakombiniert-lund-a, währendls --alleine lange Option ist. Manche Optionen brauchen auch Werte, die ihr Hilfetext angibt. - 7BeispielEinen Namen mit Leerzeichen zusammenhalten
Angenommen, eine Datei heißt „Annual Report.pdf“. Die Eingabe von
ls Annual Report.pdfliefert zwei Dateiargumente, weil das ungeschützte Leerzeichen Wörter trennt.Schreibe
ls "Annual Report.pdf", um den Namen zusammenzuhalten. Für diesen wörtlichen Namen funktionieren auch einfache Anführungszeichen, oder du kannst sein Leerzeichen wie inAnnual\ Report.pdfmaskieren. Die schützenden Zeichen steuern die Shell; sie werden nicht zu Zeichen im Dateinamen. - 8KernaussageOptionen gehören zu ihrem Befehl
Ein vertrauter Buchstabe kann in verschiedenen Programmen unterschiedliche Bedeutungen haben.
cp -rkopiert Verzeichnisse rekursiv, aberls -rkehrt nur die Reihenfolge um. Die Option für eine rekursive Auflistung ist das große-R.Ebenso formatiert
ls -hGrößen; es fordert keine Hilfe an. Lies Befehl und Option als Paar. Rätst du anhand einer Option, die bei einem anderen Befehl verwendet wird, kann ein gültiger Befehl entstehen, der das Falsche tut. - 9HerausforderungEine eindeutige Auflistung erstellen
Eine Datei heißt „Course Plan.txt“. Wie kannst du ihre lange Auflistung anfordern, ohne zwei getrennte Dateien abzufragen?
---reveal---
Verwende
ls -l "Course Plan.txt". Das erste Leerzeichen trennt den Befehl von der Option und das nächste die Option vom Argument in Anführungszeichen. Das enthaltene Leerzeichen bleibt innerhalb eines Namens.ls-lwäre dagegen ein anderer Befehlsname undCourse Plan.txtohne Anführungszeichen wären zwei Zielargumente. - 10HerausforderungZwei Arten von Sonderzeichen behandeln
Die Datei, die du auflisten musst, heißt „-old notes.txt“. Du möchtest Details sehen und musst sowohl den anfänglichen Bindestrich als auch das Leerzeichen im Namen berücksichtigen. Schreibe dafür einen GNU-
ls-Befehl.---reveal---
Verwende
ls -l -- "-old notes.txt". Die Anführungszeichen halten den Namen zusammen, während--lsanweist, die Optionsverarbeitung zu beenden. Anführungszeichen allein entfernen den führenden Bindestrich nicht; sie lösen also das Leerzeichenproblem, aber nicht das Optionsproblem.ls -l "./-old notes.txt"funktioniert ebenfalls. - 11ZusammenfassungDie Zeile vor der Eingabetaste lesen
Erkenne die Eingabeaufforderung und lies dann die eingegebene Zeile als Befehl mit getrennten Optionen und Argumenten. Schütze Leerzeichen innerhalb von Namen, prüfe die Bedeutung der Optionen für den verwendeten Befehl und nutze die Vervollständigung, um Tippfehler zu verringern.
Geht bei der Eingabe etwas schief, verwirf oder bearbeite sie vor der Ausführung; übernimmt ein Programm den Bildschirm, verwende dessen eigene Aktion zum Beenden oder Unterbrechen.
2Das benötigte Befehlsverhalten finden
10 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungEine Antwort in der Hilfe finden
- 2ErklärungDas Handbuch für den Befehl öffnen
- 3BeispielOptionale und wiederholte Teile deuten
- 4TippSuchen und zur Eingabeaufforderung zurückkehren
- 5HerausforderungDie benötigte Seite auswählen
- 6VerbindungDie Hilfe anhand der Befehlsart wählen
- 7BeispielDen Grund für einen Fehler lesen
- 8HerausforderungEine Referenz für eingebaute Befehle wählen
- 9HerausforderungVom Zweck zum funktionierenden Befehl gelangen
- 10ZusammenfassungDie passende Referenz zur Frage wählen
3Einen Verzeichnisbaum navigieren und untersuchen
13 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungEinen Weg durch den Baum verfolgen
- 2ErklärungBeim Wurzelverzeichnis beginnen
- 3BeispielEine kleine Struktur lesen
- 4HerausforderungEinen versteckten Eintrag erkennen
- 5ErklärungDen Ausgangspunkt des Pfades bestimmen
- 6BeispielZwei Ebenen nach oben verfolgen
- 7TippKurzformen für Home-Verzeichnis und vorherigen Standort verwenden
- 8HerausforderungEin Nachbarverzeichnis des übergeordneten Verzeichnisses finden
- 9ErklärungDie benötigten Details hinzufügen
- 10BeispielGröße und Sortierung unterscheiden
- 11HerausforderungDie passende Auflistung zur Frage wählen
- 12HerausforderungEinen Wechsel und eine Untersuchung verfolgen
- 13ZusammenfassungStandort und Ansicht getrennt halten
4Aufbauen, kopieren, umbenennen und aufräumen
14 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungDie endgültige Struktur vorhersagen
- 2BeispielDie übergeordneten Verzeichnisse erstellen
- 3BeispielDateien zur Struktur hinzufügen
- 4HerausforderungPrüfen, was zuerst existieren muss
- 5ErklärungEine Datei in ein Verzeichnis kopieren
- 6BeispielDen Baum kopieren
- 7BeispielInnerhalb der Kopie umbenennen
- 8TippEin Verzeichnis als Ziel verlangen
- 9HerausforderungEinen kopierten Untereintrag finden
- 10ErklärungEin leeres Unterverzeichnis entfernen
- 11TippDas Ziel vor dem Entfernen prüfen
- 12HerausforderungEine Aktion nur für leere Verzeichnisse wählen
- 13HerausforderungDas gesamte Aufräumen verfolgen
- 14ZusammenfassungAktionen als Änderungen an Pfaden lesen
5Ein Muster vor der Verwendung auswerten
12 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungEine Platzhalterauswahl vorhersagen
- 2ErklärungDie Zeichenanzahl jedes Symbols bestimmen
- 3BeispielEine Stelle einschränken
- 4KernaussageGroß- und Kleinschreibung und Punkte bleiben wichtig
- 5HerausforderungGenaue Treffer auswählen
- 6ErklärungZuerst die Shell expandieren lassen
- 7BeispielEin wörtliches Muster lesen
- 8HerausforderungEntscheiden, was das Programm erhält
- 9TippDas Ziel außerhalb der Auswahl halten
- 10BeispielNamen erzeugen, bevor Dateien existieren
- 11HerausforderungErzeugen, verschieben und dann auswählen
- 12ZusammenfassungAuswahl und Erzeugung unterscheiden
6Befehle wiederverwenden und vererbte Einstellungen verfolgen
15 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungEine Zeile und einen Wert wiederverwenden
- 2ErklärungAufrufen und bei Bedarf bearbeiten
- 3BeispielVerstehen, was die Kurzform wiederverwendet
- 4HerausforderungDen vorherigen Befehl im Blick behalten
- 5ErklärungEinen Wert zuweisen, ohne ihn aufzuteilen
- 6BeispielWählen, was die Anführungszeichen erlauben
- 7BeispielEine Kopie an einen Kindprozess weitergeben
- 8HerausforderungVererbung und lokale Änderung vorhersagen
- 9VerbindungDie Geltungsdauer einer Einstellung wählen
- 10ErklärungNach einem externen Befehl suchen
- 11BeispielEin persönliches Verzeichnis anhängen
- 12KernaussageEin Schrägstrich wählt einen Ort direkt aus
- 13HerausforderungDen früheren Treffer beibehalten
- 14HerausforderungWiederaufruf, Quoting und Suche verbinden
- 15ZusammenfassungText, Werte und Geltungsbereich verfolgen
Linux-Befehlszeile: Übungsaufgaben
Set 1: Befehle, Hilfe und Pfade lesen10 Übungsfragen
Frage 1 von 10
sam@laptop:~/training$ und ist für Eingaben bereit. Welchen Ort zeigt die Eingabeaufforderung an?Antwort zeigenAntwort ausblenden
/training bezeichnet dessen Unterverzeichnis. Die Eingabeaufforderung zeigt daher /home/sam/training an. Wer nur die Tilde liest, übersieht die untergeordnete Komponente und würde die Shell fälschlich im Home-Verzeichnis verorten.Frage 2 von 10
Antwort zeigenAntwort ausblenden
ls trennt den Befehl von seiner Option und die Anführungszeichen halten den Dateinamen in einem Argument zusammen. Ohne Anführungszeichen liefert Bash zwei getrennte Namen, Team und Schedule.pdf. Zusätzliche Schrägstriche würden einen anderen Pfad beschreiben, statt das Leerzeichen zu schützen.Frage 3 von 10
Antwort zeigenAntwort ausblenden
Frage 4 von 10
/etc/passwd, aber man passwd öffnet den Befehl zum Ändern des Passworts. Welcher Befehl öffnet die benötigte Seite?Antwort zeigenAntwort ausblenden
passwd aus. Sektion 1 enthält die bereits geöffnete Seite zum Benutzerbefehl. Eine Stichwortsuche oder einzeilige Beschreibung kann Seiten ermitteln, wählt aber die gewünschte Formatreferenz nicht direkt aus.Frage 5 von 10
type export meldet, dass export ein eingebauter Shellbefehl ist. Wie kannst du die Bash-Hilfe dafür lesen?Antwort zeigenAntwort ausblenden
help bereit, sodass help export direkt auf diesen Befehl zielt. Das übliche --help-Muster externer Programme ist bei eingebauten Befehlen nicht zuverlässig. Die von type gemeldete Befehlsart zeigt dir, welches Hilfesystem du verwenden solltest.Frage 6 von 10
mkdir [OPTION]... DIRECTORY.... Was ist für einen einfachen gültigen Aufruf erforderlich?Antwort zeigenAntwort ausblenden
Frage 7 von 10
/home/sam/labs/module. Welches absolute Verzeichnis wählt cd ../../downloads aus?Antwort zeigenAntwort ausblenden
.. führt nach /home/sam/labs und das zweite nach /home/sam. Die letzte Komponente führt dann in dessen Unterverzeichnis downloads. Würdest du nur einen Schritt nach oben gehen, läge das Ziel fälschlich innerhalb von labs; beide Komponenten für übergeordnete Verzeichnisse müssen verfolgt werden.Frage 8 von 10
assets selbst sehen, ohne die Dateien darin aufzulisten. Welcher Befehl erledigt das?Antwort zeigenAntwort ausblenden
-d weist ls an, den Verzeichniseintrag selbst anzuzeigen, und -l ergänzt seine Metadaten. Ohne -d listet ls -l assets Einträge in diesem Verzeichnis auf. Optionen für versteckte Einträge oder Rekursion ändern die Inhaltsansicht, wählen aber nicht den eigenen Eintrag des Verzeichnisses aus.Frage 9 von 10
ls zeigt in settings nichts, aber ls -A settings zeigt .localrc. Warum unterscheiden sich die Ergebnisse?Antwort zeigenAntwort ausblenden
-A schließt solche Einträge ein. Die Auflistungsoption erstellt keine Dateien und gewährt keinen zusätzlichen Zugriff. Eine leere gewöhnliche Auflistung kann daher bei einem nicht leeren Verzeichnis mit versteckten Namen auftreten.Frage 10 von 10
/home/sam aus führst du cd projects, dann ls ../downloads und dann cd ../photos aus. Alle genannten Verzeichnisse existieren. In welchem Verzeichnis bist du und welches wählt cd - als Nächstes aus?Antwort zeigenAntwort ausblenden
/home/sam/projects; das Auflisten von ../downloads ändert diesen Standort nicht. Der letzte relative Wechsel führt hinauf zu sam und hinein nach photos. cd - kehrt zum vorherigen Arbeitsverzeichnis projects zurück, nicht zum nur aufgelisteten Verzeichnis.Set 2: Änderungen an Dateien und Verzeichnissen vorhersagen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
lab existiert nicht. Wie kannst du lab/week2/input und seine fehlenden übergeordneten Verzeichnisse mit einem Befehl erstellen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
records enthält jan.csv und stored existiert bereits als leeres Verzeichnis. Unter welchem Pfad liegt die kopierte Datei nach cp -r records stored?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
agenda.txt enthält Besprechungsnotizen. Was geschieht, wenn du touch agenda.txt ausführst?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
rough.txt existiert und archive nicht. Was tut mv rough.txt archive, wenn kein Alias gesetzt ist?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
old-cache ist ein Verzeichnis, das leer sein sollte. Welcher Befehl entfernt es nur, wenn diese Erwartung zutrifft?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
-scratch.log. Wie kann GNU rm ohne Alias diesen Namen erhalten, ohne ihn als Optionen zu lesen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
unit/part enthält nur .prefs. Warum schlägt rmdir unit/part fehl, obwohl einfaches ls unit/part leer aussieht?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
/home/sam aus existiert source/item.txt und saved ist ein leeres Verzeichnis. Du führst cp -r source saved und dann mv saved/source saved/session aus. Wo liegen Original und Kopie nun?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
/home/sam/work aus ist ../safe ein leeres Verzeichnis und part enthält nur keep.txt. Du führst cp part/keep.txt ../safe/, mv part/keep.txt keep.txt und dann rmdir part aus. Was bleibt übrig?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 3: Namen abgleichen und Shellwerte verwenden10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
task.txt, task4.txt und task42.txt. Welcher Name passt auf task?.txt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
.zip-Einträge. Was gibt echo *.zip aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
upload enthält, ihn prüfen und vor der Ausführung bearbeiten. Welche Funktion eignet sich für die Suche?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
ls "$folder" nach folder="Project Plans"?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
rec1.csv, rec2.csv, rec3.csv und rec12.csv. Welche Namen passen auf rec[!2].csv?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
/opt/team/bin:/usr/bin:/bin. Die ersten beiden Verzeichnisse enthalten jeweils eine ausführbare Datei namens report. Kein Alias, keine Funktion und kein eingebauter Befehl trägt diesen Namen. Was wird ausgeführt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
pic1.png und pic2.png. Was gibt echo "pic*.png" aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
region ist nicht gesetzt. Du führst region=west und dann bash -c 'echo $region' aus. Warum gibt die Kind-Shell eine Leerzeile aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
item1.dat, item2.dat, item12.dat, .item3.dat sowie ein leeres Verzeichnis out. Du führst cp item?.dat out/ und dann mv out/item2.dat out/chosen.dat aus. Welche Dateien liegen in out?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
/usr/bin:/bin. Es gibt die ausführbaren Dateien /usr/bin/scan und /home/sam/bin/scan, aber kein in der Shell definiertes scan. Du führst bei HOME /home/sam den Befehl export PATH="$PATH:$HOME/bin" aus. Was wird von /home/sam/bin aus für scan und für ./scan ausgeführt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 4: Pfade, Muster und Befehlsverhalten verbinden10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
ls meldet unrecognized option '--time-sort'. Was solltest du als Nächstes beim installierten GNU-Programm am direktesten prüfen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
. und ... Welcher GNU-Befehl liefert sie?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
-d, --date=STRING. Welche Rolle hat 2026-02-18 in touch --date=2026-02-18 checkpoint?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
clip.jpg, clip.JPG, clip.Jpg und clip.jpeg. Welche Namen passen auf clip.[jJ][pP][gG]?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
!cp ausgewählten Befehl prüfen, ohne ihn auszuführen. Welcher Verlaufsausdruck gibt nur die Expansion aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
/home/sam/jobs/run aus enthält ../data die Datei a.txt und /home/sam/store existiert bereits. Du führst cp -r ../data ../../store/ und dann mv ../../store/data/a.txt ../../store/data/b.txt aus. Unter welchem neuen Pfad liegt die Kopie und wo liegt die Quelle?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
area war nicht gesetzt. Du führst area=north, export area, bash und dann im Kindprozess area=south und exit aus. Was gibt echo "$area" zurück im Elternprozess aus und warum?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
red1.tmp, red2.tmp, red10.tmp und ein leeres Verzeichnis save. Was gibt echo save/*.tmp nach cp red[12].tmp save/ und mv save/red1.tmp save/final.txt aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
checkup liegt in deinem aktuellen Verzeichnis, das nicht in PATH steht. Es gibt keinen anderen Befehl mit diesem Namen. Wie kannst du diese Datei ausführen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
/home/sam/team/drafts aus führst du cd ../final, dann cd - und dann ls ../../photos aus. Alle Verzeichnisse existieren. Wo bist du und welches Verzeichnis hat die Auflistung untersucht?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 5: Mehrere Entscheidungen auf der Befehlszeile treffen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
echo '$tag' nach tag=blue aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
bundle nicht. Du führst mkdir -p bundle/raw bundle/log, touch bundle/raw/x, mv bundle/raw/x bundle/log/ und dann rmdir -p bundle/raw aus. Was bleibt unter bundle übrig?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
touch note{2..4}.txt, mkdir bin, mv note[24].txt bin/ und dann echo note?.txt aus. Was wird ausgegeben?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
/usr/bin:/bin, HOME ist /home/sam und ausführbare render-Dateien existieren in /usr/bin und /home/sam/bin. Kein Alias, keine Funktion und kein eingebauter Befehl heißt render. Welche externe Datei wählt das bloße render nach export PATH="$HOME/bin:$PATH" aus und wie lautet der vollständige resultierende PATH?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
-review notes.txt. Welcher einzelne GNU-ls-Befehl fordert ihre Details an und berücksichtigt dabei sowohl den führenden Bindestrich als auch das Leerzeichen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
unit1.tmp, unit2.tmp, unit10.tmp, .unit3.tmp und final.txt, alles reguläre Dateien. Nach einer Vorschau führst du rm -i unit?.tmp ohne Alias aus und antwortest auf jede Nachfrage mit y. Welche regulären Dateien bleiben übrig?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
mkdir -p samples/day7 führst du pwd und dann echo !$ aus. Was wählt die Verlaufskurzform aus?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
/home/sam aus enthält projects nur .prefs und ein Verzeichnis src; src enthält main.c. Das Verzeichnis archive existiert und ist leer. Du führst ls projects, cp -r projects/src archive/, mv projects/src archive/live und dann rmdir projects aus. Was bleibt in projects und archive?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
/home/sam setzt du dest="$HOME/Field Notes" und export dest. Eine Kind-Bash führt cd "$dest" aus, ändert dann dest=elsewhere und beendet sich. Das Verzeichnis existiert. In welchen Pfad ist der Kindprozess gewechselt und welchen Wert hat dest im Elternprozess danach?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe
Schlüsselbegriffe
A
Absoluter Pfad
/ und beschreibt einen Ort vom Wurzelverzeichnis aus, sodass seine Bedeutung nicht von deinem aktuellen Standort abhängt./home/sam/photos bezeichnet dasselbe Verzeichnis, unabhängig davon, ob die Shell gerade in /etc oder im Home-Verzeichnis von sam ist.Alias
ls als ls --color=auto definieren; type ls zeigt diesen zusätzlichen Befehlstext.apropos
apropos directory hilft, mkdir oder rmdir zu finden, wenn du dich an die Aufgabe, aber nicht an den Befehlsnamen erinnerst.Arbeitsverzeichnis
cd projects bezieht sich der relative Name notes.txt auf eine Datei innerhalb des neu ausgewählten Verzeichnisses.Archivkopie
cp -a angeforderte rekursive Kopie, die Dateiattribute erhält und sich daher zum Kopieren eines Verzeichnisbaums eignet.cp -a site site-backup erhält die Attribute des Baums, statt ihn wie eine gewöhnliche neue Dateikopie zu behandeln.Argument
cp report.txt saved/ bezeichnen die beiden Pfadargumente die Quelldatei und das Zielverzeichnis.Aufrufsyntax (SYNOPSIS)
mkdir [OPTION]... DIRECTORY... erlaubt optionale Schalter, verlangt aber mindestens einen Verzeichnisnamen.Ausführbare Datei
./backup ausgeführt werden, wenn ihr Verzeichnis in PATH fehlt.Ä
Änderungszeitpunkt
ls -t verwendet ihn, um Einträge mit den neuesten zuerst zu sortieren.touch aktualisiert diesen Zeitstempel, ohne die Dateidaten zu ändern, und kann so die zeitliche Reihenfolge ändern.B
Bash
help cd direkt bereit, weil cd einer seiner eingebauten Befehle und keine separate Programmdatei ist.Bash-Hilfe
help gefolgt vom Namen eines eingebauten Befehls auf.help export erklärt das Exportieren von Variablen, während help allein die verfügbaren eingebauten Befehle auflistet.Befehl
ls -l /var ist ls der Befehlsname; die übrigen Wörter steuern die Auflistung und geben ihr Ziel an.Befehlsauflösung
type echo kann den eingebauten Bash-Befehl vor einer externen Datei echo melden, die ebenfalls in einem PATH-Verzeichnis existiert.Befehlsverlauf
D
Datei
.pdf endet.Dateinamenexpansion (Globbing)
ls *.log zwei Dateinamen statt des wörtlichen Musters mit Stern.E
Eingabeaufforderung
sam@laptop:~$ bezeichnet die Tilde das Home-Verzeichnis und das abschließende Dollarzeichen üblicherweise einen regulären Benutzer.Eingebauter Befehl
type cd meldet einen eingebauten Befehl und help cd liefert die Dokumentation für den Bash-Befehl zum Verzeichniswechsel.Erzwingungsoption
-f in GNU rm unterdrückt Bestätigungen und ignoriert fehlende Namen, wodurch die Prüfung des Zielausdrucks noch wichtiger wird.-f bietet keine Wiederherstellungsmöglichkeit; es ändert nur, wie das Entfernen mit Nachfragen und fehlenden Namen umgeht.Expliziter Befehlspfad
/home/sam/bin aus bezeichnen ./backup und /home/sam/bin/backup dieselbe lokale ausführbare Datei.export
F
Fehlermeldung
No such file or directory-Meldung von ls legt nahe, Pfad, Groß- und Kleinschreibung und Arbeitsverzeichnis zu prüfen.G
Glob-Muster ohne Treffer
echo *.pdf das Muster aus, während ls *.pdf meldet, dass dieser wörtliche Pfad fehlt.H
Handbuchseite
man ls öffnet die Referenz des Auflistungsbefehls, in der du nach einer benötigten Option suchen kannst.Handbuchsektion
man 5 passwd wählt die Dateiformatseite statt des Befehls.HISTCONTROL
ignoreboth kombiniert ignorespace und ignoredups; eine beliebige Shell kann eine andere Einstellung verwenden.Home-Verzeichnis
/home/username.~ zu /home/sam expandiert; /home allein ist das Verzeichnis, das die Home-Verzeichnisse der Benutzer enthält.I
Info-Handbuch
info coreutils öffnet ein ausführlicheres Handbuch; n, p und u bewegen sich zwischen seinen verlinkten Knoten.Interaktives Löschen
rm -i fragt für jedes Ziel einzeln.rm -i *.tmp nach den passenden Namen, bevor es sie entfernt.K
Klammerausdruck
! oder ^ negiert diese Zeichenmenge.part[13].txt passt auf Namen mit 1 oder 3 an dieser Stelle, aber nicht auf die zweistellige Endung 13.Klammerexpansion
file{1..3}.txt.mkdir work/{src,docs} erhält zwei erzeugte Verzeichnisnamen, selbst wenn keines der beiden Unterverzeichnisse bereits existiert.Kopieren
cp.cp memo.txt stored/ erstellt stored/memo.txt, wenn stored existiert, und lässt das ursprüngliche Memo an seinem Ort.Kurzhilfe
--help bereitgestellt wird.mkdir --help, um die Option zum Erstellen übergeordneter Verzeichnisse zu finden, ohne die vollständige Handbuchseite zu durchsuchen.L
Langes Listenformat
ls -l angeforderte detaillierte Ausgabe, die Metadaten wie Typ, Eigentümer- und Gruppenzuordnung, Größe und Änderungszeitpunkt zeigt.ls -l notes.txt zeigt die Details einer einzelnen Datei; ergänzt du -h, wird eine Größe von 2048 Byte als 2.0K angezeigt.Literales Muster
echo "*.txt" gibt den Stern und die Endung aus, selbst wenn das Verzeichnis Dateien enthält, die darauf passen würden.Locale
M
Menschenlesbare Größenangabe
ls -h angefordert wird.-h mit -l: Die erste Option formatiert Größen, während die zweite die Spalte bereitstellt, die sie anzeigt.Metadaten
mkdir
-p erstellt fehlende übergeordnete Verzeichnisse und akzeptiert Pfadkomponenten, die bereits als Verzeichnisse vorhanden sind.mkdir -p app/css bereitet beide Verzeichnisse vor, wenn app fehlt, sodass später eine Datei in css erstellt werden kann.O
Option
-l weist ls an, eine lange Auflistung mit Details statt nur Namen anzuzeigen.P
Pager
man kannst du mit /size suchen, mit n zwischen Treffern wechseln und mit q das Programm beenden.Paketdokumentation
/usr/share/doc/ in einem Verzeichnis für das jeweilige Paket liegen./usr/share/doc/bash kann README-Dateien, Änderungsprotokolle, Lizenztext und Beispiele zeigen.PATH
/ enthält.:$HOME/bin erhält frühere Verzeichnisse und ihren Vorrang, wenn ein Programmname zweimal vorkommt.Pfadkomponente
/ zu überschreiten.data/*.csv wählt direkt innerhalb von data aus; passende Namen unter data/old werden nicht ebenfalls ausgewählt.Platzhalter
* für eine Folge oder ? für ein Zeichen.part?.txt akzeptiert part4.txt, schließt aber einen Namen mit zwei Ziffern an der Stelle des Fragezeichens aus.Q
Quelle
cp- und mv-Formen steht sie vor dem Ziel.cp notes.txt archive/ liefert notes.txt die Daten und archive/ bezeichnet den Ort für die Kopie.Quoting
ls "Work Plan.txt" halten das Leerzeichen im Dateinamen, statt ihn in zwei Wörter aufzuteilen.R
Rekursive Auflistung
ls -R projects zeigt projects: und danach Überschriften für Unterverzeichnisse wie projects/website:.Rekursives Löschen
rm -r angefordert.rmdir old-cache, wenn ein unerwarteter Untereintrag das Aufräumen stoppen soll, statt zusammen mit seinem übergeordneten Verzeichnis gelöscht zu werden.Relativer Pfad
/home/sam/projects aus führt ../photos durch einen Schritt nach oben und einen nach unten zum Verzeichnis photos von sam.rm
rm -i old.txt fordert vor dem Entfernen dieser Datei eine Bestätigung an, sodass du die Aktion ablehnen kannst.rmdir
rmdir cache einen nicht leeren Inhalt meldet, einfaches ls aber leer aussieht, prüfe versteckte Einträge mit ls -A cache.Root-Konto
# endet, kennzeichnet üblicherweise root; für gewöhnliche Arbeiten solltest du ein reguläres Konto verwenden.Rückwärtssuche
S
Shell
pwd in einer Terminalsitzung und gibt das Verzeichnis aus, in dem die Shell arbeitet.Shellvariable
city=Lisbon stellt diesen Wert einer neuen Kind-Bash nicht bereit, sofern city nicht bereits exportiert ist.Startdatei
~/.bashrc wird von einer neuen interaktiven Bash gelesen, die keine Login-Shell ist; ein Login-Profil kann diese Datei ebenfalls laden.Suchreihenfolge
/usr/bin ausgewählt werden.T
Terminal
Tilde-Expansion
~ am Anfang eines Shellwortes durch einen Home-Pfad und erleichtert so die Eingabe von Pfaden vom Home-Verzeichnis aus.cd ~/Documents führt von überall zu deinen Dokumenten, aber Anführungszeichen um die Tilde verhindern diese Ersetzung.touch
touch checklist.txt erhält den Text einer vorhandenen Checkliste; der Befehl leert die Datei nicht, bevor er ihre Zeitstempel aktualisiert.U
Umgebung
Umgebungsvariable
export markiert wird.export city ermöglicht einer später gestarteten Kind-Bash, den Wert von city zu lesen, der zuvor nur im Elternprozess gespeichert war.Unterscheidung zwischen Groß- und Kleinschreibung
Plans und plans können verschiedene Verzeichnisse bezeichnen; die Vervollständigung hilft, die richtige Groß- und Kleinschreibung beizubehalten.Ü
Übergeordnetes Verzeichnis
.. verweist auf dieses übergeordnete Verzeichnis./home/sam/projects/website aus führt ein .. nach projects, während zwei zum Home-Verzeichnis von sam führen.Überschreiben
cp oder mv kann dies ohne Nachfrage tun.cp -i notes.txt saved.txt, um vor dem Ersetzen von saved.txt gefragt zu werden, wenn eine Datei dieses Namens bereits existiert.V
Variable
name=value zugewiesen und durch Expansion wie $name ausgelesen.topic=linux gibt echo "$topic" den gespeicherten Wert aus, während unset topic die Variable entfernt.Variablenexpansion
echo "${city}_trip" hängt Text an den Wert von city an, während $city_trip eine andere Variable auslesen würde.Verlaufsdatei
~/.bash_history; ihr Pfad steht in HISTFILE.Verlaufsexpansion
!! für den vorhergehenden Befehl.mkdir drafts verwendet cd !$ das letzte Argument erneut, aber ein anderer Befehl dazwischen ändert es.Verschieben
mv ohne die rekursive Option, die zum Kopieren eines Baums nötig ist.mv memo.txt stored/ legt die vorhandene Datei in stored ab, sodass ihr alter Pfad diese verschobene Datei nicht mehr bezeichnet.Versteckter Eintrag
ls ihn standardmäßig auslässt..bashrc erscheint mit ls -a, obwohl eine einfache Auflistung des Home-Verzeichnisses sie überspringt.Verzeichnis
/home/sam/projects kann sowohl notes.txt als auch ein Unterverzeichnis namens website enthalten.Vorschau der Expansion
ls -d -- draft* zeigt die passenden Einträge selbst, sodass passende Verzeichnisse als Ziele sichtbar sind.W
whatis
whatis ls gibt eine kurze Zweckbeschreibung; man ls liefert die ausführlichere Referenz, wenn mehr Details gebraucht werden.Wurzelverzeichnis
/, ist der Ausgangspunkt des einzigen Linux-Dateisystembaums und liegt oberhalb jedes anderen absoluten Pfades./etc beginnt beim Wurzelverzeichnis; er bezeichnet kein Unterverzeichnis deines aktuellen Arbeitsverzeichnisses.Z
Zeichenklasse
[[:digit:]] für Ziffern oder [[:lower:]] für Kleinbuchstaben.Zeitstempel
touch -d 2025-01-31 old.txt fordert für die Aktualisierung ein gewähltes Datum an, statt die aktuelle Zeit zu verwenden.Ziel
archive, verwendet mv notes.txt archive archive als neuen Dateinamen, statt ein Verzeichnis zu erstellen.Über diese Einheit
Erstelle deine eigenen Lernmaterialien
Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.