GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash Echo-Befehl mit Beispielen in Linux erklärt

Wenn Sie als Anfänger anfangen, mit Bash-Skripten zu arbeiten, werden Sie wahrscheinlich zuerst den Befehl echo Befehl. Sie können sich den Bash-Echo-Befehl ähnlich wie print vorstellen Befehl in anderen Programmiersprachen. Das echo Der Befehl ist in Bash integriert und dient dazu, die Ausgabe auf stdout (d. h. Terminal) auszugeben.

In diesem Artikel zeige ich Ihnen, was der Bash-Echo-Befehl ist und wie Sie ihn in Ihren Shell-Skripten verwenden. Bevor wir uns mit dem Thema befassen, lassen Sie uns den Unterschied zwischen einem eingebauten Bash-Befehl und einem externen Befehl sehen.

Integriertes Bash-Echo vs. externer Echo-Befehl

In Linux und anderen Unix-ähnlichen Systemen werden einige Befehle sowohl als eingebaute als auch als externe Befehle bereitgestellt. Zum Beispiel /bin/echo ist ein externer Befehl, der denselben Namen hat wie echo bash eingebaut.

Wenn wir einen Befehl aufrufen, der sowohl als eingebauter als auch als externer Befehl existiert, wird normalerweise standardmäßig der eingebaute Befehl ausgeführt. Denn die Prioritätsreihenfolge für Befehlsnamen ist alias , dann function , dann builtin , und dann externer Befehl in den Verzeichnissen, die in $PATH aufgeführt sind in Ordnung.

Wenn Sie einen externen Befehl erzwingen möchten, der sowohl als integrierter als auch als externer Befehl verfügbar ist, verwenden Sie einfach seinen vollständigen Pfad.

Um dies deutlich zu machen, ruft der folgende Befehl die eingebaute Bash auf:

$ echo <some-text>

Und das Folgende ruft extern echo auf Befehl:

$ /bin/echo <some-text>

Um herauszufinden, ob ein Befehl ein eingebauter oder ein externer Befehl ist, können wir type verwenden Befehl:

$ type echo 
echo is a shell builtin

Um alle Speicherorte anzuzeigen, die die angegebene ausführbare Datei enthalten, verwenden Sie -a Flagge:

$ type -a echo 
echo is a shell builtin
echo is /usr/bin/echo

Weitere Einzelheiten zu type Befehlsverwendung finden Sie unter folgendem Link:

  • Das Type-Command-Tutorial mit Beispielen für Anfänger

In diesem Leitfaden werden wir das in Bash integrierte echo besprechen Befehl, nicht der externe.

Bash-Echo-Befehlshilfe anzeigen

Fast alle verfügbaren Linux-Befehle haben entweder eine Manpage oder einen Hilfeabschnitt, um zu verstehen, wie dieser Befehl verwendet wird. Die Hilfeanleitung von echo Der Befehl ist in der Bash-Manpage enthalten

Zugriff auf die Manpage für bash Befehl, führe aus:

$ man bash

Geben Sie nun /echo ein und drücken Sie n bis Sie den Hilfebereich von echo sehen Befehl.

Alternativ können Sie den folgenden einzeiligen Befehl verwenden, um den Hilfeabschnitt von echo anzuzeigen Befehl:

$ man bash | less --pattern='^ *echo +\['

Aufbau des Echo-Befehls

Das echo Der Befehl akzeptiert drei optionale Argumente und den auf stdout auszugebenden Text.

echo [-neE] [arg ...]

-n → Do not append a new line
-e → enable interpretation of backslash escapes
-E → disable the interpretation of backslash escapes (default)

Lassen Sie uns die drei optionalen Argumente vorerst überspringen und sehen, wie Sie echo verwenden um einen Text auf die Standardausgabe (Terminal) zu drucken.

Sie können den folgenden Code entweder direkt im Terminal ausführen oder eine Skriptdatei erstellen und diese dann ausführen. Ich werde es direkt im Terminal ausführen:

$ echo "Hello World"
Hello World

