15 Spezielle Zeichen, die Sie Brauchen, um Wissen für die Bash

0
4998

Wenn Sie möchten master die Bash-shell unter Linux, macOS oder anderen UNIX-artigen system, spezielle Zeichen (wie ~, *, |, und >) sind kritisch. Wir werden Ihnen helfen, zu entwirren, diese kryptischen Linux-Kommando-Sequenzen und werden Sie ein held von Hieroglyphen.

Was Sind Sonderzeichen?

Es gibt eine Menge von Zeichen, die Bash-shell, behandelt in zwei verschiedene Arten. Wenn Sie geben Sie an der shell, Sie fungieren als Anweisungen oder Befehle und sagen, die shell, die zur Ausführung einer bestimmten Funktion. Denke, von Ihnen als ein-Zeichen-Befehle.

Manchmal, Sie wollen einfach nur zu drucken ein Zeichen und Sie brauchen es nicht zu handeln, wie das Magische symbol. Es gibt einen Weg, können Sie einen Charakter, um sich selbst vertreten, anstatt seine spezielle Funktion.

Wir zeigen Ihnen, welche Zeichen sind “Spezial -” oder “meta -” – Zeichen, als auch, wie Sie Sie verwenden können funktional und praktisch.

~ Home-Verzeichnis

Die tilde (~) ist ein Kürzel für Ihr Homeverzeichnis. Es bedeutet, dass Sie nicht haben, um geben Sie den vollständigen Pfad zu Ihrem home-Verzeichnis-Befehle. Überall dort, wo Sie im Dateisystem, können Sie mit diesem Befehl wechseln Sie in Ihr home-Verzeichnis:

cd ~

Sie können diesen Befehl auch mit relativen Pfaden. Zum Beispiel, wenn man irgendwo in der Datei-system, das nicht unter deinem home-Ordner und ändern wollen, um das Archiv-Verzeichnis in Ihrem Arbeitsverzeichnis, verwenden Sie die tilde, es zu tun:

cd ~/work/Archiv

. Aktuellen Verzeichnis

Ein Punkt (.) stellt das aktuelle Verzeichnis dar. Sehen Sie es in Verzeichnis-listings, wenn Sie die-a (all) option mit ls.

ls-a

Sie können auch den Zeitraum, in Befehle repräsentieren, der den Pfad zum aktuellen Verzeichnis. Zum Beispiel, wenn Sie möchten, führen Sie ein Skript aus dem aktuellen Verzeichnis, Sie würde es so nennen:

./script.sh

Das sagt die Bash zu schauen, in das aktuelle Verzeichnis für die script.sh Datei. Auf diese Weise, es wird nicht suchen, die Verzeichnisse im Pfad zum passenden ausführbaren Datei oder einem Skript.

.. Das Übergeordnete Verzeichnis

Die Doppelstunde oder “double dot” (..) steht für das übergeordnete Verzeichnis Ihres aktuellen. Sie können diese zu bewegen, bis eine Ebene in der Verzeichnisstruktur.

cd ..

Sie können diesen Befehl auch mit relativen Pfaden—zum Beispiel, wenn Sie wollen, gehen Sie eine Ebene höher in der Verzeichnisstruktur, und klicken Sie dann geben Sie ein anderes Verzeichnis auf dieser Ebene.

Sie können dieses Verfahren auch verwenden, um schnell zu einem Verzeichnis auf der gleichen Ebene in der Verzeichnisstruktur wie Ihre aktuelle. Sie hüpfen auf einer Ebene, und dann wieder hinunter in ein anderes Verzeichnis.

cd ../gc_help

/ Verzeichnis-Pfad-Separator

Sie können einen vorwärts-Schrägstrich (/)—oft nur als ein Schrägstrich zum trennen der Verzeichnisse in pathname.

ls ~/work/Archiv

Einen vorwärts-Schrägstrich stellt den kürzesten Pfad zum Verzeichnis. Denn alles, was in den Linux-Verzeichnisbaum beginnt an der Wurzel-directory verwenden, können Sie mit diesem Befehl verschieben in das root-Verzeichnis schnell:

cd /

# Kommentar-oder Trim-Strings

