Die Linux-Befehlszeile

Lerne, sicher in der Linux-Shell zu arbeiten. Lies die Eingabeaufforderung, gib Befehle mit den richtigen Optionen und Argumenten ein und finde Hilfe in den Handbuchseiten und der eingebauten Hilfe. Bewege dich mit absoluten und relativen Pfaden durch den Verzeichnisbaum, liste den Inhalt von Verzeichnissen auf und lege Dateien und Verzeichnisse an, kopiere, verschiebe, benenne und lösche sie, ohne versehentlich Daten zu verlieren. Wähle mit Platzhaltern mehrere Dateien auf einmal aus, verwende frühere Befehle aus dem Befehlsverlauf erneut und steuere mit Variablen und PATH, wie die Shell arbeitet.

AnfängerEinheit 2 von 7 in Kurs: Linux – Befehlszeile, Shellskripte und Systemverwaltung

Was du lernst

  1. 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 erkennen
      Unterscheide 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 schreiben
      Setze 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.
  2. 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 nutzen
      Verschaffe 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.
  3. 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 verstehen
      Beschreibe 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 wechseln
      Finde 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 untersuchen
      Liste 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.
  4. 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 anlegen
      Lege neue Verzeichnisse an, auch verschachtelte, erstelle leere Dateien oder aktualisiere ihre Zeitstempel mit touch und entferne leere Verzeichnisse.
    • Kopieren, verschieben und umbenennen
      Kopiere 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öschen
      Entferne 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.
  5. 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 [ ] abgleichen
      Schreibe 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 verwenden
      Sage 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.
  6. 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 wiederverwenden
      Blä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 verwenden
      Lege 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 findet
      Erklä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.

Linux-Befehlszeile einfach erklärt

6 Kapitel

1

An 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
TasteAktion
TabEinen Befehls- oder Dateinamen vervollständigen; bei Mehrdeutigkeit zweimal drücken, um Möglichkeiten zu sehen
Pfeil nach oben / untenZuvor eingegebene Befehle durchblättern
Strg+CAktuelle Eingabezeile verwerfen oder ein laufendes Vordergrundprogramm unterbrechen
Strg+LBildschirm leeren; clear tut dies ebenfalls
Strg+D in einer leeren ZeileShell 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; q beendet 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.
  • type unterscheidet zwischen eingebautem Befehl, Alias und Programmdatei.
2

Hilfe 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
SektionThema
1Benutzerbefehle
2Systemaufrufe
3Bibliotheksfunktionen
4Spezielle Gerätedateien
5Dateiformate
6Spiele
7Übersichten und Konventionen
8Befehle 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 command fü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.
  • apropos durchsucht Zweckbeschreibungen; whatis schlägt einen bekannten Namen nach.
  • Verwende help für eingebaute Bash-Befehle wie cd.

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:

  1. apropos directory schlägt mkdir zum Erstellen von Verzeichnissen vor.
  2. mkdir --help zeigt -p, --parents und erklärt das Erstellen fehlender übergeordneter Verzeichnisse.
  3. mkdir -p reports/2026/q1 erstellt 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 --help für Programmoptionen und help name für eingebaute Bash-Befehle.
  • info und /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.
3

Im 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:

OrtHauptzweck
/homeHome-Verzeichnisse regulärer Benutzer
/rootHome-Verzeichnis des Benutzers root
/etcSystemkonfiguration
/bin, /usr/binAlltägliche Programmdateien
/sbin, /usr/sbinProgramme zur Systemadministration
/tmpTemporäre Daten, die automatisch entfernt werden können
/varVeränderliche Daten, einschließlich Protokollen unter /var/log
/devGerä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, /home und /root sind 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:

  1. Das erste .. führt nach /home/sam/projects.
  2. Das zweite .. führt nach /home/sam.
  3. photos fü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 - und cd .. 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:

  1. - kennzeichnet eine reguläre Datei; d würde ein Verzeichnis und l einen symbolischen Link kennzeichnen.
  2. Die nächsten neun Zeichen beschreiben die Rechte für Eigentümer, Gruppe und andere.
  3. 1 ist die Linkanzahl.
  4. Die beiden sam-Felder bezeichnen Eigentümer und Gruppe.
  5. 2048 ist die Dateigröße in Byte.
  6. Datum und Uhrzeit beschreiben die letzte Inhaltsänderung.
  7. notes.txt ist 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
OptionenWas zuerst kommt
Keine SortieroptionNamen in der Sortierreihenfolge der Locale
-tZuletzt geänderte Einträge
-SGrößte Einträge
-r mit einer anderen ReihenfolgeDie 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

  • -l ergänzt Details und -h macht angezeigte Größen leichter lesbar.
  • -a schließt versteckte Einträge ein; -A lässt nur . und .. aus.
  • -d listet ein Verzeichnis selbst auf; -R listet seine Unterverzeichnisse auf.
  • -t, -S und -r steuern 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.
4

Dateien 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

  • mkdir erstellt Verzeichnisse; -p erstellt auch fehlende übergeordnete Verzeichnisse.
  • touch erstellt eine fehlende leere Datei oder aktualisiert eine vorhandene Datei, ohne sie zu leeren.
  • Erstelle übergeordnete Verzeichnisse vor den Dateien darin.
  • rmdir entfernt 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 KopierenSpeicherort des kopierten Baums
website-old existiert nichtwebsite-old/index.html und so weiter
website-old existiert als Verzeichniswebsite-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

  • cp erhä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 -r kopiert einen Baum; mv braucht keine rekursive Option.
  • -i fragt vor dem Überschreiben und -n überspringt ein vorhandenes Ziel.
  • cp -p erhält Zeitstempel und Rechte; cp -a erhä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
OptionWirkung
-iVor jedem Entfernen fragen
-IVor dem Entfernen von mehr als drei Dateien oder vor rekursivem Entfernen einmal fragen
-fNicht fragen; fehlende Namen ignorieren
-vAktionen 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:

  1. Führe pwd aus, um deinen Standort zu bestätigen.
  2. Liste genau die Namen oder das Muster auf, die du entfernen möchtest.
  3. Prüfe die Liste und achte auch darauf, ob Verzeichnisse ausgewählt sind.
  4. Verwende denselben Zielausdruck mit rm und 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

  • rm entfernt direkt; es verschiebt Dateien nicht in einen Papierkorb.
  • Verwende rmdir für ein leeres Verzeichnis und rm -r für einen Baum.
  • Prüfe vor dem Entfernen das Arbeitsverzeichnis und die genauen Ziele.
  • -i fragt für jedes Ziel; -f unterdrückt Nachfragen und ignoriert fehlende Namen.
  • Leerzeichen, Anführungszeichen und führende Bindestriche ändern, wie Argumente beim Entfernen gelesen werden.
5

Dateien 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
MusterteilWorauf 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.
6

Befehle 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:

AusdruckWiederverwendeter Text
!!Der vorherige Befehl
!42Verlaufsereignis 42
!lsDer 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; :p gibt 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
EingabeWas Bash tut
echo "$HOME"Expandiert HOME und hält das Ergebnis zusammen
echo '$HOME'Übergibt den wörtlichen Text $HOME
echo \$HOMESchü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 =; $name liest den Wert aus.
  • Doppelte Anführungszeichen erlauben Expansion und erhalten Leerzeichen; einfache Anführungszeichen erhalten Text wörtlich.
  • export gibt eine Variable an anschließend gestartete Kindprogramme weiter.
  • env zeigt die Umgebung; set enthä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.
  • type meldet auch Aliase, Funktionen und eingebaute Befehle.
  • Ein Befehl mit / bezeichnet direkt einen Pfad und umgeht PATH.
  • Behalte $PATH beim Erweitern der Liste bei.
  • Die Suchreihenfolge entscheidet, welches externe Programm bei doppeltem Namen Vorrang hat.

Linux-Befehlszeile: Beispiele

6 Interaktive Lektionen

1

Einen Befehl aufbauen und lesen

11 Schritte
Lies eine Eingabeaufforderung, verwende die grundlegenden Tasten und baue eindeutige Befehlszeilen auf.
  1. 1
    Einfü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.

  2. 2
    Erklä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.

  3. 3
    BeispielNach Benutzer und Standort fragen

    Gib whoami ein und lies das Ergebnis: Für unser Beispielkonto ist es sam. Gib dann pwd ein; vom Home-Verzeichnis aus gibt es /home/sam aus. 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.

  4. 4
    TippVervollstä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 q die Seite; derselbe Tastendruck hat eine andere Bedeutung als ein an der Eingabeaufforderung der Shell eingegebener Befehl.

  5. 5
    HerausforderungDie Taste zum Abbrechen wählen

    Du hast ls-l eingegeben, 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 -l bearbeiten, aber hier ist das Abbrechen gefragt.

  6. 6
    ErklärungJedem Wort eine Aufgabe geben

    Lies ls -l /etc als drei Wörter mit drei Aufgaben. ls bezeichnet den Befehl, -l ändert sein Verhalten und /etc gibt 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 -la kombiniert -l und -a, während ls --all eine lange Option ist. Manche Optionen brauchen auch Werte, die ihr Hilfetext angibt.

  7. 7
    BeispielEinen Namen mit Leerzeichen zusammenhalten

    Angenommen, eine Datei heißt „Annual Report.pdf“. Die Eingabe von ls Annual Report.pdf liefert 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 in Annual\ Report.pdf maskieren. Die schützenden Zeichen steuern die Shell; sie werden nicht zu Zeichen im Dateinamen.

  8. 8
    KernaussageOptionen gehören zu ihrem Befehl

    Ein vertrauter Buchstabe kann in verschiedenen Programmen unterschiedliche Bedeutungen haben. cp -r kopiert Verzeichnisse rekursiv, aber ls -r kehrt nur die Reihenfolge um. Die Option für eine rekursive Auflistung ist das große -R.

    Ebenso formatiert ls -h Größ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.

  9. 9
    HerausforderungEine 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-l wäre dagegen ein anderer Befehlsname und Course Plan.txt ohne Anführungszeichen wären zwei Zielargumente.

  10. 10
    HerausforderungZwei 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 -- ls anweist, 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.

  11. 11
    ZusammenfassungDie 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.

2

Das benötigte Befehlsverhalten finden

10 Schritte
Nutze Handbuchschreibweise, Suche, Hilfe für eingebaute Befehle und Fehlermeldungen, um eine Aufgabe zu lösen.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEine Antwort in der Hilfe finden
  2. 2
    ErklärungDas Handbuch für den Befehl öffnen
  3. 3
    BeispielOptionale und wiederholte Teile deuten
  4. 4
    TippSuchen und zur Eingabeaufforderung zurückkehren
  5. 5
    HerausforderungDie benötigte Seite auswählen
  6. 6
    VerbindungDie Hilfe anhand der Befehlsart wählen
  7. 7
    BeispielDen Grund für einen Fehler lesen
  8. 8
    HerausforderungEine Referenz für eingebaute Befehle wählen
  9. 9
    HerausforderungVom Zweck zum funktionierenden Befehl gelangen
  10. 10
    ZusammenfassungDie passende Referenz zur Frage wählen
3

Einen Verzeichnisbaum navigieren und untersuchen

13 Schritte
Verfolge absolute und relative Pfade und wähle dann Auflistungen, die eine konkrete Frage beantworten.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEinen Weg durch den Baum verfolgen
  2. 2
    ErklärungBeim Wurzelverzeichnis beginnen
  3. 3
    BeispielEine kleine Struktur lesen
  4. 4
    HerausforderungEinen versteckten Eintrag erkennen
  5. 5
    ErklärungDen Ausgangspunkt des Pfades bestimmen
  6. 6
    BeispielZwei Ebenen nach oben verfolgen
  7. 7
    TippKurzformen für Home-Verzeichnis und vorherigen Standort verwenden
  8. 8
    HerausforderungEin Nachbarverzeichnis des übergeordneten Verzeichnisses finden
  9. 9
    ErklärungDie benötigten Details hinzufügen
  10. 10
    BeispielGröße und Sortierung unterscheiden
  11. 11
    HerausforderungDie passende Auflistung zur Frage wählen
  12. 12
    HerausforderungEinen Wechsel und eine Untersuchung verfolgen
  13. 13
    ZusammenfassungStandort und Ansicht getrennt halten
4

Aufbauen, kopieren, umbenennen und aufräumen

14 Schritte
Verfolge eine Verzeichnisstruktur beim Erstellen, Kopieren, Verschieben und Entfernen leerer Verzeichnisse.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie endgültige Struktur vorhersagen
  2. 2
    BeispielDie übergeordneten Verzeichnisse erstellen
  3. 3
    BeispielDateien zur Struktur hinzufügen
  4. 4
    HerausforderungPrüfen, was zuerst existieren muss
  5. 5
    ErklärungEine Datei in ein Verzeichnis kopieren
  6. 6
    BeispielDen Baum kopieren
  7. 7
    BeispielInnerhalb der Kopie umbenennen
  8. 8
    TippEin Verzeichnis als Ziel verlangen
  9. 9
    HerausforderungEinen kopierten Untereintrag finden
  10. 10
    ErklärungEin leeres Unterverzeichnis entfernen
  11. 11
    TippDas Ziel vor dem Entfernen prüfen
  12. 12
    HerausforderungEine Aktion nur für leere Verzeichnisse wählen
  13. 13
    HerausforderungDas gesamte Aufräumen verfolgen
  14. 14
    ZusammenfassungAktionen als Änderungen an Pfaden lesen
5

Ein Muster vor der Verwendung auswerten

12 Schritte
Sage Dateinamenexpansion, wörtliche Muster und durch Klammerexpansion erzeugte Wörter voraus.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEine Platzhalterauswahl vorhersagen
  2. 2
    ErklärungDie Zeichenanzahl jedes Symbols bestimmen
  3. 3
    BeispielEine Stelle einschränken
  4. 4
    KernaussageGroß- und Kleinschreibung und Punkte bleiben wichtig
  5. 5
    HerausforderungGenaue Treffer auswählen
  6. 6
    ErklärungZuerst die Shell expandieren lassen
  7. 7
    BeispielEin wörtliches Muster lesen
  8. 8
    HerausforderungEntscheiden, was das Programm erhält
  9. 9
    TippDas Ziel außerhalb der Auswahl halten
  10. 10
    BeispielNamen erzeugen, bevor Dateien existieren
  11. 11
    HerausforderungErzeugen, verschieben und dann auswählen
  12. 12
    ZusammenfassungAuswahl und Erzeugung unterscheiden