Schauen Sie sich das obige Beispiel an. Es ist das traditionelle hello world Programm, das wir ausführen, wenn wir eine neue Sprache lernen, und es als ersten Code ausführen. Das echo Der Befehl hier akzeptiert "hello world" text als Argument und gibt ihn auf dem Terminal aus (Stdout).

Wie man Zeilenumbrüche unterdrückt

Das Standardverhalten des bash echo Befehl ist, wird automatisch eine neue Zeile hinzugefügt (\n ). Führen Sie dasselbe hello world aus Programm erneut und beachten Sie, dass die Terminal-Eingabeaufforderung in einer neuen Zeile angezeigt wird.

$ echo "Hello World"
Hello World

Wenn Sie dieses Verhalten nun unterdrücken möchten, können Sie das "-n" verwenden -Flag, das die neue Zeile unterdrückt, und die Terminal-Eingabeaufforderung wird in derselben Zeile gedruckt, wie unten gezeigt.

$ echo -n "Hello world"
Hello world

Was passiert, wenn kein Argument übergeben wird

Wenn dem echo-Befehl kein Argument übergeben wird, schlägt der Befehl nicht fehl, sondern gibt eine leere neue Zeile zurück. Starten Sie Ihr Terminal und führen Sie "echo" aus und Sie werden sehen, dass es nur eine leere Zeile druckt und beendet wird.

$ echo
$ echo $?
0

Sie können dieses Verhalten überschreiben, indem Sie den "-n" hinzufügen Flag, das keinen Zeilenumbruch ausgibt, selbst wenn kein Argument übergeben wird.

$ echo -n 

Wo wird dies nützlich sein? Sie fragen sich vielleicht. Wenn Sie einige Leerzeilen zwischen Ihren Ausgaben haben möchten, können Sie echo verwenden ohne Argumente.

Mit Variablen und Befehlen arbeiten

Das echo Der Befehl interpretiert benutzerdefinierte oder Shell-Variablen, die als Argument übergeben werden, und gibt den Wert aus. Sehen Sie sich die folgenden Beispiele an.

Zuerst die env-Variable "SHELL" wird an echo übergeben Befehl und druckt den Wert der Variablen.

# Environmental Variable:

$ echo " I am currently using ${SHELL}"
I am currently using /bin/bash

Zweitens die benutzerdefinierte Variable "NAME" wird an echo übergeben Befehl und der Wert wird an das Terminal ausgegeben.

# User Defined Variable:

$ NAME="PoP_OS"
$ echo "I am using ${NAME}"
I am using PoP_OS

Sie können auch Befehle innerhalb der Argumente ausführen. Sehen Sie sich das folgende Beispiel an, in dem "uname -r" command wird als Argument übergeben und der Befehl wird interpretiert und die Ausgabe gedruckt.

$ echo "KERNEL_VERSION=$(uname -r)"
KERNEL_VERSION=5.11.0-7620-generic

Auswirkungen der Verwendung von einfachen und doppelten Anführungszeichen

In allen vorherigen Beispielen ist Ihnen vielleicht aufgefallen, dass ich die Argumente in doppelte Anführungszeichen gesetzt habe. Was passiert also, wenn das Argument nicht in Anführungszeichen gesetzt wird? Echo Command schlägt nicht fehl und Sie erhalten dieselbe Ausgabe.

Sehen Sie sich das folgende Beispiel an. Ich führe denselben Befehl aus, den ich im vorherigen Abschnitt verwendet habe, aber ohne Anführungszeichen, und er druckt die Ausgabe ohne Fehler.

$ echo I am using ${NAME}
I am using Pop_OS

Schließen Sie die Argumente als bewährte Methode immer in Anführungszeichen ein.

Wenn das Argument der Klartext ist, können Sie einfache oder doppelte Anführungszeichen verwenden. Wenn Sie jedoch einen Befehl ausführen oder eine Variable im Argument erweitern möchten, sollten Sie doppelte Anführungszeichen und keine einfachen Anführungszeichen verwenden.

Das einfache Anführungszeichen verhindert, dass ein Befehl ausgeführt oder eine Variable erweitert wird. Es behandelt einfach das gesamte Argument als Klartext.

