15 Sonderzeichen, die Sie für Bash kennen müssen

Wenn Sie die Bash-Shell unter Linux, macOS oder einem anderen UNIX-ähnlichen System beherrschen möchten, sind Sonderzeichen (wie ~, *, | und >) entscheidend. Wir helfen Ihnen, diese kryptischen Linux-Befehlssequenzen zu entwirren und ein Held der Hieroglyphen zu werden.

Was sind Sonderzeichen?

Es gibt eine Reihe von Zeichen, die Bash-Shell behandelt auf zwei verschiedene Arten. Wenn Sie sie in der Shell eingeben, fungieren sie als Anweisungen oder Befehle und weisen die Shell an, eine bestimmte Funktion auszuführen. Stellen Sie sie sich als Einzelzeichenbefehle vor.

Manchmal möchten Sie nur ein Zeichen drucken und benötigen es nicht als magisches Symbol. Es gibt eine Möglichkeit, ein Zeichen zu verwenden, um sich selbst und nicht seine spezielle Funktion darzustellen.

Wir zeigen Ihnen, welche Zeichen „Sonder-“ oder „Meta-“ Zeichen sind und wie Sie diese funktional und wörtlich einsetzen können.

~ Home-Verzeichnis

Die Tilde (~) steht für Ihr Home-Verzeichnis. Das bedeutet, dass Sie nicht den vollständigen Pfad zu Ihrem Home-Verzeichnis in Befehlen eingeben müssen. Wo auch immer Sie sich im Dateisystem befinden, können Sie mit diesem Befehl in Ihr Home-Verzeichnis wechseln:

cd ~

Der

Sie können diesen Befehl auch mit relativen Pfaden verwenden. Wenn Sie sich beispielsweise irgendwo im Dateisystem befinden, das sich nicht in Ihrem Home-Ordner befindet, und Sie in das Archivverzeichnis in Ihrem Arbeitsverzeichnis wechseln möchten, verwenden Sie dazu die Tilde:

cd ~/work/archive

Der

. Aktuelles Verzeichnis

Ein Punkt (.) steht für das aktuelle Verzeichnis. Sie sehen es in Verzeichnislisten, wenn Sie die Option -a (all) mit ls verwenden.

ls -a

Der

Sie können den Punkt auch in Befehlen verwenden, um den Pfad zu Ihrem aktuellen Verzeichnis darzustellen. Wenn Sie beispielsweise ein Skript aus dem aktuellen Verzeichnis ausführen möchten, würden Sie es wie folgt aufrufen:

./script.sh

Dies weist Bash an, im aktuellen Verzeichnis nach der Datei script.sh zu suchen. Auf diese Weise werden die Verzeichnisse in Ihrem Pfad nicht nach passenden ausführbaren Dateien oder Skripten durchsucht.

Der

.. Übergeordnetes Verzeichnis

Der doppelte Punkt oder „doppelter Punkt“ (..) stellt das übergeordnete Verzeichnis Ihres aktuellen Verzeichnisses dar. Damit können Sie im Verzeichnisbaum eine Ebene nach oben springen.

cd ..

Der

Sie können diesen Befehl auch mit relativen Pfaden verwenden, beispielsweise wenn Sie im Verzeichnisbaum eine Ebene nach oben gehen und dann auf dieser Ebene ein anderes Verzeichnis eingeben möchten.

Sie können diese Technik auch verwenden, um schnell zu einem Verzeichnis auf derselben Ebene in der Verzeichnisstruktur wie Ihrem aktuellen zu wechseln. Sie hüpfen eine Ebene nach oben und dann eine Ebene zurück in ein anderes Verzeichnis.

cd ../gc_help

Der

/ Pfadverzeichnistrennzeichen

Sie können einen Schrägstrich (/) – oft auch nur Schrägstrich genannt – verwenden, um die Verzeichnisse in einem Pfadnamen zu trennen.