6

Befehle wiederverwenden und vererbte Einstellungen verfolgen

15 Schritte
Verfolge Verlaufsverweise, Quoting von Variablen, Umgebungen von Kindprozessen und die PATH-Suche.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEine Zeile und einen Wert wiederverwenden
  2. 2
    ErklärungAufrufen und bei Bedarf bearbeiten
  3. 3
    BeispielVerstehen, was die Kurzform wiederverwendet
  4. 4
    HerausforderungDen vorherigen Befehl im Blick behalten
  5. 5
    ErklärungEinen Wert zuweisen, ohne ihn aufzuteilen
  6. 6
    BeispielWählen, was die Anführungszeichen erlauben
  7. 7
    BeispielEine Kopie an einen Kindprozess weitergeben
  8. 8
    HerausforderungVererbung und lokale Änderung vorhersagen
  9. 9
    VerbindungDie Geltungsdauer einer Einstellung wählen
  10. 10
    ErklärungNach einem externen Befehl suchen
  11. 11
    BeispielEin persönliches Verzeichnis anhängen
  12. 12
    KernaussageEin Schrägstrich wählt einen Ort direkt aus
  13. 13
    HerausforderungDen früheren Treffer beibehalten
  14. 14
    HerausforderungWiederaufruf, Quoting und Suche verbinden
  15. 15
    ZusammenfassungText, Werte und Geltungsbereich verfolgen

Linux-Befehlszeile: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Befehle, Hilfe und Pfade lesen10 Übungsfragen

Frage 1 von 10

Ein Terminal zeigt sam@laptop:~/training$ und ist für Eingaben bereit. Welchen Ort zeigt die Eingabeaufforderung an?
  1. Das Wurzelverzeichnis /
  2. Das Home-Verzeichnis /home/sam
  3. Das Verzeichnis /home/training
  4. Das Verzeichnis /home/sam/training
Antwort zeigenAntwort ausblenden
Antwort: D
Die Tilde steht für das Home-Verzeichnis von sam und /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

Wie kannst du eine lange Auflistung der einzelnen Datei namens „Team Schedule.pdf“ anfordern?
  1. ls-l "Team Schedule.pdf"
  2. ls -l Team Schedule.pdf
  3. ls -l /Team/Schedule.pdf
  4. ls -l "Team Schedule.pdf"
Antwort zeigenAntwort ausblenden
Antwort: D
Das Leerzeichen nach 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

Du hast eine Befehlszeile eingegeben, aber noch nicht die Eingabetaste gedrückt. Wie kannst du sie verwerfen und zu einer neuen Eingabeaufforderung zurückkehren?
  1. Drücke Strg+C.
  2. Drücke Strg+D.
  3. Drücke Strg+L.
  4. Drücke die Pfeiltaste nach oben.
Antwort zeigenAntwort ausblenden
Antwort: A
Strg+C verwirft die Eingabezeile, bevor sie ausgeführt wird. Strg+L leert nur die Anzeige und kann die aktuelle Eingabe stehen lassen. Strg+D hat eine andere Aufgabe und beendet unter anderem die Shell, wenn es in einer leeren Zeile eingegeben wird; es ist nicht die Tastenkombination zum Verwerfen der Zeile.

Frage 4 von 10

Du brauchst die Dokumentation für das Format von /etc/passwd, aber man passwd öffnet den Befehl zum Ändern des Passworts. Welcher Befehl öffnet die benötigte Seite?
  1. man -k passwd
  2. man 1 passwd
  3. man 5 passwd
  4. whatis passwd
Antwort zeigenAntwort ausblenden
Antwort: C
Handbuchsektion 5 beschreibt Dateiformate. Ihre Angabe wählt daher die Dateiformatseite mit dem Namen 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?
  1. help export
  2. export --help
  3. whatis export
  4. info coreutils
Antwort zeigenAntwort ausblenden
Antwort: A
Bash stellt die Dokumentation für eingebaute Befehle über 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

Die SYNOPSIS lautet mkdir [OPTION]... DIRECTORY.... Was ist für einen einfachen gültigen Aufruf erforderlich?
  1. Eine Option und genau ein Verzeichnisname.
  2. Mindestens ein Verzeichnisname; Optionen sind optional.
  3. Mindestens eine Option; Verzeichnisnamen sind optional.
  4. Genau ein Verzeichnisname in eckigen Klammern.
Antwort zeigenAntwort ausblenden
Antwort: B
Der Verzeichnisplatzhalter steht außerhalb der optionalen eckigen Klammern, daher ist mindestens ein Verzeichnis erforderlich. Die Auslassungspunkte erlauben weitere Verzeichnisargumente, während die Optionsgruppe in Klammern entfallen darf. Wer jeden großgeschriebenen Platzhalter als optional betrachtet, liest die Aufrufschreibweise falsch.

Frage 7 von 10

Dein Arbeitsverzeichnis ist /home/sam/labs/module. Welches absolute Verzeichnis wählt cd ../../downloads aus?
  1. /home/sam/downloads
  2. /home/downloads
  3. /downloads
  4. /home/sam/labs/downloads
Antwort zeigenAntwort ausblenden
Antwort: A
Das erste .. 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

Du möchtest Details zum Verzeichniseintrag assets selbst sehen, ohne die Dateien darin aufzulisten. Welcher Befehl erledigt das?
  1. ls -l assets
  2. ls -ld assets
  3. ls -lR assets
  4. ls -lA assets
Antwort zeigenAntwort ausblenden
Antwort: B
Die Option -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

Ein gewöhnliches ls zeigt in settings nichts, aber ls -A settings zeigt .localrc. Warum unterscheiden sich die Ergebnisse?
  1. Die Datei gehört root und erscheint nur mit -A.
  2. Der führende Punkt versteckt den Eintrag in der gewöhnlichen Auflistung.
  3. Das Verzeichnis ist leer, bis eine Auflistung versteckter Einträge eine Datei erstellt.
  4. Die Endung macht den Eintrag nur für spezielle Befehle lesbar.
Antwort zeigenAntwort ausblenden
Antwort: B
Ein führender Punkt versteckt einen Namen in der Standardauflistung und -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

Von /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?
  1. Jetzt /home/photos; danach /home/sam/projects.
  2. Jetzt /home/sam/photos; danach /home/sam/downloads.
  3. Jetzt /home/sam/photos; danach /home/sam/projects.
  4. Jetzt /home/sam/projects/photos; danach /home/sam/projects.
Antwort zeigenAntwort ausblenden
Antwort: C
Nach dem ersten Wechsel bist du in /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