Sehen Sie sich das folgende Beispiel an. Wenn ich das Argument in einfache Anführungszeichen einschließe, wird die Variable "NAME" wird nicht als Text interpretiert und behandelt.

# SINGLE QUOTES

$ echo 'I am using ${NAME}'
I am using ${NAME}

# DOUBLE QUOTES

$ echo "I am using Linux ${NAME}"
I am using Linux PoP_OS

Ausgangsumleitung und -leitung

Wie bereits erwähnt, ist das echo Der Befehl gibt die Ausgabe standardmäßig auf der Standardausgabe (Terminal) aus. Wenn Sie Shell-Skripte schreiben, können Sie in eine Situation geraten, in der Sie die Ausgabe von echo speichern müssen Befehl in eine Datei. Verwenden Sie dazu die Bash-Umleitung Betreiber.

$ echo "Welcome to OSTechNix" > /tmp/op.log
$ cat /tmp/op.log
Welcome to OSTechNix

Empfohlene Lektüre:

  • Bash-Umleitung mit Beispielen erklärt
  • Bash Heredoc-Tutorial für Anfänger

Sie können auch die Ausgabe des echo senden Befehl an die pipe zur Weiterverarbeitung.

$ echo "I am using ${NAME}"
I am using PoP_OS
$ echo "I am using ${NAME}" | grep -i -o POP
PoP

Mehrzeiliger String

Ihr Argument kann manchmal zu mehr als einer Zeile führen. Sie können das mehrzeilige Argument in doppelte Anführungszeichen setzen, um die Ausgabe unter Berücksichtigung neuer Zeilen, Tabulatoren und Leerzeichen zu drucken.

$ echo "This is Line 1
This is Line 2
This is Line 3"

Obwohl Ihr Argument als mehrzeilige Zeichenfolge übergeben wird, möchten Sie es in einigen Fällen möglicherweise als einzelne Zeile drucken. Verwenden Sie in solchen Fällen den "\" Symbol am Ende jeder Zeile, sodass die nächste Zeile mit der vorherigen Zeile fortgesetzt wird.

$ echo "I am running \
the echo command \
again"

Beispielausgabe:

I am running the echo command again

Dies ist nicht ausschließlich spezifisch für bash echo Befehl. Sie können diesen Ansatz verwenden, um sehr große Befehle zur besseren Lesbarkeit mehrzeilig zu erzeugen.

Backslash entgeht der Interpretation

Das echo Der Befehl akzeptiert viele maskierte Zeichen als Argumente. Damit diese Sonderzeichen vom echo-Befehl erkannt werden, muss der "-e" Flagge übergeben werden soll. Die Liste der unterstützten Sonderzeichen können Sie dem echo entnehmen Manpage des Befehls.

Sie werden nicht alle Sonderzeichen in Ihrem täglichen Leben verwenden. Sie werden hauptsächlich Newline-Zeichen, Tabulatoren und Backslash-Escape-Zeichen verwenden.

Neue-Zeile-Zeichen - \n

Eine neue Zeile wird hinzugefügt, wenn Sie \n übergeben zum echo Befehl. Sie können auch mehrere \n übergeben, wodurch entsprechend mehr Zeilen hinzugefügt werden.

$ echo -e "This is the first line\nThis is the second Line\nThis is the third line"

Beispielausgabe:

This is the first line
This is the second Line
This is the third line

Horizontaler Tabulator - \t

Wenn \t verwendet wird, werden Tabulatoren hinzugefügt. Sie können auch mehrere Escape-Zeichen kombinieren, wie ich es unten getan habe.

$ echo -e "Enter the U_NAME\t:\n"
Enter the U_NAME    :

Vertikaler Tabulator - \v

Verwenden Sie zum vertikalen Erstellen von Registerkarten \v .

$ echo -e "Enter the username\vEnter the password"
Enter the username
                  Enter the password

Ausgabe unterdrücken - \c

Wenn \c verwendet wird, alles, was nach \c kommt wird unterdrückt.

$ echo -e "I am using \cCosmic Desktop"
I am using

Wagenrücklauf - \r

Wenn \r verwendet wird, wird der Cursor auf das erste Zeichen und alles, was nach \r kommt, zurückgesetzt wird gedruckt und ersetzt vorhandene Zeichen.