ls ~/work/archive

Der

Ein Schrägstrich repräsentiert den kürzesten möglichen Verzeichnispfad. Da alles im Linux-Verzeichnisbaum im Stammverzeichnis beginnt, können Sie mit diesem Befehl schnell zum Stammverzeichnis wechseln:

cd /

Der

# Kommentar- oder Trim-Strings

Meistens verwenden Sie das Raute- oder Nummernzeichen (#), um der Shell mitzuteilen, dass es sich bei dem folgenden um einen Kommentar handelt und sie nicht darauf reagieren soll. Sie können es in Shell-Skripten und – weniger nützlich – in der Befehlszeile verwenden.

# This will be ignored by the Bash shell

Der

Es wird jedoch nicht wirklich ignoriert, da es Ihrem Befehlsverlauf hinzugefügt wird.

  Beste Dienste zum Schutz vor Identitätsdiebstahl

Sie können den Hash auch verwenden, um eine String-Variable zu trimmen und etwas Text am Anfang zu entfernen. Dieser Befehl erstellt eine String-Variable namens this_string.

In diesem Beispiel weisen wir den Text „Dave Geek!“ zu. zur Variablen.

this_string="Dave Geek!"

Dieser Befehl verwendet echo, um die Worte „How-To“ im Terminalfenster auszugeben. Es ruft den in der String-Variablen gespeicherten Wert über a . ab Parametererweiterung. Da wir den Hash und den Text „Dave“ anhängen, wird dieser Teil des Strings abgeschnitten, bevor er an echo übergeben wird.

echo How-To ${this_string#Dave}

Ein

Dadurch wird der in der String-Variablen gespeicherte Wert nicht geändert; es wirkt sich nur auf das aus, was an echo gesendet wird. Wir können echo verwenden, um den Wert der String-Variablen noch einmal auszugeben und dies zu überprüfen:

echo $this_string

Der

? Einzelzeichen-Platzhalter

Die Bash-Shell unterstützt drei Platzhalter, von denen einer das Fragezeichen (?) ist. Sie verwenden Platzhalter, um Zeichen in Dateinamenvorlagen zu ersetzen. Ein Dateiname, der einen Platzhalter enthält, bildet eine Vorlage, die nicht nur einem, sondern einem Bereich von Dateinamen entspricht.

Der Fragezeichen-Platzhalter steht für genau ein Zeichen. Betrachten Sie die folgende Dateinamenvorlage:

ls badge?.txt

Dies bedeutet übersetzt „alle Dateien auflisten, deren Name mit ‚badge‘ beginnt und von einem einzelnen Zeichen vor der Dateinamenerweiterung gefolgt wird“.

Es stimmt mit den folgenden Dateien überein. Beachten Sie, dass einige Zahlen und andere Buchstaben nach dem „Badge“-Teil des Dateinamens haben. Der Platzhalter für das Fragezeichen entspricht sowohl Buchstaben als auch Zahlen.

Der

Diese Dateinamenvorlage stimmt jedoch nicht mit „badge.txt“ überein, da der Dateiname kein einziges Zeichen zwischen „badge“ und der Dateierweiterung enthält. Der Platzhalter für das Fragezeichen muss mit einem entsprechenden Zeichen im Dateinamen übereinstimmen.

Sie können auch das Fragezeichen verwenden, um alle Dateien mit einer bestimmten Anzahl von Zeichen im Dateinamen zu finden. Hier werden alle Textdateien aufgelistet, die genau fünf Zeichen im Dateinamen enthalten:

ls ?????.txt

EIN

* Platzhalter für Zeichenfolgen

Sie können das Sternchen verwenden

ls badge*

Platzhalter für eine beliebige Zeichenfolge, auch keine Zeichen. Betrachten Sie die folgende Dateinamenvorlage:

Dies stimmt mit allen folgenden Punkten überein:

Ein

Es stimmt mit „badge.txt“ überein, da der Platzhalter eine beliebige Zeichenfolge oder keine Zeichen darstellt.

ls source.*

Dieser Befehl gleicht alle Dateien mit dem Namen „source“ ab, unabhängig von der Dateierweiterung.

[] Ein

Zeichensatz-Platzhalter

Wie oben beschrieben, verwenden Sie das Fragezeichen, um ein einzelnes Zeichen darzustellen, und das Sternchen, um eine beliebige Folge von Zeichen (einschließlich keiner Zeichen) darzustellen. [] Mit den eckigen Klammern (

) und die darin enthaltenen Zeichen. Das entsprechende Zeichen im Dateinamen muss dann mit mindestens einem der Zeichen im Wildcard-Zeichensatz übereinstimmen.

ls badge_0[246].txt

In diesem Beispiel lautet der Befehl: „jede Datei mit der Erweiterung „.png“, einem Dateinamen, der mit „pipes_0“ beginnt und in dem das nächste Zeichen entweder 2, 4 oder 6 ist.“

Ein

ls badge_[01][789].txt

Sie können mehr als einen Satz Klammern pro Dateinamenvorlage verwenden:

Ein

ls badge_[23][1-5].txt

Sie können auch Bereiche in den Zeichensatz einschließen.  Der folgende Befehl wählt Dateien mit den Nummern 21 bis 25 und 31 bis 35 im Dateinamen aus.

Ein

; Shell-Befehlstrennzeichen

ls > count.txt; wc -l count.txt; rm count.txt

Sie können beliebig viele Befehle in die Befehlszeile eingeben, solange Sie sie jeweils durch ein Semikolon (;) trennen.  Dies machen wir im folgenden Beispiel: Ein

count.txt; wc -l count.txt; rm count.txt“ Befehl in einem Terminalfenster‘ width=“646″ height=“122″ onload=“pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“ onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

  ProWidgets ist die erste echte Widget-Implementierung für iPhone & iPad

Beachten Sie, dass der zweite Befehl auch dann ausgeführt wird, wenn der erste fehlschlägt, der dritte ausgeführt wird, selbst wenn der zweite fehlschlägt, und so weiter.

cd ./doesntexist && cp ~/Documents/reports/* .

Wenn Sie die Ausführungssequenz stoppen möchten, wenn ein Befehl fehlschlägt, verwenden Sie ein doppeltes kaufmännisches Und (&&) anstelle eines Semikolons:

EIN

& Hintergrundprozess

Nachdem Sie einen Befehl in ein Terminalfenster eingegeben und abgeschlossen haben, kehren Sie zur Eingabeaufforderung zurück. Normalerweise dauert dies nur ein oder zwei Augenblicke. Wenn Sie jedoch eine andere Anwendung starten, z. B. gedit, können Sie Ihr Terminalfenster erst verwenden, wenn Sie die Anwendung schließen.

gedit command_address.page &

Sie können jedoch eine Anwendung als Hintergrundprozess starten und das Terminalfenster weiterhin verwenden.  Fügen Sie dazu einfach ein kaufmännisches Und in die Befehlszeile ein:

EIN

Bash zeigt Ihnen die Prozess-ID dessen an, was gestartet wurde, und führt Sie dann zur Befehlszeile zurück. Anschließend können Sie Ihr Terminalfenster weiter verwenden.

sort 

Viele Linux-Befehle akzeptieren eine Datei als Parameter und beziehen ihre Daten aus dieser Datei.  Die meisten dieser Befehle können auch Eingaben aus einem Stream annehmen.  Um einen Stream zu erstellen, verwenden Sie die linke spitze Klammer (

When a command has input redirected into it, it might behave differently than when it reads from a named file.

If we use wc to count the words, lines, and characters in a file, it prints the values, and then the filename. If we redirect the contents of the file to wc, it prints the same numeric values but doesn’t know the name of the file from which the data came. It cannot print a filename.

Here are some examples of how you can use wc:

wc words.txt
wc 

EIN

> Output Redirection

You can use the right-angle bracket ( > ) to redirect the output from a command (typically, into a file); here’s an example:

ls > files.txt
cat files.txt

EIN Ein

files.txt"-Befehl in einem Terminalfenster." width="646" height="382" >

wc doesntexist.txt 2> errors.txt
cat errors.txt

Die Ausgabeumleitung kann auch Fehlermeldungen umleiten, wenn Sie eine Ziffer (2, in unserem Beispiel) mit > verwenden.  So geht's: EIN

Fehler.txt" Befehl in einem Terminalfenster." width="646" height="122" >

| Rohr

Eine „Pipe“ verkettet Befehle aneinander. Es nimmt die Ausgabe von einem Befehl und leitet sie als Eingabe an den nächsten weiter. Die Anzahl der weitergeleiteten Befehle (die Länge der Kette) ist willkürlich.

Hier verwenden wir cat, um den Inhalt der Datei words.txt in grep einzugeben, das jede Zeile extrahiert, die entweder ein Klein- oder Großbuchstabe „C“ enthält. grep übergibt diese Zeilen dann an die Sortierung. sort verwendet die Option -r (umgekehrt), sodass die sortierten Ergebnisse in umgekehrter Reihenfolge angezeigt werden.

cat words.txt | grep [cC] | sort -r

Wir haben folgendes eingegeben:

EIN

! Pipeline logisches NOT und Verlaufsoperator

Das Ausrufezeichen (!) ist ein logischer Operator, der NICHT bedeutet.

[ ! -d ./backup ] && mkdir ./backup

Es gibt zwei Befehle in dieser Befehlszeile:
Der erste Befehl ist der Text innerhalb der eckigen Klammern;

Der zweite Befehl ist der Text, der auf das doppelte kaufmännische Und-Zeichen && folgt.

Der erste Befehl verwendet ! als logischer Operator. Die eckigen Klammern zeigen an, dass ein Test durchgeführt wird. Die Option -d (Verzeichnis) testet, ob ein Verzeichnis namens backup vorhanden ist. Der zweite Befehl erstellt das Verzeichnis.

Da doppelte kaufmännische Und-Zeichen die beiden Befehle trennen, führt Bash den zweiten nur aus, wenn der erste erfolgreich ist. Das ist jedoch das Gegenteil von dem, was wir brauchen. Wenn der Test für das Verzeichnis „backup“ erfolgreich ist, müssen wir es nicht erstellen. Und wenn der Test für das Verzeichnis „backup“ fehlschlägt, wird der zweite Befehl nicht ausgeführt und das fehlende Verzeichnis wird nicht erstellt.

Hier setzt der logische Operator ! kommt herein. Es fungiert als logisches NICHT. Wenn der Test also erfolgreich ist (dh das Verzeichnis existiert), wird das ! dreht das auf "NICHT Erfolg" um, was Misserfolg ist. Der zweite Befehl ist also nicht aktiviert.

Wenn der Verzeichnistest fehlschlägt (dh das Verzeichnis existiert nicht), wird die ! ändert die Antwort auf „NICHT Versagen“, was Erfolg ist. Der Befehl zum Erstellen des fehlenden Verzeichnisses wird also ausgeführt.

So wenig! packt viel Punch, wenn Sie es brauchen!

ls -l -d backup

Um den Status des Sicherungsordners zu überprüfen, verwenden Sie den Befehl ls und die Optionen -l (lange Liste) und -d (Verzeichnis), wie unten gezeigt:

EIN

!24

Sie können auch Befehle aus Ihrem Befehlsverlauf mit dem Ausrufezeichen ausführen.  Der Befehl history listet Ihren Befehlsverlauf auf und Sie geben dann die Nummer des Befehls ein, den Sie erneut ausführen möchten mit !  um es auszuführen, wie unten gezeigt:

EIN

!!

Folgendes führt den vorherigen Befehl erneut aus:

$ Variable Ausdrücke In der Bash-Shell erstellen Sie Variablen zum Speichern von Werten. Einige wie Umgebungsvariablen,

immer vorhanden, und Sie können jederzeit darauf zugreifen, wenn Sie ein Terminalfenster öffnen. Diese enthalten Werte wie Ihren Benutzernamen, Ihr Home-Verzeichnis und Ihren Pfad.

echo $USER
echo $HOME
echo $PATH

Sie können echo verwenden, um den Wert einer Variablen anzuzeigen. Stellen Sie einfach dem Variablennamen das Dollarzeichen ($) voran, wie unten gezeigt:

Ein

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

Um eine Variable zu erstellen, müssen Sie ihr einen Namen und einen Wert geben, den sie aufnehmen soll.  Sie müssen das Dollarzeichen nicht verwenden, um eine Variable zu erstellen.  Sie fügen nur $ hinzu, wenn Sie auf eine Variable verweisen, wie im folgenden Beispiel:

Ein

Fügen Sie geschweifte Klammern ( {} ) um das Dollarzeichen hinzu und führen Sie eine Parametererweiterung durch, um den Wert der Variablen zu erhalten und weitere Transformationen des Werts zu ermöglichen.

MyString=123456qwerty

Dadurch wird eine Variable erstellt, die eine Zeichenfolge enthält, wie unten gezeigt:

echo ${MyString}

Verwenden Sie den folgenden Befehl, um die Zeichenfolge an das Terminalfenster zu senden:

echo ${myString:6}

Um die Teilzeichenfolge ab Position 6 der gesamten Zeichenfolge zurückzugeben, verwenden Sie den folgenden Befehl (es gibt einen Null-Offset, also ist die erste Position Null):

echo ${myString:0:6}

Wenn Sie eine Teilzeichenfolge zurückgeben möchten, die bei Position Null beginnt und die nächsten sechs Zeichen enthält, verwenden Sie den folgenden Befehl:

echo ${myString:4:4}

Verwenden Sie den folgenden Befehl, um eine Teilzeichenfolge zu wiederholen, die an Position vier beginnt und die nächsten vier Zeichen enthält:

EIN

Zitieren von Sonderzeichen

Wenn Sie ein Sonderzeichen als wörtliches (nicht spezielles) Zeichen verwenden möchten, müssen Sie dies der Bash-Shell mitteilen. Dies wird als Zitieren bezeichnet und es gibt drei Möglichkeiten, dies zu tun.

Wenn Sie den Text in Anführungszeichen ("…") einschließen, verhindert dies, dass Bash auf die meisten Sonderzeichen reagiert, und sie werden einfach gedruckt. Eine bemerkenswerte Ausnahme ist jedoch das Dollarzeichen ($). Es fungiert weiterhin als Zeichen für variable Ausdrücke, sodass Sie die Werte von Variablen in Ihre Ausgabe einschließen können.

echo "Today is $(date)"

Dieser Befehl gibt beispielsweise Datum und Uhrzeit aus:

echo 'Today is $(date)'

Wenn Sie den Text wie unten gezeigt in einfache Anführungszeichen ('…') setzen, wird die Funktion aller Sonderzeichen beendet:

echo "Today is $(date)"

Sie können einen umgekehrten Schrägstrich ( ) verwenden, um zu verhindern, dass das folgende Zeichen als Sonderzeichen fungiert. Dies wird als „Entkommen“ des Charakters bezeichnet; siehe das Beispiel unten:

Stellen Sie sich Sonderzeichen nur als sehr kurze Befehle vor. Wenn Sie sich ihre Verwendung merken, kann dies Ihrem Verständnis der Bash-Shell – und der Skripte anderer Leute – enorm förderlich sein.