Das Verzeichnis lab existiert nicht. Wie kannst du lab/week2/input und seine fehlenden übergeordneten Verzeichnisse mit einem Befehl erstellen?
  1. mkdir -p lab/week2/input
  2. touch lab/week2/input
  3. mkdir lab/week2/input
  4. mkdir -r lab/week2/input
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?
  1. stored/records/records.csv
  2. stored/jan.csv
  3. records/stored/jan.csv
  4. stored/records/jan.csv
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?
  1. Ihr Inhalt wird geleert und ihr Name bleibt gleich.
  2. Ihr Inhalt wird in eine neue Datei namens agenda.txt.bak verschoben.
  3. Ihr Inhalt bleibt erhalten und ihre Zeitstempel werden aktualisiert.
  4. Ihr Inhalt bleibt erhalten und ihre Zeitstempel bleiben gleich.
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?
  1. Es erstellt archive und legt rough.txt darin ab.
  2. Es kopiert die Datei als archive und behält rough.txt.
  3. Es verweigert die Aktion, weil das Verschieben einer Datei eine rekursive Option braucht.
  4. Es benennt rough.txt in den Dateinamen archive um.
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?
  1. rm -r old-cache
  2. rmdir old-cache
  3. rm -rf old-cache
  4. rm -rv old-cache
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine reguläre Datei heißt wörtlich -scratch.log. Wie kann GNU rm ohne Alias diesen Namen erhalten, ohne ihn als Optionen zu lesen?
  1. rm -- -scratch.log
  2. rm -i -scratch.log
  3. rm "-scratch.log"
  4. rm --scratch.log
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Eine neu kopierte Datei soll die Zeitstempel und Rechte der Quelle behalten. Welche GNU-Befehlsform fordert das an?
  1. cp -v source.txt saved.txt
  2. cp -p source.txt saved.txt
  3. cp -i source.txt saved.txt
  4. cp -r source.txt saved.txt
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?
  1. rmdir braucht für verschachtelte Pfade eine rekursive Option.
  2. rmdir kann kein Verzeichnis unterhalb eines anderen entfernen.
  3. Der versteckte Eintrag bedeutet, dass das Verzeichnis nicht leer ist.
  4. Eine Datei mit führendem Punkt macht den Pfad absolut.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Von /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?
  1. Original: saved/source/item.txt; Kopie: saved/session/item.txt.
  2. Original: source/item.txt; Kopie: saved/item.txt.
  3. Original: source/item.txt; Kopie: saved/session/item.txt.
  4. Original: source/session/item.txt; Kopie: saved/source/item.txt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Von /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?
  1. Beide Kopien liegen unter work/part; part bleibt bestehen.
  2. safe/part/keep.txt und work/keep.txt; part wird entfernt.
  3. Nur safe/keep.txt; sowohl part als auch die verschobene Datei werden entfernt.
  4. safe/keep.txt und work/keep.txt; part wird entfernt.
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

Ein Verzeichnis enthält task.txt, task4.txt und task42.txt. Welcher Name passt auf task?.txt?
  1. Nur task4.txt
  2. task.txt und task4.txt
  3. task4.txt und task42.txt
  4. Nur task.txt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

In der Standardeinstellung von Bash gibt es im Arbeitsverzeichnis keine passenden .zip-Einträge. Was gibt echo *.zip aus?
  1. Die Namen aller sichtbaren Einträge
  2. Eine Leerzeile
  3. No such file or directory
  4. *.zip
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Du möchtest einen früheren Befehl finden, der upload enthält, ihn prüfen und vor der Ausführung bearbeiten. Welche Funktion eignet sich für die Suche?
  1. Bildschirm mit Strg+L leeren
  2. Rückwärtssuche mit Strg+R
  3. Sofortige Expansion mit !upload
  4. Liste mit history -c leeren
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Welches Argument für den Pfad erhält ls "$folder" nach folder="Project Plans"?
  1. Zwei Namen: Project und Plans
  2. Ein wörtlicher Name: "Project Plans"
  3. Ein wörtlicher Name: $folder
  4. Ein Name: Project Plans
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Die sichtbaren Namen sind rec1.csv, rec2.csv, rec3.csv und rec12.csv. Welche Namen passen auf rec[!2].csv?
  1. rec1.csv und rec3.csv
  2. rec1.csv und rec12.csv
  3. rec2.csv und rec3.csv
  4. rec3.csv und rec12.csv
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Für eine neue Suche nach einem externen Befehl ist PATH gleich /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?
  1. Die ausführbare Datei /usr/bin/report
  2. Beide ausführbaren Dateien in PATH-Reihenfolge
  3. Die ausführbare Datei /opt/team/bin/report
  4. Die ausführbare Datei ./report
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein Verzeichnis enthält pic1.png und pic2.png. Was gibt echo "pic*.png" aus?
  1. pic1.png pic2.png
  2. pic*.png
  3. Nur pic1.png
  4. Eine Leerzeile
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?
  1. Einfache Anführungszeichen verhindern jede Expansion in der Kind-Shell.
  2. Kleingeschriebene Namen können von keiner anderen Bash-Shell gelesen werden.
  3. Die Variable wurde nicht in die Umgebung der Kind-Shell exportiert.
  4. Eine Kind-Shell kann nur in PATH aufgeführte Namen lesen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

In der Standardeinstellung von Bash enthält das Verzeichnis nur die regulären Dateien 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?
  1. item1.dat, item2.dat und chosen.dat
  2. item1.dat, item12.dat und chosen.dat
  3. item1.dat und chosen.dat
  4. item1.dat, .item3.dat und chosen.dat
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

PATH ist zunächst gleich /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?
  1. Bloßer Name: /usr/bin/scan; expliziter Pfad: /home/sam/bin/scan.
  2. Beide führen /usr/bin/scan aus.
  3. Bloßer Name: /home/sam/bin/scan; expliziter Pfad: /usr/bin/scan.
  4. Beide führen /home/sam/bin/scan aus.
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?
  1. Führe pwd aus, um die Sortierregel zu ändern.
  2. Führe help ls für einen eingebauten Bash-Befehl aus.
  3. Benenne das aufgelistete Verzeichnis um.
  4. Lies ls --help für die akzeptierten Optionen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Du brauchst eine lange Auflistung mit lesbaren Größen, den größten Einträgen zuerst und einschließlich versteckter Einträge, aber ohne . und ... Welcher GNU-Befehl liefert sie?
  1. ls -lhS
  2. ls -lhAS
  3. ls -lhAt
  4. ls -lhAr
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Aufrufübersicht zeigt -d, --date=STRING. Welche Rolle hat 2026-02-18 in touch --date=2026-02-18 checkpoint?
  1. Es bezeichnet das Zielverzeichnis.
  2. Es wählt Handbuchsektion 2026.
  3. Es liefert ein zweites Dateiargument.
  4. Es liefert den Wert der Datumsoption.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Die Namen lauten clip.jpg, clip.JPG, clip.Jpg und clip.jpeg. Welche Namen passen auf clip.[jJ][pP][gG]?
  1. clip.jpg und clip.jpeg
  2. clip.JPG und clip.Jpg
  3. Alle vier Dateinamen
  4. Die drei Namen mit einer dreibuchstabigen jpg-Endung
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Du musst den von !cp ausgewählten Befehl prüfen, ohne ihn auszuführen. Welcher Verlaufsausdruck gibt nur die Expansion aus?
  1. !cp:p
  2. !!cp
  3. !cp$
  4. history -c
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Von /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?
  1. Kopie /home/sam/store/b.txt; Quelle /home/sam/jobs/data/a.txt.
  2. Kopie /home/sam/store/data/b.txt; Quelle /home/sam/jobs/data/a.txt.
  3. Kopie /home/sam/store/data/b.txt; Quelle /home/sam/jobs/run/data/a.txt.
  4. Kopie /home/sam/jobs/store/data/b.txt; Quelle /home/sam/store/data/a.txt.
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?
  1. south, weil der Export die Werte der beiden Shells verbindet.
  2. north, weil der Kindprozess eine eigene Kopie erhielt.
  3. Nichts, weil der Kindprozess die Variable im Elternprozess geleert hat.
  4. north south, weil der Export ihre Werte kombiniert.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

