Das echo Kommando ist eines der grundlegendsten und am häufigsten verwendeten Werkzeuge in Unix-ähnlichen Betriebssystemen wie Linux. Es wird hauptsächlich dazu verwendet, Text oder den Wert von Variablen auf die Standardausgabe (in der Regel das Terminal) zu schreiben.

Syntax

Die allgemeine Syntax des echo Kommandos sieht folgendermaßen aus.

Bash
echo [OPTIONEN] [ARGUMENTE]
Parameter
-n

Unterdrückt den abschließenden Zeilenumbruch, sodass die Ausgabe nicht automatisch in die nächste Zeile springt.

-e

Aktiviert die Interpretation von Backslash-Sequenzen, was es ermöglicht, spezielle Zeichen durch bestimmte Escape-Sequenzen darzustellen.

-E

Deaktiviert die Interpretation von Backslash-Sequenzen (dies ist die Standardverhalten von echo).

Beispiele

Option -n

Bash Beispiel
echo "Hallo Welt"
echo -n "Hallo Welt"
Output
Hallo Welt
Hallo Welt$

echo - Option -n Beispiel

Im zweiten Beispiel wird kein Zeilenumbruch angehängt, sodass die nächste Eingabeaufforderung direkt nach dem Text erscheint.

Wird oft für folgende Dinge verwendet:

  • Zusammensetzen von mehrerer Ausgaben in einer Zeile
  • Animation von Fortschrittsanzeigen im Terminal

Option -e

Diese Option aktiviert die Interpretation von Backslash-Escape-Sequenzen.

Bash Beispiel
echo "Zeile 1\nZeile 2"
echo -e "Zeile 1\nZeile 2"
Output
Zeile 1\nZeile 2
Zeile 1
Zeile 2

echo - Option -e Beispiel

Ohne die -e Option werden die Escape-Sequenzen als normale Zeichen behandelt. Mit der Option werden sie interpretiert und entsprechend umgewandelt.

Bash Beispiel
echo -e "Name:\tHans\nAlter:\t42\nBeruf:\tEntwickler"
Output
Name:   Hans
Alter:  42
Beruf:  Entwickler

echo - Option -e Beispiel

Option -E

Diese Option deaktiviert explizit die Interpretation von Backslash-Escape-Sequenzen (Standardverhalten).

Bash Beispiel
echo -e "Zeile 1\nZeile 2"
echo -E "Zeile 1\nZeile 2"
Output
Zeile 1
Zeile 2
Zeile 1\nZeile 2

Escape-Sequenzen

Wenn die Option -e aktiviert ist, werden die folgenden Escape-Sequenzen erkannt.

  • \\: Backslash
  • \a: Alarmton (BEL)
  • \b: Rückschritt (Backspace)
  • \c: Beendet die Ausgabe, es erfolgt keine weitere Ausgabe
  • \e: Escape-Zeichen
  • \f: Seitenvorschub (Form Feed)
  • \n: Neue Zeile
  • \r: Wagenrücklauf (Carriage Return)
  • \t: Horizontaler Tabulator
  • \v: Vertikaler Tabulator
  • \0NNN: Byte mit oktalem Wert NNN (1 bis 3 Ziffern)
  • \xHH: Byte mit hexadezimalem Wert HH (1 bis 2 Ziffern)
  • \uHHHH: Unicode-Zeichen mit hexadezimalem Wert HHHH (1 bis 4 Ziffern)
  • \UHHHHHHHH: Unicode-Zeichen mit hexadezimalem Wert HHHHHHHH (1 bis 8 Ziffern)

\a Alert/Bell

Funktion: Erzeugt einen Signaltop (Bell). Bei der Ausführung wird ein akustisches Signal ausgegeben. Hier soll darauf geachtet werden, die Bell-Option in dem jeweiligen Terminal oder im System konfiguriert ist.

Bash Beispiel
echo -e "Warnning\a"

\b Backspace

Funktion: Löscht das vorherige Zeichen.

Anwendungsfälle

  • Textkorrektur in der Ausgabe
  • Einfache Animationen im Terminal
Bash Beispiel
echo -e "Linus\bx"
Output
Linux

echo - Escape-Sequenz b - Beispiel

Das \b bewirkt, dass der Cursor um eine Position zurückgeht, wodurch das letzte x über das s geschrieben wird.

Im nächsten Beispiel wird diese Sequenz so oft verwendet, um ein Wort durch das andere zu überschreiben.

Bash Beispiel
echo -e "Falsche\b\b\b\b\b\b\bRichtige Eingabe"
Output
Rightige Eingabe

echo - Escape-Sequenz b - Beispiel

