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.
echo [OPTIONEN] [ARGUMENTE]-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
echo "Hallo Welt"
echo -n "Hallo Welt"Hallo Welt
Hallo Welt$
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.
echo "Zeile 1\nZeile 2"
echo -e "Zeile 1\nZeile 2"Zeile 1\nZeile 2
Zeile 1
Zeile 2
Ohne die -e Option werden die Escape-Sequenzen als normale Zeichen behandelt. Mit der Option werden sie interpretiert und entsprechend umgewandelt.
echo -e "Name:\tHans\nAlter:\t42\nBeruf:\tEntwickler"Name: Hans
Alter: 42
Beruf: Entwickler
Option -E
Diese Option deaktiviert explizit die Interpretation von Backslash-Escape-Sequenzen (Standardverhalten).
echo -e "Zeile 1\nZeile 2"
echo -E "Zeile 1\nZeile 2"Zeile 1
Zeile 2
Zeile 1\nZeile 2Escape-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.
echo -e "Warnning\a"\b Backspace
Funktion: Löscht das vorherige Zeichen.
Anwendungsfälle
- Textkorrektur in der Ausgabe
- Einfache Animationen im Terminal
echo -e "Linus\bx"Linux
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.
echo -e "Falsche\b\b\b\b\b\b\bRichtige Eingabe"Rightige Eingabe
\c Suppress further output
Funktion: Unterdrückt jede weitere Ausgabe, auch einen Zeilenumbruch am Ende.
Anwendungfälle
- Kontrolle über den exakten Ausgabeumfang
- Alternative zur
-nOption, wenn mitten im Text abgebrochen werden soll.
echo -e "Nur dieser Teil wird angezeigt\cDieser Teil nicht mehr"Nur dieser Teil wird angezeigt
\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
echo -e "\e[31mRot\e[0m Normal"“Rot” in roter Farbe, gefolgt von “Normal” in Standardfarbe.

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.

\f Form Feed (Seitenvorschub)
Funktion: Fügt einen Seitenvorschub ein.
Anwendungsfälle
- Formatierung von Ausgaben für Drucker
- Strukturierung von Textdateien
echo -e "Seite 1\fSeite 2"Seite 1
Seite 2
\n New line
Funktion: Fügt einen Zeilenumbruch ein.
echo -e "Zeile 1\nZeile 2\nZeile 3"Zeile 1
Zeile 2
Zeile 3
\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
echo -e "Alte Nachricht\rNeue"Neue Nachricht
\t Horizontal tab
Funktion: Fügt einen horizontalen Tabulator ein.
echo -e "Name:\tMax\tMustermann"Name: Max Mustermann
\v Vertical tab
Funktion: Fügt einen vertikalen Tabulator ein.
echo -e "Oben\vUnten"Oben
Unten
\\ 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
echo -e "C:\\Program Files\\Application"C:\Program Files\Application
\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
echo -e "ASCII-Zeichen: \0101"ASCII-Zeichen: A
\xHH Hexadecimal value
Funktion: Fügt das Zeichen mit dem hexadezimalen Wert HH ein.
echo -e "Hexadezimales Zeichen: \x41"Hexadezimales Zeichen: A
\uHHHH Unicode character
Funktion: Gibt das Unicode-Zeichen mit dem hexadezimalen Wert HHHH aus.
echo -e "Euro-Symbol: \u20AC"Euro-Symbol: €
echo -e "Griechischer Buchstabe Pi: \u03C0"Griechischer Buchstabe Pi: π
\UHHHHHHHH Extended unicode character
Funktion: Gibt das Unicode-Zeichen mit dem erweiterten hexadezimalen Wert HHHHHHHH aus.
echo -e "Komplexes Symbol: \U0001F600"Komplexes Symbol: 😀
Anwendungsfälle & Beispiele
Der echo Befehl findet in vielen Situationen Anwendung.
Anzeige von Meldungen und Informationen
echo "Das Backup wurde erfolgreich abgeschlossen."Das Backup wurde erfolgreich abgeschlossen.
Anzeigen von Variablenwerten
name="Max Mustermann"
echo "Hallo, $name!"Max Mustermann
Schreiben in Dateien
echo "Dies ist eine Textzeile" > datei.txt
echo "Dies ist eine weitere Zeile" >> datei.txtDie 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.
echo "Aktuelles Datum: $(date)"
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
- echo – POSIX specification (man7.org) — POSIX-Standard-konforme Beschreibung
- GNU Coreutils: echo invocation — Ausführliche Dokumentation mit allen Optionen
- Why is printf better than echo? – Unix StackExchange — Portable Shell-Programmierung
- Arch Wiki: Core utilities — Praxisnahe Tipps und Tricks
Verwandte Artikel
- Linux Shell — Grundlagen der Kommandozeile
- Linux Variablen — Shell- und Umgebungsvariablen
- Linux Quoting — Anführungszeichen und Escaping
- cat – Dateien anzeigen und verbinden — Textdateien ausgeben mit cat
- cut – Spalten aus Text extrahieren — Gezielte Textausschnitte mit cut