In der Standardeinstellung von Bash gibt es nur 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?
  1. save/red2.tmp
  2. save/red2.tmp save/red10.tmp
  3. save/final.txt save/red2.tmp
  4. save/red1.tmp save/red2.tmp
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine ausführbare Datei 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?
  1. export checkup
  2. PATH checkup
  3. ./checkup
  4. type checkup
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Von /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?
  1. In /home/sam/team/final; untersucht: /home/sam/photos.
  2. In /home/sam/photos; untersucht: /home/sam/team/drafts.
  3. In /home/sam/team/drafts; untersucht: /home/sam/photos.
  4. In /home/sam/team/drafts; untersucht: /home/photos.
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

Du weißt, dass der Zweck eines Befehls mit Verzeichnissen zu tun hat, hast aber seinen Namen vergessen. Wie kannst du die installierten Handbuchbeschreibungen nach dem Wort „directory“ durchsuchen?
  1. whatis directory
  2. apropos directory
  3. help directory
  4. man directory
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Was gibt echo '$tag' nach tag=blue aus?
  1. $tag
  2. tag=blue
  3. blue
  4. Eine Leerzeile
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Anfangs existiert 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?
  1. Nur raw mit x; bundle bleibt bestehen.
  2. Nur log mit x; bundle bleibt bestehen.
  3. Beide leeren Unterverzeichnisse; x wurde entfernt.
  4. Nichts; bundle und beide Unterverzeichnisse werden entfernt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Bash startet in der Standardeinstellung in einem leeren Verzeichnis. Du führst touch note{2..4}.txt, mkdir bin, mv note[24].txt bin/ und dann echo note?.txt aus. Was wird ausgegeben?
  1. note2.txt note3.txt note4.txt
  2. note2.txt note4.txt
  3. note?.txt
  4. note3.txt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

PATH ist /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?
  1. /usr/bin/render; /usr/bin:/bin:/home/sam/bin
  2. /home/sam/bin/render; /usr/bin:/bin:/home/sam/bin
  3. /usr/bin/render; /home/sam/bin:/usr/bin:/bin
  4. /home/sam/bin/render; /home/sam/bin:/usr/bin:/bin
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Datei heißt -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?
  1. ls -l "-review notes.txt"
  2. ls -l -- -review notes.txt
  3. ls -l -- "-review notes.txt"
  4. ls-l ./-review\ notes.txt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

In der Standardeinstellung von Bash enthält ein Verzeichnis nur 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?
  1. unit10.tmp und final.txt
  2. .unit3.tmp und final.txt
  3. unit1.tmp, unit2.tmp und final.txt
  4. unit10.tmp, .unit3.tmp und final.txt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Unmittelbar nach mkdir -p samples/day7 führst du pwd und dann echo !$ aus. Was wählt die Verlaufskurzform aus?
  1. Das Verzeichnis samples/day7
  2. Den von pwd ausgegebenen Pfad
  3. Das Wort pwd
  4. Das Wort mkdir
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Von /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?
  1. Projects enthält .prefs; archive enthält src/main.c und live/main.c.
  2. Projects enthält .prefs und src/main.c; archive enthält live/main.c.
  3. Projects enthält .prefs; archive enthält main.c und live/main.c.
  4. projects wird entfernt; archive enthält src/main.c und live/main.c.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Bei HOME /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?
  1. Kindprozess /home/sam/Field Notes; Elternprozess /home/sam/Field Notes.
  2. Kindprozess /home/sam/Field; Elternprozess elsewhere.
  3. Kindprozess wörtlich $HOME/Field Notes; Elternprozess elsewhere.
  4. Kindprozess /home/sam/Field Notes; Elternprozess ein leerer Wert.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

79 Schlüsselbegriffe, jeweils mit Definition

A

Absoluter Pfad
Ein absoluter Pfad beginnt mit / 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
Ein Alias ist ein in der Shell definierter Kurzname, der zu Befehlstext expandiert wird und einem vorhandenen Befehl oft Standardoptionen hinzufügt.
Eine Distribution kann ls als ls --color=auto definieren; type ls zeigt diesen zusätzlichen Befehlstext.
apropos
apropos ist ein Suchbefehl für den Handbuchindex, der Seitennamen und Kurzbeschreibungen findet, die zu einem Stichwort über den Zweck eines Befehls passen.
apropos directory hilft, mkdir oder rmdir zu finden, wenn du dich an die Aufgabe, aber nicht an den Befehlsnamen erinnerst.
Arbeitsverzeichnis
Das Arbeitsverzeichnis ist der aktuelle Standort der Shell im Baum und der Ausgangspunkt für die Interpretation relativer Pfade.
Nach cd projects bezieht sich der relative Name notes.txt auf eine Datei innerhalb des neu ausgewählten Verzeichnisses.
Archivkopie
Eine Archivkopie ist eine mit 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
Ein Argument ist ein an einen Befehl übergebener Wert, etwa ein zu bearbeitender Pfad, auszugebender Text oder ein von einer Option benötigter Wert.
In cp report.txt saved/ bezeichnen die beiden Pfadargumente die Quelldatei und das Zielverzeichnis.
Aufrufsyntax (SYNOPSIS)
Die Aufrufsyntax einer Handbuchseite ist ein kompaktes Aufrufmuster, das wörtlichen Befehlstext, ersetzbare Werte, optionale Teile und Wiederholungen zeigt.
Die Form mkdir [OPTION]... DIRECTORY... erlaubt optionale Schalter, verlangt aber mindestens einen Verzeichnisnamen.
Ausführbare Datei
Eine ausführbare Datei ist eine Datei, die als Programm ausgeführt werden kann und dafür neben einem geeigneten Speicherort auch Ausführungsrechte benötigt.
Eine ausführbare Datei namens backup im aktuellen Verzeichnis kann mit ./backup ausgeführt werden, wenn ihr Verzeichnis in PATH fehlt.

Ä

Änderungszeitpunkt
Ein Änderungszeitpunkt hält fest, wann der Inhalt einer Datei zuletzt geändert wurde; ls -t verwendet ihn, um Einträge mit den neuesten zuerst zu sortieren.
Die Ausführung von touch aktualisiert diesen Zeitstempel, ohne die Dateidaten zu ändern, und kann so die zeitliche Reihenfolge ändern.

B

Bash
Bash ist die Bourne Again Shell, ein weit verbreiteter Linux-Befehlsinterpreter mit eingebauten Befehlen, Vervollständigung, Variablen und Befehlsverlauf.
Bash stellt help cd direkt bereit, weil cd einer seiner eingebauten Befehle und keine separate Programmdatei ist.
Bash-Hilfe
Die Bash-Hilfe ist die eingebaute Dokumentationsschnittstelle für Bash-Befehle. Du rufst sie mit 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
Ein Befehl ist eine Anweisung, deren erstes Wort eine Shellfunktion oder ein Programm bezeichnet und auf die gegebenenfalls Optionen und Argumente folgen.
In ls -l /var ist ls der Befehlsname; die übrigen Wörter steuern die Auflistung und geben ihr Ziel an.
Befehlsauflösung
Die Befehlsauflösung ist der Vorgang, mit dem die Shell einen Namen einer Shellfunktion oder einer externen ausführbaren Datei in ihrem Suchpfad zuordnet.
type echo kann den eingebauten Bash-Befehl vor einer externen Datei echo melden, die ebenfalls in einem PATH-Verzeichnis existiert.
Befehlsverlauf
Der Befehlsverlauf ist die Aufzeichnung früherer Eingabezeilen durch die Shell. Diese Zeilen lassen sich auflisten, durchsuchen, aufrufen, bearbeiten und erneut ausführen.
Drücke die Pfeiltaste nach oben, um einen früheren Kopierbefehl aufzurufen, ändere sein Ziel und prüfe die bearbeitete Zeile vor der Eingabetaste.

