Echo: Unterschied zwischen den Versionen

Aus Foxwiki
Kamalalhassan (Diskussion | Beiträge)
K Textersetzung - „Bash/Builtins“ durch „Bash/Builtin“
Markierung: Manuelle Zurücksetzung
 
(110 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''echo''' gib ZEICHENKETTE(n) auf Standardausgabe aus.




=Bezeichnung=
'''echo''' lässt Zeichenketten und Variablen zeilenweise auf dem Standardausgabegerät anzeigen.


=Übersicht=
= Beschreibung =
'''echo''' gibt alle Argumente, getrennt durch ein Leerzeichen, und einen abschließenden Zeilenumbruch aus.


echo [OPTION][STRING]
'''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.


=Optionen=
'''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 ===
{| class="wikitable"
{| class="wikitable"
|+
|-
|-
! Option !! Beschreibung
! Options !! Description
|-
|-
| -e||Von einem „\“ eingeleitete Sequenzen werden als Befehle erkannt
| -n || Drucken Sie die nachfolgende neue Zeile nicht
|-
|-
| -E||Von einem „\“ eingeleitete Sequenzen werden nicht als Befehle erkannt (Standardeinstellung)
| -e || Aktivieren Sie die Interpretation von Backslash-Escapezeichen
|}
 
{| class="wikitable"
|+
|-
|-
| --help||Hilfe
! Escapesequenzen !! Description
|-
|-
| -n||Keine Ausgabe des am Zeilenende stehenden Zeilentrenners
| \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


Mit der Option '''-e''' können folgende Befehle verwendet werden:
{|class="wikitable sortable"
*'''\\''' Ausgabe des Backslashs
|-
*'''\a''' Alarm (Terminalglocke)
|  | '''\NNN'''
*'''\b''' Rücktaste ("Backspace")
|  | Zeichen mit dem ASCII Code (oktal)
*'''\c''' Keine weitere Ausgabe
|-
*'''\e''' Escape
|  | '''\\'''
*'''\f''' Seitenvorschub ("form feed")
|  | Rückschrägstrich
*'''\n''' Neue Zeile
|-
*'''\r''' Wagenrücklauf ("carriage return")
|  | '''\a'''
*'''\t''' Horizontaler Tab
|  | Alarm (BEL)  
*'''\v''' Vertikaler Tab
|-
*'''\xHH''' Zeichen aus der Zeichentabelle mit hexadezimalem Bytecode HH anzeigen
|  | '''\b'''
|  | Zeichen zurück
|-
|  | '''\c'''
|  | unterdrücke Zeilenvorschub am Ende
|-
|  | '''\f'''
|  | Seitenvorschub  
|-
|  | '''\n'''
|  | Zeilenvorschub
|-
|  | '''\r'''
|  | Wagenrücklauf  
|-
|  | '''\t'''
|  | horizontaler Tabulatorstopp
|-
|  | '''\v'''
|  | vertikaler Tabulatorstopp
|-
|}


=Beispiele=
== Optionen ==
  echo 'Das ist ein Beispiel!'  
{|class="wikitable sortable"
Das ist ein Beispiel!
|-
|  | '''-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
|-
|}


echo -e 'Heute ist ein schöner Sommer \btag!'
= Anwendung =
Heute ist ein schöner Sommertag!
== echo ==
Die Option -n unterdrückt den Zeilenumbruch und -e erzwingt die Auswertung Escape-Sequenzen:


*Wenn Sie selbst eine Variable deklarieren müssen, können Sie das einfach durch Eingabe der  Variablen, gefolgt von  dem  zuzuweisenden  Wert  an  der  Eingabeaufforderung,  erledigen<br>
  '''echo "\a"'''
*Variablen, die  auf  diese  Art Werte  erhalten,  werden  aber  nicht automatisch in Subshells exportiert, wie die folgende Befehlsfolge demonstriert:
  \a
  # x=5000
  '''echo -n "\a"'''
  # echo $x
  \a'''echo -e "\a"'''
  5000
  PIEP
  # bash
 
  # echo $x
Das nächste Beispiel verwendet "\b", um den Cursor um eine Position zurück zu bewegen:
 
  '''cat ticker'''
  #!/bin/sh
   
   
  #
  declare -i zeit=0
*Im ersten Schritt wurde  der  Variablen  ''x''  der  Wert  ''5000'' zugewiesen<br>
  echo -en "Sekunden: \t"
*Anschließend wurde die Variable mit dem <code>echo</code>-Kommando ausgegeben<br>
   
*In der vierten Zeile wird mit dem Kommando <code>bash</code> eine Subshell gestartet<br>
  while :; do
*Der Versuch, die Variable mit dem <code>echo</code>-Befehl auszugeben, schlägt fehl, weil keine Vererbung der Variablen in die Subshell stattgefunden hat<br>
    for ((i=${#zeit}; i; i--)); do
      echo -en "\b"
    done
    echo -en $zeit
    zeit=zeit+1
    sleep 1
done


*Wenn  der Inhalt  einer  Variablen  in  einer  Subshell  benötigt  wird,  muss  die  Variable exportiert werden. Beispiel:
== Textzeile auf der Standardausgabe ausgeben ==
# Name=Hans
  $ echo Hallo Welt
  # echo $Name
Gibt den folgenden Text aus:
Hans
  Hallo Welt
# export Name
# bash
# echo $Name
Hans
*Diesmal wurde  die  Variable  ''Name'' mit  dem  Kommando  <code>export</code> exportiert,  bevor  die Subshell gestartet wurde<br>
*Wie der zweite <code>echo</code>-Befehl zeigt, steht die Variable danach in der Subshell zur Verfügung<br>


*Es ist aber auch möglichdie Deklaration und den Export einer Variablen in einem einzigen Schritt durchzuführen. Das wird in der ersten Zeile des folgenden Beispiels demonstriert:
== Deklarieren Sie eine Variable und geben Sie ihren Wert wieder. Deklarieren Sie beispielsweise eine Variable von x und weisen Sie ihren Wert = 10 zu ==
  # export Name=Willi
  $ x=10
# bash
 
  # echo $Name
echo seinen Wert:
  Willi
  $ echo The value of variable x = $x
*Wenn Sie den Inhalt einer Variablen nicht mehr benötigen, sollten Sie diese mit dem Kommando <code>unset</code> wieder zurücksetzen.<br>
   
*Es ist sinnvoll, zu  Beginn eines Skripts zunächst alle verwendeten Variablen zurückzusetzen. Damit verhindern Sie, dass eventuell exportierte Variablen mit  gleichen Bezeichnungen den Funktionsablauf Ihres Skripts stören. Beispiel:
  The value of variable x = 10
  # unset Name
 
== 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 <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"
   
        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


= Links =
# https://wiki.ubuntuusers.de/echo/


[[Category:Linux:Bash]]
[[Kategorie:Linux/Befehl]]
[[Category:Linux:LPIC:101]]
[[Kategorie:Bash/Builtin]]
[[Category:Linux:Bash]]
[[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:

  1. Sie verwenden nicht immer eine Shell. Unter verschiedenen Umständen führen Sie eine ausführbare Datei direkt und nicht über eine Shell aus.
  2. 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

Links

  1. https://wiki.ubuntuusers.de/echo/