Verwendung des Echo-Befehls unter Linux
- Dave McKay
@TheGurkha
- 29. Oktober 2019, 8:00 Uhr EDT
Die echo
eignet sich perfekt zum Schreiben von formatiertem Text in das Terminalfenster. Und es muss kein statischer Text sein. Es kann Shell-Variablen, Dateinamen und Verzeichnisse enthalten. Sie können Echo auch umleiten, um Textdateien und Protokolldateien zu erstellen. Befolgen Sie diese einfache Anleitung, um herauszufinden, wie.
Echo wiederholt, was Sie ihm sagen sollen
Zeus verließ gern den Olymp, um sich mit wunderschönen Nymphen zusammenzutun. Auf einer Reise sagte er einer Bergnymphe namens Echo, sie solle seiner Frau Hera auf die Nerven gehen, wenn sie ihm folge. Hera suchte Zeus und Echo tat alles, um Hera im Gespräch zu halten. Schließlich verlor Hera die Beherrschung und verfluchte das arme Echo, so dass sie nur die letzten Worte wiederholte, die jemand anderes gesagt hatte. Was Hera Zeus angetan hat, als sie ihn eingeholt hat, ist jedermanns Vermutung.
Und das ist so ziemlich echo
das Los im Leben. Es wiederholt, was gesagt wurde, um zu wiederholen. Das ist eine einfache, aber wichtige Funktion. Ohne echo
könnten wir beispielsweise keine sichtbare Ausgabe von Shell-Skripten erhalten.
Ohne beladen mit Bei einer Vielzahl von Schnickschnack besteht eine gute Chance, dass echo
einige Funktionen hat, die Sie nicht kannten oder die Sie vergessen hatten.
Echo? echo!
Die meisten Linux-Systeme bieten zwei Versionen von echo
. In die Bash-Shell ist eine eigene echo
integriert, und es gibt auch eine ausführbare Binärversion von echo
.
Wir können die zwei verschiedenen Versionen mit den folgenden Befehlen anzeigen:
type echo
whereis echo
Die type
gibt an, ob der Befehl, den wir als Argument an ihn übergeben, eine integrierte Shell, eine ausführbare Binärdatei, ein Alias oder eine Funktion ist. Es wird uns berichtet, dass echo
eine eingebaute Shell ist.
Sobald eine Antwort gefunden wurde, type
sucht nicht mehr nach weiteren Übereinstimmungen. Es sagt uns also nicht, ob andere Befehle mit demselben Namen im System vorhanden sind. Aber es sagt uns, welches es zuerst findet. Und das ist derjenige, der standardmäßig verwendet wird, wenn wir diesen Befehl ausgeben.
Der Befehl whereis
sucht nach der ausführbaren Binärdatei, dem Quellcode und der Manpage für Den Befehl übergeben wir ihm als Befehlszeilenparameter. Shell-Builds werden nicht gesucht, da sie keine separate ausführbare Binärdatei haben. Sie sind ein integraler Bestandteil der ausführbaren Bash-Datei.
Der Befehl whereis
gibt an, dass echo
eine ausführbare Binärdatei ist befindet sich im Verzeichnis /bin
.
Um diese Version von echo
zu verwenden, müssen Sie sie explizit durch Bereitstellen aufrufen Der Pfad zur ausführbaren Datei in der Befehlszeile:
/bin/echo --version
Die integrierte Shell weiß nicht, was die --version
Befehlszeilenargument ist, es wiederholt es nur im Terminalfenster:
echo --version
Die hier gezeigten Beispiele verwenden alle die Standardeinstellung Version von echo
in der Bash-Shell.
Schreiben von Text in das Terminal
Zum Schreiben einer einfachen Textzeichenfolge in das Terminalfenster Geben Sie echo
und die Zeichenfolge ein, die angezeigt werden soll:
echo My name is Dave.
Der Text wird für uns wiederholt. Beim Experimentieren werden Sie jedoch bald feststellen, dass die Dinge etwas komplizierter werden können. Sehen Sie sich dieses Beispiel an:
echo My name is Dave and I"m a geek.
Das Terminalfenster zeigt ein >
-Zeichen an und sitzt da und wartet. Strg + C bringt Sie zur Eingabeaufforderung zurück. Was ist dort passiert?
Das einfache Anführungszeichen oder Apostroph im Wort „Ich bin“ verwirrt echo
. Dieses einfache Anführungszeichen wurde als Beginn eines zitierten Abschnitts interpretiert echo
wartete auf weitere Eingaben. Da erwartet wurde, dass weitere Eingaben das fehlende einfache Anführungszeichen enthalten, auf das gewartet wurde.
Um ein einfaches Anführungszeichen in eine Zeichenfolge aufzunehmen, besteht die einfachste Lösung darin, die gesamte Zeichenfolge in doppelte Anführungszeichen zu setzen:
echo "My name is Dave and I"m a geek."
Umschließen Ihres Textes In doppelten Anführungszeichen ist dies ein guter allgemeiner Rat. In Skripten werden die Parameter, die Sie an echo
übergeben, sauber abgegrenzt. Dies erleichtert das Lesen und Debuggen von Skripten erheblich.
Was ist, wenn Sie ein doppeltes Anführungszeichen in Ihre Textzeichenfolge aufnehmen möchten?Das ist einfach, setzen Sie einfach einen Backslash \
vor das doppelte Anführungszeichen (ohne Leerzeichen dazwischen).
echo "My name is Dave and I"m a \"geek.\""
Damit wird das Wort „Geek“ für uns in doppelte Anführungszeichen gesetzt. In Kürze werden weitere Zeichen mit Backslash-Escapezeichen angezeigt.
Verwenden von Variablen mit Echo
Bisher Wir haben vordefinierten Text in das Terminalfenster geschrieben. Wir können Variablen mit echo
verwenden, um eine Ausgabe zu erzeugen, die dynamischer ist und von der Shell Werte für uns eingefügt werden Mit diesem Befehl kann eine einfache Variable definiert werden:
my_name="Dave"
Eine Variable mit dem Namen my_name
wurde erstellt hat den Wert des Textes „Dave“ zugewiesen. Wir können den Variablennamen in den Zeichenfolgen verwenden, die wir an echo
übergeben, und der Wert der Variablen wird in das Terminalfenster geschrieben. Sie müssen ein Dollarzeichen $
vor den Variablennamen setzen, damit echo
weiß, dass es sich um eine Variable handelt.
Es gibt eine Einschränkung. Wenn Sie Ihre Zeichenfolge in einfache Anführungszeichen gesetzt haben, behandelt echo
alles wörtlich. Verwenden Sie doppelte Anführungszeichen, damit der Variablenwert und nicht der Name der Variablen angezeigt wird.
echo "My name is $my_name"
echo "My name is $my_name"
Etwas treffend lohnt es sich zu wiederholen:
- Die Verwendung von einfachen Anführungszeichen führt dazu, dass der Text wörtlich in das Terminalfenster geschrieben wird.
- Die Verwendung von doppelten Anführungszeichen führt zu Die zu interpretierende Variable – auch als Variablenerweiterung bezeichnet – und der Wert werden in das Terminalfenster geschrieben.
RELATED: Arbeiten mit Variablen in Bash
Verwenden von Befehlen mit echo
Wir können einen Befehl mit echo
verwenden und seine Ausgabe in die Zeichenfolge integrieren, die in das Terminalfenster geschrieben wird. Wir müssen das Dollarzeichen $
verwenden, als ob der Befehl eine Variable wäre, und den gesamten Befehl in Klammern setzen.
Wir werden den Befehl date verwenden . Ein Tipp ist, den Befehl alleine zu verwenden, bevor Sie ihn mit echo
verwenden. Auf diese Weise können Sie die Syntax Ihres Befehls identifizieren und korrigieren, bevor Sie sie in den Befehl echo
aufnehmen. Wenn der Befehl echo
dann nicht das tut, was Sie erwarten, wissen Sie, dass das Problem mit der Syntax echo
liegen muss, weil Sie Wir haben die Syntax des Befehls bereits bewiesen.
Versuchen Sie dies also im Terminalfenster:
date +%D
Und zufrieden, dass wir es sind Wenn wir das bekommen, was wir vom Date-Befehl erwarten, integrieren wir ihn in einen echo
-Befehl:
echo "Today"s date is: $(date +%D)"
Beachten Sie, dass sich der Befehl in Klammern befindet und das Dollarzeichen $
unmittelbar vor der ersten Klammer steht.
Formatieren von Text mit Echo
Mit der Option -e
(Backslash-Escape aktivieren) können wir einige Backslash-Escape-Zeichen verwenden, um das Layout des Texts zu ändern. Dies sind die Backslash-Escape-Zeichen, die wir verwenden können:
Lassen Sie uns einige davon verwenden und sehen, was sie tun.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
Der Text wird in eine neue Zeile aufgeteilt, in der wir die Zeichen \n
verwendet haben, und eine Registerkarte wird eingefügt, in der wir die Zeichen \t
verwendet haben.
echo -e "Here\vare\vvertical\vtabs"
Wie bei den \n
neuen Zeilenzeichen wird eine vertikale Registerkarte \v
verschiebt den Text in die Zeile darunter. Im Gegensatz zu den neuen Zeilenzeichen \n
beginnt die vertikale Zeile \v
die neue Zeile jedoch nicht bei Spalte Null. Es wird die aktuelle Spalte verwendet.
Die Rücktaste \b
bewegt den Cursor um ein Zeichen zurück. Wenn mehr Text in das Terminal geschrieben werden soll, überschreibt dieser Text das vorherige Zeichen.
echo -e "123\b4"
Die „3“ wird durch das „überschrieben“. 4 ”.
Das Wagenrücklaufzeichen \r
bewirkt, dass echo
zum Anfang der aktuellen Zeile und zu zurückkehrt Schreiben Sie weiteren Text aus Spalte Null.
echo -e "123\r456"
Die „123“ -Zeichen werden durch die „456“ -Zeichen überschrieben.
Die \a
Alarmzeichen erzeugt einen hörbaren „Piepton“. Es wird der Standard-Alarmton für Ihr aktuelles Thema verwendet.
echo -e "Make a bleep\a"
Die -n
(kein Zeilenumbruch) ist keine Backslash-Escape-Sequenz, wirkt sich jedoch auf die Kosmetik des Textlayouts aus. Wir werden sie daher hier diskutieren. Sie verhindert, dass echo
hinzugefügt wird Eine neue Zeile am Ende des Textes. Die Eingabeaufforderung wird direkt nach dem Text angezeigt, der in das Terminalfenster geschrieben wird.
echo -n "no final newline"
Verwenden von Echo mit Dateien und Verzeichnissen
Sie können echo
als Sortierung verwenden der Version von ls
des armen Mannes. Wenn Sie echo
wie folgt verwenden, gibt es nur wenige Möglichkeiten. Wenn Sie eine Wiedergabetreue oder Feinsteuerung benötigen, sollten Sie ls
und seine zahlreichen Optionen verwenden.
Dieser Befehl listet alle Dateien und auf Verzeichnisse im aktuellen Verzeichnis:
echo *
Dieser Befehl listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, deren Name mit „D“ beginnt:
echo D*
Dieser Befehl listet alle „.desktop“ -Dateien im aktuellen Verzeichnis auf:
echo *.desktop
Ja. Dies spielt nicht mit den Stärken von echo
. Verwenden Sie ls
.
Schreiben in Dateien mit Echo
Wir können die Ausgabe von echo
und erstellen Sie entweder Textdateien oder schreiben Sie in vorhandene Textdateien.
Wenn Sie den Umleitungsoperator >
verwenden, wird die Datei erstellt, wenn sie nicht vorhanden ist. Wenn die Datei vorhanden ist, wird die Ausgabe von echo
am Anfang der Datei hinzugefügt, wobei alle vorherigen Inhalte überschrieben werden.
Wenn wir die >>
, die Datei wird erstellt, wenn sie nicht vorhanden ist. Die Ausgabe von echo
wird am Ende der Datei hinzugefügt und überschreibt keinen vorhandenen Inhalt der Datei.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Mit dem ersten Befehl wird eine neue Datei erstellt und Text eingefügt hinein. Der zweite Befehl fügt am Ende der Datei eine Textzeile hinzu. Der Befehl cat
zeigt den Inhalt der Datei im Terminalfenster an.
Und natürlich können wir Variablen einfügen, um unserer Datei einige nützliche Informationen hinzuzufügen. Wenn es sich bei der Datei um eine Protokolldatei handelt, möchten wir möglicherweise einen Zeitstempel hinzufügen. Dies können wir mit dem nächsten Befehl tun.
Beachten Sie die einfachen Anführungszeichen um die Parameter für den Befehl date
. Sie verhindern, dass der Abstand zwischen den Parametern als Ende der Parameterliste interpretiert wird. Sie stellen sicher, dass die Parameter korrekt an date
übergeben werden.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Unsere Protokolldatei wurde für uns erstellt und cat
zeigt uns, dass sowohl der Datenstempel als auch der Zeitstempel hinzugefügt wurden.
RELATED : Was sind stdin, stdout und stderr unter Linux?
Das ist das Repertoire von echo
Ein einfacher Befehl, aber unverzichtbar. Wenn es nicht existieren würde, müssten wir es erfinden.
Zeus ‚Spielereien haben schließlich etwas Gutes getan.
Dave McKay benutzte zum ersten Mal Computer, als Lochpapier in Mode war, und seitdem programmiert er. Nach über 30 Jahren in der IT-Branche ist er jetzt ein Vollzeit-Technologiejournalist. Während seiner Karriere war er als freiberuflicher Programmierer, Manager eines internationalen Softwareentwicklungsteams, Projektmanager für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Dave ist ein Linux-Evangelist und Open-Source-Anwalt. Lesen Sie Full Bio „