D

Datei
Eine Datei ist ein benanntes Objekt im Linux-Verzeichnisbaum, das Daten wie Text, ein Bild oder Programmanweisungen enthält.
Ein Programm kann ein PDF anhand seines Inhalts erkennen, selbst wenn sein Dateiname nicht auf .pdf endet.
Dateinamenexpansion (Globbing)
Die Dateinamenexpansion ist eine Funktion der Shell, die ein ungeschütztes Muster vor der Befehlsausführung durch vorhandene passende Namen ersetzt.
Bei zwei passenden Protokolldateien erhält ls *.log zwei Dateinamen statt des wörtlichen Musters mit Stern.

E

Eingabeaufforderung
Eine Eingabeaufforderung ist Text, der anzeigt, dass eine Shell für Eingaben bereit ist; ihr Format kann das Konto, den Host und das aktuelle Verzeichnis angeben.
In sam@laptop:~$ bezeichnet die Tilde das Home-Verzeichnis und das abschließende Dollarzeichen üblicherweise einen regulären Benutzer.
Eingebauter Befehl
Ein eingebauter Befehl ist ein Befehl, der in der Shell selbst implementiert ist, sodass seine Ausführung keine separate Programmdatei suchen muss.
type cd meldet einen eingebauten Befehl und help cd liefert die Dokumentation für den Bash-Befehl zum Verzeichniswechsel.
Erzwingungsoption
Die Erzwingungsoption -f in GNU rm unterdrückt Bestätigungen und ignoriert fehlende Namen, wodurch die Prüfung des Zielausdrucks noch wichtiger wird.
Das Ergänzen von -f bietet keine Wiederherstellungsmöglichkeit; es ändert nur, wie das Entfernen mit Nachfragen und fehlenden Namen umgeht.
Expliziter Befehlspfad
Ein expliziter Befehlspfad enthält einen Schrägstrich und bezeichnet den Speicherort eines Programms direkt, wodurch er die Verzeichnissuche über PATH umgeht.
Von /home/sam/bin aus bezeichnen ./backup und /home/sam/bin/backup dieselbe lokale ausführbare Datei.
export
export ist der eingebaute Bash-Befehl, der eine Variable für die Aufnahme in die Umgebung anschließend gestarteter Kindprogramme markiert.
Das Ändern einer exportierten Variablen in einem Kindprozess ändert nicht die Kopie des Elternprozesses; jeder Prozess hält seinen eigenen Wert.

F

Fehlermeldung
Eine Fehlermeldung berichtet über einen fehlgeschlagenen Vorgang und nennt üblicherweise den Befehl, das betroffene Objekt und den Grund, warum der Vorgang nicht fortgesetzt werden konnte.
Eine No such file or directory-Meldung von ls legt nahe, Pfad, Groß- und Kleinschreibung und Arbeitsverzeichnis zu prüfen.

G

Glob-Muster ohne Treffer
Ein Glob-Muster ohne Treffer ist ein Dateinamenmuster ohne passende Einträge, das Bash in der Standardeinstellung unverändert als Argument für den Befehl belässt.
Sind keine PDFs vorhanden, gibt echo *.pdf das Muster aus, während ls *.pdf meldet, dass dieser wörtliche Pfad fehlt.

H

Handbuchseite
Eine Handbuchseite ist ein Referenzdokument für einen Befehl oder eine Systemfunktion, das meist in benannte Abschnitte wie SYNOPSIS und DESCRIPTION gegliedert ist.
man ls öffnet die Referenz des Auflistungsbefehls, in der du nach einer benötigten Option suchen kannst.
Handbuchsektion
Eine Handbuchsektion ist eine nummerierte Gruppe von Seiten, die Themen wie Benutzerbefehle, Dateiformate und Administrationsbefehle voneinander trennt.
Derselbe Name kann mehrere Seiten haben; man 5 passwd wählt die Dateiformatseite statt des Befehls.
HISTCONTROL
HISTCONTROL ist eine Bash-Einstellung, die festlegt, welche Eingabezeilen aus dem Verlauf ausgeschlossen werden, etwa wiederholte Befehle oder solche mit führendem Leerzeichen.
Der Wert ignoreboth kombiniert ignorespace und ignoredups; eine beliebige Shell kann eine andere Einstellung verwenden.
Home-Verzeichnis
Ein Home-Verzeichnis ist der persönliche Ort eines Kontos für Dateien und Einstellungen, bei einem regulären Linux-Benutzer meist /home/username.
Für sam wird ~ zu /home/sam expandiert; /home allein ist das Verzeichnis, das die Home-Verzeichnisse der Benutzer enthält.

I

Info-Handbuch
Ein Info-Handbuch ist ein verlinktes Referenzdokument von GNU-Projekten, das in Knoten gegliedert ist, zwischen denen du im Terminal navigieren kannst.
info coreutils öffnet ein ausführlicheres Handbuch; n, p und u bewegen sich zwischen seinen verlinkten Knoten.
Interaktives Löschen
Beim interaktiven Löschen wird vor dem Fortfahren eine Bestätigung angefordert; GNU rm -i fragt für jedes Ziel einzeln.
Bei einer geprüften Auswahl temporärer Dateien fragt rm -i *.tmp nach den passenden Namen, bevor es sie entfernt.

K

Klammerausdruck
Ein Klammerausdruck passt auf ein Zeichen aus einer aufgeführten Zeichenmenge oder einem Bereich; ein führendes ! 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
Die Klammerexpansion erzeugt Wörter aus aufgeführten Auswahlmöglichkeiten oder einer Folge, ohne nach Dateien zu suchen, wie in file{1..3}.txt.
mkdir work/{src,docs} erhält zwei erzeugte Verzeichnisnamen, selbst wenn keines der beiden Unterverzeichnisse bereits existiert.
Kopieren
Beim Kopieren entsteht eine weitere Instanz von Dateidaten an einem Ziel, während die Quelle bestehen bleibt; angefordert wird dies mit cp.
cp memo.txt stored/ erstellt stored/memo.txt, wenn stored existiert, und lässt das ursprüngliche Memo an seinem Ort.
Kurzhilfe
Die Kurzhilfe ist eine kurze Aufruf- und Optionsübersicht eines Programms, die häufig über die lange GNU-Option --help bereitgestellt wird.
Verwende mkdir --help, um die Option zum Erstellen übergeordneter Verzeichnisse zu finden, ohne die vollständige Handbuchseite zu durchsuchen.

L

