Echo: Unterschied zwischen den Versionen
K Textersetzung - „Bash/Builtins“ durch „Bash/Builtin“ Markierung: Manuelle Zurücksetzung |
|||
(86 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''echo''' gib ZEICHENKETTE(n) auf Standardausgabe aus. | |||
= | = Beschreibung = | ||
'''echo''' gibt alle Argumente, getrennt durch ein Leerzeichen, und einen abschließenden Zeilenumbruch aus. | |||
'''internes echo''' | |||
* Die Befehle, die direkt von der Shell ausgeführt werden, werden als interne Befehle bezeichnet. | |||
* Es gibt keinen separaten Prozess zum Ausführen dieser Befehle. | |||
''' | '''externes echo''' | ||
Die Befehle, die | /usr/bin/echo | ||
* Die Befehle, die vom Kernel ausgeführt werden, werden als externe Befehle bezeichnet. | |||
* Jeder Befehl hat seine eindeutige Prozess-ID | |||
== /usr/bin/echo == | |||
warum sollte ich es benutzen wollen: | |||
# Sie verwenden nicht immer eine Shell. Unter verschiedenen Umständen führen Sie eine ausführbare Datei direkt und nicht über eine Shell aus. | |||
# Zumindest theoretisch haben einige Muscheln kein eingebautes Echo. Dies ist eigentlich nicht erforderlich. | |||
Ein weniger häufiger Grund, warum Sie /bin/echo absichtlich verwenden könnten, ist, wenn Sie sich auf die Unterschiede zwischen ihm und dem von Ihrer Shell bereitgestellten Echo-Befehl verlassen. | |||
Echo ist nicht sehr portabel, da unterschiedliche Implementierungen - sowohl über Betriebssysteme als auch über Shells auf demselben Betriebssystem hinweg - unterschiedliche Optionen (z. B. -e) unterstützen und sich in ihrer Behandlung von Backslashes unterscheiden. | |||
=== Optionen === | |||
{| class="wikitable" | |||
|+ | |||
|- | |||
! Options !! Description | |||
|- | |||
| -n || Drucken Sie die nachfolgende neue Zeile nicht | |||
|- | |||
| -e || Aktivieren Sie die Interpretation von Backslash-Escapezeichen | |||
|} | |||
{| class="wikitable" | |||
|+ | |||
|- | |||
! Escapesequenzen !! Description | |||
|- | |||
| \b || Rücktaste "Backspace" | |||
|- | |||
| \\ || Backslashs | |||
|- | |||
| \n || Neue Zeile | |||
|- | |||
| \r || Wagenrücklauf "carriage return" | |||
|- | |||
| \t || Horizontaler Tab | |||
|- | |||
| \v || Vertikaler Tab | |||
|} | |||
= Installation = | |||
= Syntax = | |||
echo [OPTION]... [ZEICHENKETTE]... | |||
== Parameter == | |||
Ohne -E werden die folgenden Sequenzen erkannt und berechnet | |||
{|class="wikitable sortable" | |||
|- | |||
| | '''\NNN''' | |||
| | Zeichen mit dem ASCII Code (oktal) | |||
|- | |||
| | '''\\''' | |||
| | Rückschrägstrich | |||
|- | |||
| | '''\a''' | |||
| | Alarm (BEL) | |||
|- | |||
| | '''\b''' | |||
| | Zeichen zurück | |||
|- | |||
| | '''\c''' | |||
| | unterdrücke Zeilenvorschub am Ende | |||
|- | |||
| | '''\f''' | |||
| | Seitenvorschub | |||
|- | |||
| | '''\n''' | |||
| | Zeilenvorschub | |||
|- | |||
| | '''\r''' | |||
| | Wagenrücklauf | |||
|- | |||
| | '''\t''' | |||
| | horizontaler Tabulatorstopp | |||
|- | |||
| | '''\v''' | |||
| | vertikaler Tabulatorstopp | |||
|- | |||
|} | |||
== Optionen == | |||
{|class="wikitable sortable" | |||
|- | |||
| | '''-n''' | |||
| | gib keinen Zeilenvorschub am Ende der Zeile aus | |||
|- | |||
| | '''-e''' | |||
| | ermögliche Interpretation der \-Notationen unten | |||
|- | |||
| | '''-E''' | |||
| | verhindere Interpolation einiger Sequenzen in ZKETTEn | |||
|- | |||
| | '''--help''' | |||
| | gib diese Hilfe aus und beende das Programm | |||
|- | |||
| | '''--version''' | |||
| | gib Versionsinformation aus und beende das Programm | |||
|- | |||
|} | |||
= Anwendung = | |||
== echo == | |||
Die Option -n unterdrückt den Zeilenumbruch und -e erzwingt die Auswertung Escape-Sequenzen: | |||
''' | '''echo "\a"''' | ||
\a | |||
'''echo -n "\a"''' | |||
\a'''echo -e "\a"''' | |||
PIEP | |||
Das nächste Beispiel verwendet "\b", um den Cursor um eine Position zurück zu bewegen: | |||
'''cat ticker''' | |||
#!/bin/sh | |||
declare -i zeit=0 | |||
echo -en "Sekunden: \t" | |||
while :; do | |||
for ((i=${#zeit}; i; i--)); do | |||
echo -en "\b" | |||
done | |||
echo -en $zeit | |||
zeit=zeit+1 | |||
sleep 1 | |||
done | |||
= | == Textzeile auf der Standardausgabe ausgeben == | ||
$ echo Hallo Welt | $ echo Hallo Welt | ||
Gibt den folgenden Text aus: | Gibt den folgenden Text aus: | ||
Hallo Welt | Hallo Welt | ||
== Deklarieren Sie eine Variable und geben Sie ihren Wert wieder. Deklarieren Sie beispielsweise eine Variable von x und weisen Sie ihren Wert = 10 zu == | |||
$ x=10 | $ x=10 | ||
echo seinen Wert: | echo seinen Wert: | ||
$ echo The value of variable x = $x | $ echo The value of variable x = $x | ||
The value of variable x = 10 | |||
== Rücktaste mit Backslash-Interpreter == | |||
Verwenden Sie die Option '\b' - Rücktaste mit Backslash-Interpreter '-e', die alle dazwischen liegenden Leerzeichen entfernt | |||
$ echo -e "Sehr \bgeehrte \bDamen \bund \bHerren" | $ echo -e "Sehr \bgeehrte \bDamen \bund \bHerren" | ||
SehrgeehrteDamenundHerren | |||
== Zeilenwechsel == | |||
Mit der Option '\n' - Neue Zeile mit Rücktaste-Interpretor '-e' wird eine neue Zeile dort behandelt, wo sie verwendet wird | |||
$ echo -e "Sehr \ngeehrte \nDamen \nund \nHerren" | $ echo -e "Sehr \ngeehrte \nDamen \nund \nHerren" | ||
Sehr | Sehr | ||
geehrte | geehrte | ||
Damen | Damen | ||
und | und | ||
Herren | Herren | ||
== Tabulatoren == | |||
Verwenden Sie die Option '\t' - horizontale Registerkarte mit Rücktaste-Interpretor '-e', um horizontale Registerkarten zu erhalten | |||
$ echo -e "Sehr \tgeehrte \tDamen \tund \tHerren" | $ echo -e "Sehr \tgeehrte \tDamen \tund \tHerren" | ||
Sehr geehrte Damen und Herren | Sehr geehrte Damen und Herren <br /> | ||
Wie wäre es, wenn Sie die Option Neue Zeile '\n' und die horizontale Registerkarte '\t' gleichzeitig verwenden | |||
$ echo -e "\n\tSehr \n\tgeehrte \n\tDamen \n\tund \n\tHerren" | $ echo -e "\n\tSehr \n\tgeehrte \n\tDamen \n\tund \n\tHerren" | ||
Sehr | Sehr | ||
geehrte | geehrte | ||
Zeile 77: | Zeile 182: | ||
und | und | ||
Herren | Herren | ||
Verwenden Sie die Option '\v' - vertikale Registerkarte mit Rücktaste-Interpretor '-e', um vertikale Tabulatoren zu erhalten | |||
$ echo -e "\vSehr \vgeehrte \vDamen \vund \vHerren" | $ echo -e "\vSehr \vgeehrte \vDamen \vund \vHerren" | ||
Zeile 86: | Zeile 190: | ||
und | und | ||
Herren | Herren | ||
Wie wäre es, wenn Sie die Option Neue Zeile '\n' und vertikale Registerkarte '\v' gleichzeitig verwenden | |||
$ echo -e "\n\vSehr \n\vgeehrte \n\vDamen \n\vund \n\vHerren" | $ echo -e "\n\vSehr \n\vgeehrte \n\vDamen \n\vund \n\vHerren" | ||
Sehr | Sehr | ||
geehrte | geehrte | ||
Damen | Damen | ||
und | und | ||
Herren | Herren | ||
= | == Alle Dateien und Ordner ausgeben == | ||
Drucken Sie alle Dateien / Ordner mit dem Befehl echo (ls command alternative) | |||
$ echo * | |||
103.odt 103.pdf 104.odt 104.pdf 105.odt 105.pdf 106.odt 106.pdf 107.odt 107.pdf 108a.odt 108.odt 108.pdf 109.odt 109.pdf 110b.odt 110.odt 110.pdf 111.odt 111.pdf 112.odt 112.pdf 113.odt linux-headers- 3.16.0-customkernel_1_amd64.deb linux-image-3.16.0-customkernel_1_amd64.deb network.jpeg | |||
== Dateien nach Endung ausgeben == | |||
$ echo *.jpeg | |||
network.jpeg | |||
= | = Links = | ||
# https://wiki.ubuntuusers.de/echo/ | # https://wiki.ubuntuusers.de/echo/ | ||
[[Kategorie:Linux/Befehl]] | |||
[[Kategorie:Bash/Builtin]] | |||
[[Kategorie:Bash/Scripting]] | |||
[[Kategorie:Bash/Interaktiv]] | |||
[[ | |||
[[ | |||
[[ |
Aktuelle Version vom 21. September 2024, 22:43 Uhr
echo gib ZEICHENKETTE(n) auf Standardausgabe aus.
Beschreibung
echo gibt alle Argumente, getrennt durch ein Leerzeichen, und einen abschließenden Zeilenumbruch aus.
internes echo
- Die Befehle, die direkt von der Shell ausgeführt werden, werden als interne Befehle bezeichnet.
- Es gibt keinen separaten Prozess zum Ausführen dieser Befehle.
externes echo
/usr/bin/echo
- Die Befehle, die vom Kernel ausgeführt werden, werden als externe Befehle bezeichnet.
- Jeder Befehl hat seine eindeutige Prozess-ID
/usr/bin/echo
warum sollte ich es benutzen wollen:
- Sie verwenden nicht immer eine Shell. Unter verschiedenen Umständen führen Sie eine ausführbare Datei direkt und nicht über eine Shell aus.
- Zumindest theoretisch haben einige Muscheln kein eingebautes Echo. Dies ist eigentlich nicht erforderlich.
Ein weniger häufiger Grund, warum Sie /bin/echo absichtlich verwenden könnten, ist, wenn Sie sich auf die Unterschiede zwischen ihm und dem von Ihrer Shell bereitgestellten Echo-Befehl verlassen.
Echo ist nicht sehr portabel, da unterschiedliche Implementierungen - sowohl über Betriebssysteme als auch über Shells auf demselben Betriebssystem hinweg - unterschiedliche Optionen (z. B. -e) unterstützen und sich in ihrer Behandlung von Backslashes unterscheiden.
Optionen
Options | Description |
---|---|
-n | Drucken Sie die nachfolgende neue Zeile nicht |
-e | Aktivieren Sie die Interpretation von Backslash-Escapezeichen |
Escapesequenzen | Description |
---|---|
\b | Rücktaste "Backspace" |
\\ | Backslashs |
\n | Neue Zeile |
\r | Wagenrücklauf "carriage return" |
\t | Horizontaler Tab |
\v | Vertikaler Tab |
Installation
Syntax
echo [OPTION]... [ZEICHENKETTE]...
Parameter
Ohne -E werden die folgenden Sequenzen erkannt und berechnet
\NNN | Zeichen mit dem ASCII Code (oktal) |
\\ | Rückschrägstrich |
\a | Alarm (BEL) |
\b | Zeichen zurück |
\c | unterdrücke Zeilenvorschub am Ende |
\f | Seitenvorschub |
\n | Zeilenvorschub |
\r | Wagenrücklauf |
\t | horizontaler Tabulatorstopp |
\v | vertikaler Tabulatorstopp |
Optionen
-n | gib keinen Zeilenvorschub am Ende der Zeile aus |
-e | ermögliche Interpretation der \-Notationen unten |
-E | verhindere Interpolation einiger Sequenzen in ZKETTEn |
--help | gib diese Hilfe aus und beende das Programm |
--version | gib Versionsinformation aus und beende das Programm |
Anwendung
echo
Die Option -n unterdrückt den Zeilenumbruch und -e erzwingt die Auswertung Escape-Sequenzen:
echo "\a" \a echo -n "\a" \aecho -e "\a" PIEP
Das nächste Beispiel verwendet "\b", um den Cursor um eine Position zurück zu bewegen:
cat ticker #!/bin/sh declare -i zeit=0 echo -en "Sekunden: \t" while :; do for ((i=${#zeit}; i; i--)); do echo -en "\b" done echo -en $zeit zeit=zeit+1 sleep 1 done
Textzeile auf der Standardausgabe ausgeben
$ echo Hallo Welt
Gibt den folgenden Text aus:
Hallo Welt
Deklarieren Sie eine Variable und geben Sie ihren Wert wieder. Deklarieren Sie beispielsweise eine Variable von x und weisen Sie ihren Wert = 10 zu
$ x=10
echo seinen Wert:
$ echo The value of variable x = $x The value of variable x = 10
Rücktaste mit Backslash-Interpreter
Verwenden Sie die Option '\b' - Rücktaste mit Backslash-Interpreter '-e', die alle dazwischen liegenden Leerzeichen entfernt
$ echo -e "Sehr \bgeehrte \bDamen \bund \bHerren" SehrgeehrteDamenundHerren
Zeilenwechsel
Mit der Option '\n' - Neue Zeile mit Rücktaste-Interpretor '-e' wird eine neue Zeile dort behandelt, wo sie verwendet wird
$ echo -e "Sehr \ngeehrte \nDamen \nund \nHerren" Sehr geehrte Damen und Herren
Tabulatoren
Verwenden Sie die Option '\t' - horizontale Registerkarte mit Rücktaste-Interpretor '-e', um horizontale Registerkarten zu erhalten
$ echo -e "Sehr \tgeehrte \tDamen \tund \tHerren" Sehr geehrte Damen und Herren
Wie wäre es, wenn Sie die Option Neue Zeile '\n' und die horizontale Registerkarte '\t' gleichzeitig verwenden
$ echo -e "\n\tSehr \n\tgeehrte \n\tDamen \n\tund \n\tHerren" Sehr geehrte Damen und Herren
Verwenden Sie die Option '\v' - vertikale Registerkarte mit Rücktaste-Interpretor '-e', um vertikale Tabulatoren zu erhalten
$ echo -e "\vSehr \vgeehrte \vDamen \vund \vHerren" Sehr geehrte Damen und Herren
Wie wäre es, wenn Sie die Option Neue Zeile '\n' und vertikale Registerkarte '\v' gleichzeitig verwenden
$ echo -e "\n\vSehr \n\vgeehrte \n\vDamen \n\vund \n\vHerren" Sehr geehrte Damen und Herren
Alle Dateien und Ordner ausgeben
Drucken Sie alle Dateien / Ordner mit dem Befehl echo (ls command alternative)
$ echo * 103.odt 103.pdf 104.odt 104.pdf 105.odt 105.pdf 106.odt 106.pdf 107.odt 107.pdf 108a.odt 108.odt 108.pdf 109.odt 109.pdf 110b.odt 110.odt 110.pdf 111.odt 111.pdf 112.odt 112.pdf 113.odt linux-headers- 3.16.0-customkernel_1_amd64.deb linux-image-3.16.0-customkernel_1_amd64.deb network.jpeg
Dateien nach Endung ausgeben
$ echo *.jpeg network.jpeg