Am häufigsten verwenden Sie den hash-oder Nummernzeichen (#) um der shell zu sagen, was folgt, ist ein Kommentar, und es sollte nicht danach handeln. Es kann in shell-Skripten und—weniger sinnvoll—auf der Kommandozeile.

# Dies wird ignoriert von der Bash-shell

Es ist nicht wirklich ignoriert, aber, denn es ist Hinzugefügt, um Ihre Kommando-history.

Sie können auch die hash-so schneiden Sie ein string-variable, und entfernen Sie einige der text von Anfang an. Dieser Befehl erstellt eine string-variable namens this_string.

In diesem Beispiel weisen wir der text “Dave Geek!” zu der variable.

this_string=”Dave Geek!”

Dieser Befehl echo verwendet zum drucken die Worte “How-To” in das terminal-Fenster. Sie ruft den gespeicherten Wert in die string-variable per parameter-expansion. Denn wir hängen Sie den hash und den text “Dave,” es beschneidet, der Teil des Strings, bevor es übergeben echo.

echo-How-To: ${this_string#Dave}

Das ändert nichts an der gespeicherte Wert in die string-variable; es wirkt sich nur auf das, was gesendet wird echo. Wir können echo drucken Sie den Wert der string-variable noch einmal und prüfen:

echo $this_string

? Einzelnes Zeichen Platzhalter

Die Bash-shell unterstützt drei wildcards, von denen das Fragezeichen (?). Sie Platzhalter verwenden, um ersetzen von Zeichen in Dateinamen-Vorlagen. Ein Dateiname enthält einen Platzhalter bildet eine Vorlage, entspricht eine Reihe von Dateinamen, anstatt nur eine.

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

ls badge?.txt

Dies übersetzt sich als “Liste eine Datei mit einem Namen, der beginnt mit ‘Abzeichen’ und wird gefolgt von einem beliebigen einzelnen Zeichen vor dem Dateinamen-Erweiterung.”

Es stimmt mit den folgenden Dateien. Beachten Sie, dass einige zahlen und einige Buchstaben nach dem “badge” – Teil des Dateinamens. Die Fragezeichen Platzhalter passen beide Buchstaben und zahlen.

Das mit dem Namen der Vorlage stimmt nicht überein “badge.txt”, obwohl, weil der Dateiname nicht mit einem einzelnen Zeichen zwischen “Abzeichen” und der Datei-Erweiterung. Der Fragezeichen-Platzhalter muss mit einem entsprechenden Zeichen im Dateinamen.

Sie können auch verwenden Sie das Fragezeichen, um alle Dateien mit einer bestimmten Anzahl von Zeichen im Dateinamen. Diese listet alle text-Dateien, die genau fünf Zeichen in den Dateinamen:

ls ?????.txt

* Zeichenfolge Platzhalter

Sie können wählen Sie den Sternchen-Platzhalter (*) stehen für eine beliebige Folge von Zeichen, einschließlich kein Zeichen. Betrachten Sie die folgende Vorlage für Dateinamen:

ls-Abzeichen*

Dies entspricht allen der folgenden:

Es entspricht “badge.txt” weil die wildcard steht für eine beliebige Folge von Zeichen oder keine Zeichen.

Dieser Befehl findet alle Dateien mit der Bezeichnung “Quelle”, unabhängig von der Datei-Erweiterung.

ls-Quelle.*

[] Zeichensatz-Wildcard

Wie oben beschrieben, verwenden Sie das Fragezeichen als Platzhalter für einzelnes Zeichen und ein Sternchen für jede beliebige Folge von Zeichen (einschließlich keine Zeichen).

Können Sie einen Platzhalter mit eckigen Klammern ( [] ) und die Charaktere, die Sie enthalten. Die relevanten Zeichen in den Dateinamen müssen dann entsprechen mindestens eines der Zeichen im Platzhalter-Zeichensatz.

In diesem Beispiel wird der Befehl heißt übersetzt: “eine Datei mit einem “.png” Erweiterung, einen Dateinamen beginnend mit “pipes_0,” und in dem das nächste Zeichen ist entweder 2, 4 oder 6.”

ls badge_0[246].txt

Sie können mehr als ein Satz Klammern pro Vorlage für Dateinamen:

ls badge_[01][789].txt

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

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

; Shell-Befehl Separator

Geben Sie so viele Befehle, wie Sie auf der Befehlszeile, solange du trennst Sie jeweils mit einem Semikolon (;). Wir tun dies im folgenden Beispiel:

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

Beachten Sie, dass der zweite Befehl ausgeführt wird auch wenn der erste ausfällt, der Dritte läuft, auch wenn die zweite ausfällt, und so weiter.

Wenn Sie möchten, stoppen Sie die Reihenfolge der Ausführung, wenn ein Befehl fehlschlägt, verwenden eine doppelte kaufmännisches und-Zeichen (&&) statt eines Semikolon:

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

Und Hintergrund-Prozess

Nachdem Sie geben Sie einen Befehl in ein terminal-Fenster und es abgeschlossen ist, kehren Sie zurück zu der Eingabeaufforderung. Normalerweise dauert nur einen moment oder zwei. Aber wenn Sie eine andere Anwendung starten, wie gedit, die Sie nicht verwenden können Sie Ihre terminal-Fenster, bis Sie die Anwendung schließen.

Sie können jedoch eine Anwendung starten, die als hintergrund-Prozess weiter zu verwenden das terminal-Fenster. Um dies zu tun, fügen Sie einfach ein kaufmännisches und-Zeichen auf der Kommandozeile:

gedit command_address.Seite &

Bash zeigt Sie die Prozess-ID, was gestartet, und dann gibt Sie den Befehl Linie. Sie können dann weiterhin in Ihrem terminal-Fenster.

< Input Redirection

Viele Linux-Befehle akzeptieren, eine Datei als parameter, und nehmen Sie Ihre Daten aus dieser Datei. Die meisten dieser Befehle können auch Eingaben aus einem stream. Einen stream erstellen, verwenden Sie die linke Spitze Klammer ( < ), wie im folgenden Beispiel leiten Sie eine Datei in einem Befehl:

Sortieren < words.txt

Wenn ein Befehl die Eingabe umgeleitet hinein, es könnte sich anders Verhalten, als wenn es liest aus einer Datei mit dem Namen.

Wenn wir mit wc zum zählen der Wörter, Zeilen und Zeichen in einer Datei, druckt es die Werte, und dann den Dateinamen. Wenn wir leiten den Inhalt der Datei wc, druckt es die gleichen numerischen Werte, aber nicht wissen, den Namen der Datei, aus der die Daten kommen. Es kann nicht drucken eines mit dem Namen.

Hier sind einige Beispiele wie Sie verwenden können, wc:

wc words.txt
wc < words.txt

> Ausgabe-Umleitung

Können Sie mit der rechten Spitzen Klammer ( > ) Umleitung der Ausgabe eines Befehls (in der Regel in einer Datei); hier ein Beispiel:

ls > files.txt
Katze files.txt

Ausgabe-Umleitung kann auch redirect Fehlermeldungen, wenn Sie eine Ziffer (2, in unserem Beispiel) mit >. Hier ist, wie es zu tun:

wc doesntexist.txt 2> errors.txt
Katze errors.txt

RELATED: Was Sind stdin, stdout und stderr auf Linux?

| Pipe

Ein “Rohr” Ketten-Befehle zusammen. Es nimmt die Ausgabe von einem Befehl und gibt ihn an den nächsten als Eingabe. Die Anzahl der weitergeleiteten Befehle (die Länge der Kette) ist beliebig.

Hier verwenden wir die Katze zu füttern, den Inhalt der words.txt Datei in grep, die Auszüge jede Zeile, die enthält entweder ein klein oder groß geschrieben “C.” grep wird dann passieren diese Zeilen zu Sortieren. Art ist die Verwendung des-r – (reverse) – option, so werden die sortierten Ergebnisse erscheinen in umgekehrter Reihenfolge.

Wir tippte die folgenden:

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

! Pipeline logische NICHT-und-Geschichte-Operator

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

Es gibt zwei Befehle in dieser Kommandozeile aus:

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

  • Der erste Befehl ist der text innerhalb der eckigen Klammern;
  • Der zweite Befehl ist der text, der folgt die doppelte kaufmännische und-Zeichen &&.

Der erste Befehl verwendet ! als ein logischer operator. Die eckigen Klammern weisen darauf hin ein test gemacht werden. -D (directory) option testet, ob ein Verzeichnis namens backup. Der zweite Befehl erstellt das Verzeichnis.

Da die Doppel-kaufmännische und-Zeichen trennen Sie die beiden Befehle die Bash wird nur ausgeführt, die zweite, wenn die erste erfolgreich ist. Jedoch, das ist das Gegenteil von dem, was wir brauchen. Wenn der test für die “backup” – Verzeichnis erfolgreich ist, brauchen wir nicht, um es zu schaffen. Und wenn der test für die “backup “ – Verzeichnis schlägt fehl, der zweite Befehl wird nicht ausgeführt, und das fehlende Verzeichnis wird nicht erstellt werden.

Dies ist, wo der logische operator ! kommt in. Es wirkt wie ein logisches NICHT. Also, wenn der test erfolgreich ist (d.h., das Verzeichnis existiert), die ! flips, der NICHT “Erfolg”, das ist Versagen. So, der zweite Befehl ist nicht aktiviert.

Wenn das Verzeichnis test schlägt fehl (D. H., das Verzeichnis nicht vorhanden ist), die ! änderungen, die die Reaktion auf “NICHT-Versagen”, das ist Erfolg. Also, der Befehl zum erstellen des fehlenden directory ausgeführt wird.

Dass die kleinen ! packt eine Menge punch, wenn Sie Sie brauchen!

Überprüfen Sie den status der backup-Ordner, verwenden Sie den Befehl ls mit der-l (lange Liste) und -d (directory) – Optionen, wie unten gezeigt:

ls -l -d backup

Sie können auch Befehle ausführen Ihren Befehl Geschichte mit dem Ausrufezeichen. Die Geschichte Befehl Befehl listet Ihre Geschichte, und Sie geben Sie dann die Anzahl der von dem Befehl, den Sie möchten, re-run mit ! um es auszuführen, wie unten dargestellt:

!24

Die folgenden re-runs der Vorherige Befehl:

!!

$ Variable Ausdrücke

In der Bash-shell, erstellen Sie Variablen, um Werte enthalten. Einige, wie Umgebungsvariablen, die immer existieren, und Sie können Sie jederzeit öffnen Sie ein terminal-Fenster. Diese Werte enthalten, wie z.B. deinen Nutzernamen, home-Verzeichnis, und Pfad.

Sie können echo, um den Wert einer variable hält—nur vor den Variablennamen mit einem Dollarzeichen ($), wie unten gezeigt:

echo $USER
echo $HOME
echo $PATH

Um eine variable zu erstellen, müssen Sie ihm einen Namen und geben Sie einen Wert für Sie zu halten. Sie müssen nicht mit den dollar-Zeichen, um eine variable zu erstellen. Sie nur $ hinzufügen, wenn Sie auf eine variable, wie im folgenden Beispiel:

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

Fügen Sie geschweifte Klammern ( {} ) rund um die dollar-Zeichen, und führen Sie eine parameter expansion erhalten Sie den Wert der Variablen und können weitere Transformationen der Wert.

Dies erstellt eine variable, die enthält eine Zeichenfolge, wie unten dargestellt:

MyString=123456qwerty

Verwenden Sie den folgenden Befehl echo den string in das terminal-Fenster:

echo ${MyString}

Die Rückkehr der substring beginnend an position 6 der ganze string ist, verwenden Sie den folgenden Befehl (es gibt eine null-offset, also die erste position ist null):

echo ${myString:6}

Wenn Sie möchten echo einen Teilstring beginnt bei position null und enthält die folgenden sechs Zeichen enthalten, benutzen Sie den folgenden Befehl ein:

echo ${myString:0:6}

Verwenden Sie den folgenden Befehl echo einen Teilstring beginnt bei position vier und enthält die folgenden vier Zeichen:

echo ${myString:4:4}

Quotierung Von Sonderzeichen

Wenn Sie möchten, um ein spezielles Zeichen als literal (nicht speziellen) Charakter, Sie haben zu sagen, der Bash-shell. Dies wird als Quotierung, und es gibt drei Möglichkeiten, es zu tun.

Wenn Sie setzen Sie den text in Anführungszeichen (“…”), dies verhindert, dass die Bash handeln auf die meisten Sonderzeichen, und Sie nur drucken. Eine Bemerkenswerte Ausnahme, obwohl, ist das dollar-Zeichen ($). Es noch Funktionen wie das Zeichen für variable Ausdrücke, so können Sie die Werte von Variablen in die Ausgabe.

Zum Beispiel, dieser Befehl druckt das Datum und die Uhrzeit:

echo “Heute ist $(date)”

Wenn Sie setzen Sie den text in einfache Anführungszeichen ( ‘ … ‘ ), wie unten gezeigt, es Stoppt die Funktion alle Sonderzeichen:

echo ‘Heute ist $(date)”

Können Sie einen umgekehrten Schrägstrich ( ), um zu verhindern, dass das folgende Zeichen funktionieren als einen ganz besonderen Charakter. Dies wird als “Flucht” der Charakter; siehe Beispiel unten:

echo “Heute ist $(date)”

Denken Sie nur an besonderen Zeichen, wie sehr kurze Befehle. Wenn Sie merken Sie sich Ihre nutzt, nutzen kann, Ihr Verständnis von der Bash-shell—und anderen Menschen—Skripte-immens.

RELATED: 37 Wichtige Linux-Befehle Sie Kennen Sollten

LESEN SIE WEITER

  • › Wie die finger-Befehl auf Linux
  • › Chrome-Verknüpfung, Die Sie Wissen Sollten
  • › Warum Sollte Man Übertakten des RAM (Es Einfach!)
  • › So Erhöhen Sie Ihre MacBook Speicher
  • › Wie zu Deaktivieren, Wischen-Tippen auf der iPhone-Tastatur