$ echo -e "I use Arch, \rBtw"
Btwse Arch, 

Backslash-Escape-Interpretation deaktivieren

Das Standardverhalten von echo Der Befehl behandelt Sonderzeichen als Klartext, es sei denn -e Flagge wird übergeben. Dasselbe Verhalten kann mit -E erreicht werden Flagge.

Ich zeige Ihnen ein Beispiel.

Lassen Sie mich echo ausführen Befehl ohne Flags:

$ echo "Welcome to OSTechNix \nblog"
Welcome to OSTechNix \nblog

Als Nächstes führe ich denselben Befehl mit -E aus Flagge:

$ echo -E "Welcome to OSTechNix \nblog"
Welcome to OSTechNix \nblog

Wie Sie sehen können, ist das Ergebnis ähnlich, wenn ich echo ausführe Befehl mit -E Flagge und ohne Flagge. In beiden Fällen echo behandelt den /n Sonderzeichen als einfache Zeichenkette.

Lassen Sie mich jetzt denselben Befehl noch einmal ausführen, diesmal jedoch mit -e Flagge.

$ echo -e "Welcome to OSTechNix \nblog"
Welcome to OSTechNix
blog

Hast du den Unterschied bemerkt? Der echo-Befehl hat /n nicht behandelt Zeichen als Klartext und es zeigt alles an, was nach dem /n kommt Sonderzeichen in der neuen Zeile.

Wenn Sie also irgendwelche Sonderzeichen wie \n verwenden möchten , \t , \v usw. sollten Sie -e verwenden Flagge. Sonst echo behandelt alles als einfachen String.

Lassen Sie mich Ihnen ein weiteres Beispiel zeigen.

$ echo -e "Hello world\nHello World\nHello World"
Hello world
Hello World
Hello World

Wie Sie in der obigen Ausgabe sehen, echo Befehl zeigt "Hello World" an Zeichenfolge dreimal nacheinander (d. h. in einer neuen Zeile).

Was ist, wenn Sie nur einem bestimmten Sonderzeichen entkommen möchten? Hier steht doppelter Backslash (\\ ) kommt zur Rettung.

Zum Beispiel möchte ich das dritte /n maskieren Sonderzeichen im vorherigen Befehl.

Dazu stelle ich dem dritten Sonderzeichen einen doppelten Backslash voran (\\ ) wie unten:

$ echo -e "Hello world\nHello World\\\nHello World"
Hello world
Hello World\nHello World

Jetzt echo Befehl behandelt den dritten \n Sonderzeichen als einfache Zeichenkette.

Wenn Sie also viele Sonderzeichen haben und nur ein bestimmtes Sonderzeichen maskieren möchten, müssen Sie den doppelten umgekehrten Schrägstrich hinzufügen (\\ ) vor diesem Sonderzeichen.

Schlussfolgerung

In diesem Artikel haben wir gesehen, was echo ist Befehl ist und verschiedene Möglichkeiten, ihn zu verwenden. Dies ist ein sehr einfacher Befehl und es gibt kein Shell-Skript ohne die Verwendung von echo Befehl, es sei denn, Sie entscheiden sich für printf was die Alternative für echo ist Befehl in bash.

Verwandte Lektüre:

  • Bash-Scripting – Variablen mit Beispielen erklärt
  • Bash-Scripting – Funktionen mit Beispielen erklärt
  • Bash-Skripting – For-Schleife mit Beispielen erklärt
  • Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt

Linux
  1. wc Linux-Befehl mit Beispielen

  2. Befehl zum Herunterfahren von Linux mit Beispielen erklärt

  3. Linux Traceroute-Befehl, erklärt mit Beispielen

  4. JQ-Befehl in Linux mit Beispielen

  5. Echo-Befehlsbeispiele in Linux

Linux more Befehl mit Beispielen erklärt

Linux-wget-Befehl mit Beispielen erklärt

Tr-Befehl in Linux mit Beispielen erklärt

w Befehl mit Beispielen in Linux erklärt

Linux tee-Befehl erklärt (mit Beispielen)

Linux csplit Befehl erklärt (mit Beispielen)