Langes Listenformat
Das lange Listenformat ist die mit 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
Ein literales Muster ist Mustertext, der unverändert an einen Befehl übergeben wird, etwa weil Anführungszeichen seine Platzhalter geschützt haben.
echo "*.txt" gibt den Stern und die Endung aus, selbst wenn das Verzeichnis Dateien enthält, die darauf passen würden.
Locale
Eine Locale ist ein Satz von Sprach- und Regionseinstellungen, der Programmmeldungen, Datumsformatierung, Sortierreihenfolge und Zeichenklassen beeinflussen kann.
Zwei Systeme können groß- und kleingeschriebene Dateinamen unterschiedlich sortieren, weil sich ihre Locale-Einstellungen unterscheiden.

M

Menschenlesbare Größenangabe
Eine menschenlesbare Größenangabe verwendet kompakte Einheiten wie K, M und G statt einer langen Bytezahl, wie sie mit GNU ls -h angefordert wird.
Kombiniere -h mit -l: Die erste Option formatiert Größen, während die zweite die Spalte bereitstellt, die sie anzeigt.
Metadaten
Metadaten sind Informationen über eine Datei oder ein Verzeichnis, etwa Typ, Eigentümer- und Gruppenzuordnung, Rechte, Größe und Zeitstempel, und nicht deren Inhalt.
Eine lange Auflistung kann zeigen, wann ein Bericht geändert wurde, ohne den eigentlichen Text des Berichts anzuzeigen.
mkdir
mkdir ist der Befehl zum Erstellen von Verzeichnissen; seine Option -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
Eine Option ist ein Argument, das das Verhalten eines Befehls ändert und üblicherweise als Bindestrich mit Buchstaben oder als Name mit zwei Bindestrichen geschrieben wird.
Die Option -l weist ls an, eine lange Auflistung mit Details statt nur Namen anzuzeigen.

P