\c Suppress further output

Funktion: Unterdrückt jede weitere Ausgabe, auch einen Zeilenumbruch am Ende.

Anwendungfälle

  • Kontrolle über den exakten Ausgabeumfang
  • Alternative zur -n Option, wenn mitten im Text abgebrochen werden soll.
Bash Beispiel
echo -e "Nur dieser Teil wird angezeigt\cDieser Teil nicht mehr"
Output
Nur dieser Teil wird angezeigt

echo - Escape-Sequenz c - Beispiel

\e oder \E (Escape Character)

Funktion: Fügt das Escape-Zeichen (ASCII 27) ein.

Anwendungsfälle

  • Farbige Textausgabe im Terminal
  • Textformatierung (fett, unterstrichen, etc.)
  • Positionierung des Cursors im Terminal
Bash Beispiel
echo -e "\e[31mRot\e[0m Normal"

“Rot” in roter Farbe, gefolgt von “Normal” in Standardfarbe.

echo - Escape-Sequenz e - Beispiel

Bash Beispiel
echo -e "\e[1;33mGelb und fett\e[0m und normal"

Hier wird “Gelb und fett” in gelber und fetter Schrift, während “und normal” in Standardschrift ausgegeben.

echo - Escape-Sequenz e - Beispiel mit fetter Schrift

\f Form Feed (Seitenvorschub)

Funktion: Fügt einen Seitenvorschub ein.

Anwendungsfälle

  • Formatierung von Ausgaben für Drucker
  • Strukturierung von Textdateien
Bash Beispiel
echo -e "Seite 1\fSeite 2"
Output
Seite 1
   Seite 2

echo - Escape-Sequenz f - Beispiel Seitenvorschub

\n New line

Funktion: Fügt einen Zeilenumbruch ein.

Bash Beispiel
echo -e "Zeile 1\nZeile 2\nZeile 3"
Output
Zeile 1
Zeile 2
Zeile 3

echo - Escape-Sequenz n - Beispiel Zeilenumbruch

\r Carriage return

Funktion: Setzt den Cursor an den Anfang der aktuellen Zeile zurück.

Anwendungsfälle

  • Aktualisierung von Informationen in derselben Zeile
  • Fortschrittsanzeigen
  • Countdown-Timer
Bash Beispiel
echo -e "Alte Nachricht\rNeue"
Output
Neue Nachricht

echo - Escape-Sequenz r - Beispiel

\t Horizontal tab

Funktion: Fügt einen horizontalen Tabulator ein.

Bash Beispiel
echo -e "Name:\tMax\tMustermann"
Output
Name:   Max     Mustermann

echo - Escape-Sequenz t - Beispiel

\v Vertical tab

Funktion: Fügt einen vertikalen Tabulator ein.

Bash Beispiel
echo -e "Oben\vUnten"
Output
Oben
    Unten

echo - Escape-Sequenz v - Beispiel

\\ Backslash

Funktion: Fügt einen Backslash ein.

Anwendungfälle

  • Escapen von Backslash-Zeichen in Ausgaben
  • Darstellung von regulären Ausdrücken
  • Anzeige von Pfaden in Windows-Notation
Bash Beispiel
echo -e "C:\\Program Files\\Application"
Output
C:\Program Files\Application

echo - Escape-Sequenz Backslash - Beispiel

\0nnn Octal value

Funktion: Fügt das Zeichen mit einem oktalen ASCII-Code NNN ein.

Anwendungsfälle

  • Ausgabe von speziellen Zeichen, die nicht direkt eingegeben werden können
  • Arbeit mit binären Daten
  • Steuerung des Terminals über Steuerzeichen
Bash Beispiel
echo -e "ASCII-Zeichen: \0101"
Output
ASCII-Zeichen: A

echo - Escape-Sequenz Octal - Beispiel

\xHH Hexadecimal value

Funktion: Fügt das Zeichen mit dem hexadezimalen Wert HH ein.

Bash Beispiel
echo -e "Hexadezimales Zeichen: \x41"
Output
Hexadezimales Zeichen: A

echo - Escape-Sequenz Hexadecimal - Beispiel

\uHHHH Unicode character

Funktion: Gibt das Unicode-Zeichen mit dem hexadezimalen Wert HHHH aus.

Bash Beispiel
echo -e "Euro-Symbol: \u20AC"
Output
Euro-Symbol: €

echo - Escape-Sequenz Hexadecimal - Beispiel

Bash Beispiel
echo -e "Griechischer Buchstabe Pi: \u03C0"
Output
Griechischer Buchstabe Pi: π

echo - Escape-Sequenz Hexadecimal - Beispiel 2

\UHHHHHHHH Extended unicode character

Funktion: Gibt das Unicode-Zeichen mit dem erweiterten hexadezimalen Wert HHHHHHHH aus.

Bash Beispiel
echo -e "Komplexes Symbol: \U0001F600"
Output
Komplexes Symbol: 😀

echo - Escape-Sequenz Extended Unicode - Beispiel

Anwendungsfälle & Beispiele

Der echo Befehl findet in vielen Situationen Anwendung.

Anzeige von Meldungen und Informationen

Bash Beispiel
echo "Das Backup wurde erfolgreich abgeschlossen."
Output
Das Backup wurde erfolgreich abgeschlossen.

echo - Direkte Ausgabe - Beispiel

Anzeigen von Variablenwerten

Bash Beispiel
name="Max Mustermann"
echo "Hallo, $name!"
Output
Max Mustermann

echo - Ausgabe von Variablenwerten - Beispiel

Schreiben in Dateien

Bash Beispiel
echo "Dies ist eine Textzeile" > datei.txt
echo "Dies ist eine weitere Zeile" >> datei.txt

Die erste Zeile schreibt den Satz “Dies ist eine Textzeile” in die Datei datei.txt. Wenn diese Datei nicht vorhanden ist, wird sie erzeugt.

Die zweite Zeile hängt den Satz an bzw. fügt die Zeile “Dies ist eine weitere Zeile” in dieselbe datei.txt Datei.

Ausgabe von Kommandoergebnissen

Mit echo kann man die Ergebnisse eines anderen Kommandos, welche nach der Abfertigung in die Standard-Ausgabe (stdout) umgeleitet werden, ausgeben.

Bash Beispiel
echo "Aktuelles Datum: $(date)"

echo - Ausgabe von Kommandoergebnissen - Beispiel

Häufige Stolperfallen

echo verhält sich in Bash und Zsh unterschiedlich.

In Bash gibt echo -e “Zeile 1\nZeile 2” zwei Zeilen aus, in Zsh ist -e nicht nötig — Zsh interpretiert Backslash-Sequenzen standardmässig. Dash (als /bin/sh auf Debian) kennt ebenfalls kein -e. In Skripten, die portabel sein sollen, verwendest du besser printf statt echo: printf “Zeile 1\nZeile 2\n” verhält sich auf allen Shells identisch und ist zudem sicherer bei Variablen, die mit - beginnen.

echo $unbekannte_variable gibt nichts aus — und das ist korrekt.

Anders als in vielen Programmiersprachen ist eine nicht gesetzte Variable in der Shell kein Fehler, sondern einfach leer. echo $TIPPO gibt eine leere Zeile aus, ohne Warnung. Das macht die Fehlersuche in Skripten schwierig, weil Tippfehler in Variablennamen stillschweigend ignoriert werden. Mit set -u (oder set -o nounset) am Skriptanfang lässt du die Shell bei nicht gesetzten Variablen abbrechen — ein Muss für jedes ernsthafte Skript.

echo "text" > datei überschreibt ohne Rückfrage.

Der Umleitungsoperator > überschreibt eine bestehende Datei kommentarlos. Gerade bei wichtigen Konfigurationsdateien oder Logs ist das gefährlich. Mit set -o noclobber verhinderst du das Überschreiben — die Shell verweigert dann > mit cannot overwrite existing file. Wenn du bewusst überschreiben willst, verwendest du >|. Zum Anhängen ist >> immer sicher, da es bestehende Inhalte nie löscht.

echo * gibt nicht das Sternchen aus, sondern alle Dateinamen.

Die Shell expandiert * (und andere Wildcards) bevor echo den Text sieht. echo * listet also alle Dateien im aktuellen Verzeichnis — das ist dasselbe wie ls ohne Optionen. Wenn du ein literales Sternchen ausgeben willst, musst du es escapen oder in Anführungszeichen setzen: echo ’*’ oder echo *. Das gilt für alle Shell-Sonderzeichen: $, ?, ~, {}, &, |, ;.

echo mit -e und unbekannten Variablen — ein Sicherheitsrisiko.

echo -e “$benutzereingabe” kann gefährlich sein: Enthält die Variable Escape-Sequenzen wie \x00 oder \e[2J (Bildschirm löschen), werden diese interpretiert. Ein Angreifer könnte so unerwünschte Terminal-Steuerzeichen einschleusen. Verwende printf ‘%s\n’ “$benutzereingabe” — das interpretiert keine Sequenzen und ist die sicherere Wahl für fremde oder ungeprüfte Eingaben.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Textverarbeitung

Zur Übersicht