Pager
Ein Pager zeigt Text jeweils bildschirmweise an und bietet Tasten zum Navigieren und Suchen in Dokumenten, die länger als das Terminalfenster sind.
Im üblichen Pager von man kannst du mit /size suchen, mit n zwischen Treffern wechseln und mit q das Programm beenden.
Paketdokumentation
Paketdokumentation sind zusätzliche Informationen, die mit Software installiert werden und oft unter /usr/share/doc/ in einem Verzeichnis für das jeweilige Paket liegen.
Eine Auflistung von /usr/share/doc/bash kann README-Dateien, Änderungsprotokolle, Lizenztext und Beispiele zeigen.
PATH
PATH ist eine Umgebungsvariable, die durch Doppelpunkte getrennte Verzeichnisse auflistet. Diese werden von links nach rechts nach einem externen Befehl durchsucht, dessen Name kein / enthält.
Das Anhängen von :$HOME/bin erhält frühere Verzeichnisse und ihren Vorrang, wenn ein Programmname zweimal vorkommt.
Pfadkomponente
Eine Pfadkomponente ist ein einzelner Name zwischen Schrägstrichen in einem Pfad; gewöhnliche Dateinamenplatzhalter passen innerhalb einer Komponente, ohne / zu überschreiten.
data/*.csv wählt direkt innerhalb von data aus; passende Namen unter data/old werden nicht ebenfalls ausgewählt.
Platzhalter
Ein Platzhalter ist ein Musterzeichen, das auf eine Zeichenklasse oder Zeichenfolge passt, etwa * für eine Folge oder ? für ein Zeichen.
Das Muster part?.txt akzeptiert part4.txt, schließt aber einen Namen mit zwei Ziffern an der Stelle des Fragezeichens aus.

Q

Quelle
Eine Quelle ist die Datei oder das Verzeichnis, aus der oder dem ein Vorgang Daten oder ein Objekt übernimmt; in einfachen cp- und mv-Formen steht sie vor dem Ziel.
In cp notes.txt archive/ liefert notes.txt die Daten und archive/ bezeichnet den Ort für die Kopie.
Quoting
Quoting schützt Zeichen vor bestimmten Interpretationen durch die Shell, sodass Leerzeichen oder Sonderzeichen innerhalb eines Arguments erhalten bleiben können.
Die Anführungszeichen in ls "Work Plan.txt" halten das Leerzeichen im Dateinamen, statt ihn in zwei Wörter aufzuteilen.

R

Rekursive Auflistung
Eine rekursive Auflistung durchläuft ein Verzeichnis und seine Unterverzeichnisse und zeigt die Einträge jedes Ortes unter einer separaten Pfadüberschrift.
ls -R projects zeigt projects: und danach Überschriften für Unterverzeichnisse wie projects/website:.
Rekursives Löschen
Rekursives Löschen entfernt ein Verzeichnis und seinen Inhalt einschließlich verschachtelter Verzeichnisse, wie mit GNU rm -r angefordert.
Verwende rmdir old-cache, wenn ein unerwarteter Untereintrag das Aufräumen stoppen soll, statt zusammen mit seinem übergeordneten Verzeichnis gelöscht zu werden.
Relativer Pfad
Ein relativer Pfad beschreibt einen Ort vom Arbeitsverzeichnis aus und beginnt nicht mit dem Schrägstrich, der einen absoluten Pfad beim Wurzelverzeichnis verankert.
Von /home/sam/projects aus führt ../photos durch einen Schritt nach oben und einen nach unten zum Verzeichnis photos von sam.
rm
rm ist der Befehl zum Entfernen von Dateien und bietet eine rekursive Option für Verzeichnisbäume; er verschiebt Ziele nicht in einen Papierkorb.
rm -i old.txt fordert vor dem Entfernen dieser Datei eine Bestätigung an, sodass du die Aktion ablehnen kannst.
rmdir
rmdir ist ein Befehl zum Entfernen leerer Verzeichnisse, der ein Ziel ablehnt, wenn es gewöhnliche oder versteckte Dateieinträge enthält.
Wenn rmdir cache einen nicht leeren Inhalt meldet, einfaches ls aber leer aussieht, prüfe versteckte Einträge mit ls -A cache.
Root-Konto
Das Root-Konto ist das Administratorkonto des Systems mit weitreichenden Rechten zum Ändern von Systemdateien und Einstellungen.
Eine Eingabeaufforderung, die mit # endet, kennzeichnet üblicherweise root; für gewöhnliche Arbeiten solltest du ein reguläres Konto verwenden.
Rückwärtssuche
Eine Rückwärtssuche durchsucht den Befehlsverlauf rückwärts nach Text. In Bash verwendest du Strg+R und wiederholst die Tastenkombination, um ältere Treffer zu erreichen.
Die Eingabe eines Pfadausschnitts nach Strg+R kann einen langen Befehl finden, selbst wenn du dich nicht an sein erstes Wort erinnerst.

S

Shell
Eine Shell ist ein Programm, das eingegebene Befehle interpretiert und die angeforderte Arbeit mit eigenen Funktionen oder anderen Programmen startet.
Bash interpretiert pwd in einer Terminalsitzung und gibt das Verzeichnis aus, in dem die Shell arbeitet.
Shellvariable
Eine Shellvariable ist ein benannter Wert, den eine Shell hält; eine einfache, nicht exportierte Zuweisung gibt diesen Wert nicht an neu gestartete Programme weiter.
Das bloße Setzen von city=Lisbon stellt diesen Wert einer neuen Kind-Bash nicht bereit, sofern city nicht bereits exportiert ist.
Startdatei
Eine Startdatei enthält Shell-Einstellungen, die beim Start einer Shell gelesen werden. Für Login-Shells und interaktive Bash-Shells, die keine Login-Shells sind, werden unterschiedliche Dateien verwendet.
Ein Export in ~/.bashrc wird von einer neuen interaktiven Bash gelesen, die keine Login-Shell ist; ein Login-Profil kann diese Datei ebenfalls laden.
Suchreihenfolge
Die Suchreihenfolge legt fest, welche passende Programmdatei ausgewählt wird; bei einer neuen Suche haben frühere PATH-Verzeichnisse Vorrang.
Stellst du dein persönliches bin-Verzeichnis an den Anfang, kann dein Programm vor einer gleichnamigen Datei in /usr/bin ausgewählt werden.

T

Terminal
Ein Terminal ist die Schnittstelle, die eine Textsitzung anzeigt und Tastatureingaben annimmt, oft als Fenster, in dem eine Shell läuft.
Das Öffnen eines zweiten Terminals kann eine separate Shell mit eigenem Arbeitsverzeichnis und Befehlsverlauf starten.
Tilde-Expansion
Die Tilde-Expansion ersetzt ein ungeschütztes ~ 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 ist ein Befehl, der Zeitstempel vorhandener Dateien aktualisiert oder leere Dateien erstellt, wenn die angegebenen Namen nicht existieren.
touch checklist.txt erhält den Text einer vorhandenen Checkliste; der Befehl leert die Datei nicht, bevor er ihre Zeitstempel aktualisiert.

U

Umgebung
Die Umgebung ist die Menge benannter Werte, die ein Prozess an von ihm gestartete Programme weitergibt, sodass diese beim Start Einstellungen erhalten.
Ein neu gestartetes Programm kann HOME aus seiner Umgebung lesen, um das Home-Verzeichnis des Kontos zu finden.
Umgebungsvariable
Eine Umgebungsvariable ist ein benannter Wert, der neu gestarteten Kindprogrammen zur Verfügung gestellt wird, häufig indem eine Shellvariable mit 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
Die Unterscheidung zwischen Groß- und Kleinschreibung bedeutet, dass Groß- und Kleinbuchstaben beim Abgleichen von Namen verschieden sind, sodass die Schreibweise das ausgewählte Objekt ändern kann.
Die Namen Plans und plans können verschiedene Verzeichnisse bezeichnen; die Vervollständigung hilft, die richtige Groß- und Kleinschreibung beizubehalten.

Ü

Übergeordnetes Verzeichnis
Ein übergeordnetes Verzeichnis ist das Verzeichnis eine Ebene über einem anderen in einem Pfad; der besondere Name .. verweist auf dieses übergeordnete Verzeichnis.
Von /home/sam/projects/website aus führt ein .. nach projects, während zwei zum Home-Verzeichnis von sam führen.
Überschreiben
Beim Überschreiben wird der vorhandene Inhalt einer Zieldatei während eines Vorgangs ersetzt; einfaches cp oder mv kann dies ohne Nachfrage tun.
Verwende 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
Eine Variable ist ein benannter Wert, den die Shell verwendet. Er wird mit name=value zugewiesen und durch Expansion wie $name ausgelesen.
Nach topic=linux gibt echo "$topic" den gespeicherten Wert aus, während unset topic die Variable entfernt.
Variablenexpansion
Die Variablenexpansion ersetzt einen Namen mit vorangestelltem Dollarzeichen durch seinen Wert; geschweifte Klammern können den Namen abgrenzen und doppelte Anführungszeichen enthaltene Leerzeichen erhalten.
echo "${city}_trip" hängt Text an den Wert von city an, während $city_trip eine andere Variable auslesen würde.
Verlaufsdatei
Eine Verlaufsdatei speichert den Befehlsverlauf zwischen Sitzungen, normalerweise unter ~/.bash_history; ihr Pfad steht in HISTFILE.
Zwei offene Terminals können unterschiedliche aktive Listen zeigen, obwohl sie normalerweise in dieselbe Verlaufsdatei speichern.
Verlaufsexpansion
Die Verlaufsexpansion schreibt Ausdrücke mit Ausrufezeichen vor der Ausführung in früheren Befehlstext um, etwa !! für den vorhergehenden Befehl.
Unmittelbar nach mkdir drafts verwendet cd !$ das letzte Argument erneut, aber ein anderer Befehl dazwischen ändert es.
Verschieben
Das Verschieben ändert den Namen oder Speicherort einer Datei oder eines Verzeichnisses. Dazu dient 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
Ein versteckter Eintrag ist eine Datei oder ein Verzeichnis, dessen Name mit einem Punkt beginnt, sodass die gewöhnliche Ausgabe von ls ihn standardmäßig auslässt.
Die Konfigurationsdatei .bashrc erscheint mit ls -a, obwohl eine einfache Auflistung des Home-Verzeichnisses sie überspringt.
Verzeichnis
Ein Verzeichnis ist ein Objekt, das benannte Einträge für Dateien und andere Verzeichnisse enthält; eine grafische Dateiverwaltung nennt es üblicherweise Ordner.
Das Verzeichnis /home/sam/projects kann sowohl notes.txt als auch ein Unterverzeichnis namens website enthalten.
Vorschau der Expansion
Eine Vorschau der Expansion zeigt die von einem Muster ausgewählten Namen, bevor ein Vorgang sie verändert, und hilft so, unerwartet weit gefasste Ziele zu erkennen.
ls -d -- draft* zeigt die passenden Einträge selbst, sodass passende Verzeichnisse als Ziele sichtbar sind.

W

whatis
whatis ist ein Abfragebefehl, der die indexierte einzeilige Beschreibung eines bekannten Handbuchseitennamens ausgibt, statt den vollständigen Text zu öffnen.
whatis ls gibt eine kurze Zweckbeschreibung; man ls liefert die ausführlichere Referenz, wenn mehr Details gebraucht werden.
Wurzelverzeichnis
Das Wurzelverzeichnis, geschrieben /, ist der Ausgangspunkt des einzigen Linux-Dateisystembaums und liegt oberhalb jedes anderen absoluten Pfades.
Der Pfad /etc beginnt beim Wurzelverzeichnis; er bezeichnet kein Unterverzeichnis deines aktuellen Arbeitsverzeichnisses.

Z

Zeichenklasse
Eine Zeichenklasse bezeichnet eine Gruppe von Zeichen anhand der Regeln der Locale, etwa [[:digit:]] für Ziffern oder [[:lower:]] für Kleinbuchstaben.
Eine Klasse für Kleinbuchstaben kann abhängig von der aktuellen Locale weitere Buchstaben außer den ASCII-Buchstaben a bis z enthalten.
Zeitstempel
Ein Zeitstempel hält eine Zeit fest, die mit einem Dateiereignis wie einer Inhaltsänderung oder einem Zugriff verbunden ist; Befehle können diese Werte untersuchen oder aktualisieren.
touch -d 2025-01-31 old.txt fordert für die Aktualisierung ein gewähltes Datum an, statt die aktuelle Zeit zu verwenden.
Ziel
Ein Ziel ist der Zielort oder neue Name eines Vorgangs; sein vorhandener Typ bestimmt mit, welches Ergebnis das Kopieren oder Verschieben hat.
Fehlt archive, verwendet mv notes.txt archive archive als neuen Dateinamen, statt ein Verzeichnis zu erstellen.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten