Unter Linux ist die Bedeutung von Bash nicht zu unterschätzen. Die tägliche Linux-Verwaltung und der Betrieb erfolgen grundsätzlich in Bash. Um die Arbeitseffizienz unter Linux zu verbessern, lautet die Frage daher natürlich, wie man Bash effizient nutzt. Die Verwendung einiger Tastenkürzel in Bash ist der einfachste und direkteste Weg, die Effizienz zu steigern. Dieser Artikel zielt genau darauf ab!

Bash 快捷键大全

Einige Erläuterungen zu den Tastenkürzeln:

  1. CTRL=C: Diese Taste bezieht sich auf die Ctrl-Taste auf einer PC-Tastatur.
  2. ALT=M: Diese Taste ist die ALT-Taste auf einer PC-Tastatur. Wenn Ihre Tastatur diese Taste nicht hat, können Sie stattdessen die ESC-Taste verwenden.
  3. SHIFT=S: Diese Taste ist die Shift-Taste auf einem PC.
  4. ESC=E: Diese Taste ist die ESC-Taste auf einer PC-Tastatur, sie befindet sich im Allgemeinen in der oberen linken Ecke der Tastatur.
  5. BACKSPACE=DEL: Diese Taste ist die Backspace-Taste auf einer PC-Tastatur, sie befindet sich im Allgemeinen in der oberen rechten Ecke des Haupttastenbereichs.
  6. In diesem Artikel ist der in „[]“ eingeschlossene Inhalt der Inhalt der Tastenkürzel. Auf beiden Seiten von „-“ bedeutet, die linke Taste gedrückt zu halten und dann die rechte Taste zu drücken. Auf beiden Seiten von „,“ (Komma) bedeutet, zuerst die linke Taste zu drücken, sie loszulassen und dann die rechte Taste zu drücken. Zum Beispiel bedeutet [CTRL-v], die Ctrl-Taste zu drücken, nicht loszulassen und dann die v-Taste zu drücken.
  7. Standardmäßig ist das Zusammensetzungsformat eines Tastenkürzels: <CTRL | ALT | ESC >-[SHIFT-]<char>. Das heißt, es beginnt mit einem von Ctrl, Alt, Esc, gefolgt von einem Bindestrich, Shift, einem Bindestrich und einem Zeichen. Dabei können das Shift und das „-“ innerhalb der Klammern manchmal weggelassen werden.
  8. Standardmäßig ist nur die letzte Taste eines Tastenkürzels ein Zeichen; die anderen Tastenwerte sind alle Funktionstasten.
  9. Bei Tastenkürzeln wie [CTRL-?] gilt: Da „?“ ein Zeichen ist, das die Shift-Taste erfordert, werden solche Tastenkürzel standardmäßig als [CTRL-SHIFT-?] behandelt.

Beachten Sie, dass Tastenkürzel in Bash in Oktal- oder Hexadezimalform geschrieben werden können (nach dem Escape-Zeichen); Tastenkürzel in Skriptdateien funktionieren nicht immer. Außerdem folgen Tastenkürzel einem Muster:Tastenkürzel, die mit Ctrl beginnen, gelten im Allgemeinen für Zeichen, während Tastenkürzel, die mit Alt beginnen, im Allgemeinen für Wörter gelten.。

Unter Bash können die Tastenkürzel anders sein, wenn Sie eine Shell-Skriptdatei verwenden. Manchmal kann sich dasselbe Tastenkürzel anders verhalten. Dies wird im Allgemeinen dadurch verursacht, dass sich Bash in unterschiedlichen Modi befindet. Sie können den Modus mit dem Befehl set anpassen:

set -o emacs
##切到emacs模式
set -o vi
##切到vi模式
set -o
## 查看当前选项的设置状态

Dies ist eine Optionseinstellung von Bash; Sie können sie je nach konkreter Situation konfigurieren. Dieser Artikel verwendet den emacs-Modus.

Tastenkürzel Tastenkürzel-Beschreibung
CTRL-A Bewegt den Cursor an den Anfang der Zeile (auf der Kommandozeile).
CTRL-B Backspace (nicht destruktiv). Dies bewegt die Cursorposition nur um eine Position zurück.
CTRL-C Unterbricht und beendet einen Vordergrund-Job.
CTRL-D "EOF" (Ende der Datei). Es wird verwendet, um das Ende der Standardeingabe (stdin) anzuzeigen. Wenn Sie Text in einer Konsole oder einem xterm-Fenster eingeben, löscht CTRL-D das Zeichen unter dem Cursor.

Beenden einer Shell (ähnlich wie exit). Wenn keine Zeichen vorhanden sind, meldet CTRL-D die Sitzung ab. In einem xterm-Fenster bewirkt dies das Schließen des Fensters.

CTRL-E Den Cursor an das Ende der Zeile bewegen (auf der Kommandozeile).
CTRL-F Den Cursor um ein Zeichen vorwärts bewegen (auf der Kommandozeile).
CTRL-G BEL. Auf einigen alten Druckerterminals lässt dies eine Glocke ertönen. Auf xterm-Terminals kann es ein Piepton sein.
CTRL-H Löschen (Rubout) (destruktives Backspace). Während sich der Cursor rückwärts bewegt, löscht er gleichzeitig das Zeichen vor dem Cursor.
CTRL-I Horizontaler Tabulator.
CTRL-J Neue Zeile (Zeilenvorschub und Wagenrücklauf zum Zeilenanfang). In Skripten kann sie auch in oktaler Form ('/012') oder hexadezimaler Form ('/x0a') dargestellt werden.
CTRL-K Vertikaler Tabulator. Bei der Texteingabe in einer Konsole oder einem xterm-Fenster löscht CTRL-K alle Zeichen von der Cursorposition bis zum Zeilenende.

In Skripten kann er auch in oktaler Form ('/013') oder hexadezimaler Form ('/x0b') dargestellt werden. In Skripten kann sich CTRL-K anders verhalten. Das folgende Beispiel zeigt das unterschiedliche Verhalten:

#!/bin/bash
## 一个CTRL-K垂直制表符的例子

var=$'/x0aBottom Line/x0bTop line/x0a'
## 直接输出
echo "$var"
## 使用col来过滤控制字符
echo "$var" | col

## 上面的显示将会不一样

exit 0
CTRL-L Formularvorschub, Seitenvorschub, Bildschirm löschen.

Den Terminalbildschirm löschen. Auf einem Terminal funktioniert dieser Befehl genauso wie der Befehl clear. Wenn dieser Befehl jedoch an einen Drucker gesendet wird, springt Ctrl-L direkt zum Ende des Papierblatts.

CTRL-M Wagenrücklauf.
CTRL-N Eine aus dem Verlaufspuffer (in der Befehlszeile) abgerufene Textzeile löschen. Wenn die aktuelle Eingabe aus dem Verlauf ausgewählt ist, liefert jeder Tastendruck, ausgehend von diesem Verlaufseintrag, einen neueren Befehl.
CTRL-O Eine neue Zeile erzeugen (auf der Befehlszeile).
CTRL-P Den vorherigen Befehl aus dem Verlaufspuffer abrufen (auf der Befehlszeile). Diese Tastenkombination ruft Befehle in der Reihenfolge vom neuesten zum ältesten ab; das heißt, einmal drücken ruft den vorherigen Befehl ab, und erneut drücken ruft den Befehl davor ab. Sowohl dies als auch CTRL-N beginnen bei der aktuellen Eingabe, aber die beiden Befehle arbeiten in genau entgegengesetzten Richtungen: CTRL-N geht vom Startpunkt aus vom ältesten zum neuesten (wenn der Startpunkt ein historischer Befehl ist).
CTRL-Q Fortsetzen (XON). Fortsetzen/Auftauen. Dieser Befehl wird verwendet, um stdin des Terminals wiederherzustellen; siehe CTRL-S.
CTRL-R Rückwärtssuche durch den Text im Verlaufspuffer (auf der Befehlszeile). Hinweis: Nach dem Drücken wird die Eingabeaufforderung zu `(reverse-i-search)`: Der eingegebene Suchtext erscheint in einfachen Anführungszeichen, und der neueste am besten passende Verlaufsbefehl erscheint nach dem Doppelpunkt.
CTRL-S Anhalten (XOFF), pausieren. Dies friert stdin des Terminals ein. Zum Fortsetzen CTRL-Q drücken.
CTRL-T Das Zeichen an der Cursorposition mit dem Zeichen eine Position vor dem Cursor vertauschen (auf der Befehlszeile). Zum Beispiel: `echo $var;`, angenommen der Cursor steht auf `a`, dann tauschen nach Drücken von C-T `v` und `a` die Positionen: `echo $avr;`.
CTRL-U Alle Zeichen von der Cursorposition bis zum Zeilenanfang löschen. In einigen Einstellungen löscht CTRL-U die gesamte Eingabezeile unabhängig von der Cursorposition.
CTRL-V Bei der Texteingabe können Sie nach dem Drücken von C-V Steuerzeichen einfügen. Zum Beispiel: `echo -e '/x0a';` und `echo <CTRL-V><CTRL-J>;` haben diese beiden dieselbe Wirkung. Diese Funktion ist in Texteditoren sehr nützlich.
CTRL-W Beim Eingeben von Text in einer Konsole oder einem xterm-Fenster löscht CTRL-W den Inhalt von der Cursorposition rückwärts bis zum ersten Leerraumzeichen. In einigen Einstellungen löscht CTRL-W Zeichen vom Cursor rückwärts bis zum ersten Zeichen, das weder ein Buchstabe noch eine Ziffer ist.
CTRL-X In einigen Textverarbeitungsprogrammen schneidet dieses Steuerzeichen den markierten Text aus und kopiert ihn in die Zwischenablage.
CTRL-Y Zuvor gelöschten Text wieder einfügen (hauptsächlich für CTRL-U oder CTRL-W).
CTRL-Z Einen Vordergrundjob anhalten; in einigen Textverarbeitungsprogrammen wird es auch als Ersetzungsoperation verwendet; im MSDOS-Dateisystem dient es als EOF-Zeichen (End-of-file).
CTRL-/ Beenden. Ähnlich wie STRG-C kann es auch eine "core"-Datei in Ihr Arbeitsverzeichnis schreiben (diese Datei ist für Sie möglicherweise nutzlos).
CTRL-/ Vorgang rückgängig machen.
STRG-_ Vorgang rückgängig machen.
STRG-xx Zwischen dem Zeilenanfang und der Cursorposition umschalten; dabei handelt es sich um zwei "x"-Zeichen.
ALT-B Der Cursor springt ein Wort rückwärts, wobei Wörter durch Nicht-Buchstaben-Zeichen getrennt werden (springt an den Anfang des aktuellen Wortes an der Cursorposition).
ALT-F Der Cursor springt ein Wort vorwärts (bewegt sich zum Ende des aktuellen Wortes an der Cursorposition).
ALT-D Löscht den gesamten Inhalt von der Cursorposition bis zum Ende des aktuellen Wortes (wenn sich der Cursor am Wortanfang befindet, wird das gesamte Wort gelöscht).
ALT-BASKSPACE Lösche den gesamten Inhalt von der Cursorposition bis zum Wortanfang.
ALT-C Wandelt den Buchstaben an der Cursorposition in einen Großbuchstaben um (wenn sich der Cursor am oder vor dem Wortanfang befindet, wird der erste Buchstabe des Wortes großgeschrieben).
ALT-U Wandelt alle Buchstaben von der Cursorposition bis zum Wortende in Großbuchstaben um.
ALT-L Wandelt alle Buchstaben von der Cursorposition bis zum Wortende in Kleinbuchstaben um.
ALT-R Verwirft alle Änderungen und stellt die aktuelle Zeile im Verlauf in ihren ursprünglichen Zustand wieder her (vorausgesetzt, der aktuelle Befehl stammt aus dem Verlauf; wenn er manuell eingegeben wurde, wird die Zeile geleert).
ALT-T Wenn sich Wörter auf beiden Seiten des Cursors befinden, werden die Positionen der Wörter auf beiden Seiten vertauscht. Zum Beispiel: `abc <ALT-T>bcd -> bcd abc`
ALT-. Verwenden Sie das letzte Wort des vorherigen Befehls (der Befehl selbst wird ebenfalls als Wort betrachtet; siehe das Konzept des Wortindikators im Abschnitt Bang-Befehle des nächsten Artikels).
ALT-_ Dasselbe wie ALT-.
ALT-Zahl Dieser numerische Wert kann positiv oder negativ sein. Diese Taste allein hat keine Wirkung; auf sie muss anderer Inhalt folgen. Wenn ein Zeichen folgt, gibt sie die Anzahl der Wiederholungen an. Zum Beispiel: [ALT-10,k] fügt 10 'k'-Zeichen an der Cursorposition ein (negative Werte sind in diesem Fall ungültig); wenn ein Befehl folgt, beeinflusst die Zahl das Ausführungsergebnis des nachfolgenden Befehls. Zum Beispiel: [ALT--10,CTRL-D] führt den Vorgang 10-mal in der entgegengesetzten Richtung zur Standardrichtung von CTRL-D aus (negativ).
ALT-< Wechseln Sie zum ersten Befehl in der Historie.
ALT-> Wechseln Sie zur letzten Zeile in der Historie, d. h. zur aktuell eingegebenen Zeile (leer, wenn keine Eingabe vorhanden ist).
ALT-P Suchen Sie vorwärts, beginnend bei der aktuellen Zeile, und gehen Sie bei Bedarf "nach oben"; verwenden Sie während des Bewegens eine nicht-inkrementelle Suche, um die vom Benutzer angegebene Zeichenkette zu finden.
ALT-N Vorwärts von der aktuellen Zeile aus suchen, wobei bei Bedarf "nach unten" gegangen wird. Beim Bewegen eine nicht-inkrementelle Suche verwenden, um die vom Benutzer angegebene Zeichenfolge zu finden.
ALT-CTRL-Y Fügt das erste Argument des vorherigen Befehls (üblicherweise das zweite Wort der vorherigen Zeile) am Punkt ein. Wenn Argument n angegeben ist, wird das n-te Wort des vorherigen Befehls eingefügt (die Wortzählung beginnt bei 0; siehe History Expansion). Ein negatives Argument fügt das n-te Wort vom Ende des vorherigen Befehls ein. Das Argument n wird über M-No. übergeben, z. B. fügt [ALT-0, ALT-CTRL-Y] das 0-te Wort des vorherigen Befehls ein (den Befehl selbst).
ALT-Y Rotiert den Kill-Ring und kopiert den neuen obersten Text. Dieser Befehl kann nur nach yank [CTRL-Y] oder yank-pop [M-Y] verwendet werden.
ALT-? Listet die möglichen Vervollständigungen des Textes vor dem Punkt auf.
ALT-* Fügt vor dem Punkt alle Texteinträge ein, die der Befehl possible-completions [ALT-?] erzeugen kann.
ALT-/ Versucht eine Dateinamenvervollständigung für den Text vor dem Punkt. [CTRL-X,/] behandelt den Text vor dem Punkt als Dateinamen und listet mögliche Vervollständigungen auf.
ALT-~ Behandeln Sie den Text vor dem Punkt als Benutzernamen und versuchen Sie eine Vervollständigung. [CTRL-X,~] listet mögliche Vervollständigungen für den Text vor dem Punkt als Benutzernamen auf.
ALT-$ Behandeln Sie den Text vor dem Punkt als Shell-Variable und versuchen Sie eine Vervollständigung. [CTRL-X,$] listet mögliche Vervollständigungen für den Text vor dem Punkt als Variablen auf.
ALT-@ Behandeln Sie den Text vor dem Punkt als Hostnamen und versuchen Sie eine Vervollständigung. [CTRL-X,@] listet mögliche Vervollständigungen für den Text vor dem Punkt als Hostnamen auf.
ALT-! Behandeln Sie den Text vor dem Punkt als Befehlsnamen und versuchen Sie eine Vervollständigung. Bei der Vervollständigung von Befehlsnamen werden nacheinander Aliase, reservierte Wörter, Shell-Funktionen, Shell-Builtins und schließlich ausführbare Dateinamen verwendet. [CTRL-X,!] behandelt den Text vor dem Punkt als Befehlsnamen und listet mögliche Vervollständigungen auf.
ALT-TAB Vergleichen Sie den Text vor dem Punkt mit Text in der Verlaufsliste, um Übereinstimmungen zu finden, und versuchen Sie eine Vervollständigung.
ALT-{ Führen Sie eine Dateinamenvervollständigung durch und setzen Sie die Liste möglicher Vervollständigungen in geschweifte Klammern, damit die Shell sie verwenden kann.

Unter Bash werden Operationen auf einem Linux-System sehr schnell, wenn Sie Tastenkürzel richtig verwenden können. Wenn wir beispielsweise cat verwenden, um eine Datei zu erstellen, können wir das Tastenkürzel [CTRL-D] verwenden:

## 不用快捷键
cat >>/tmp/test<<_EOF
##这里是内容
##最后我们要在新行里面输入_EOF
##cat见到_EOF才会将内容写到文件中

##使用快捷键
cat >>/tmp/test
##这里输入内容
##输入完毕之后,直接[CTRL-D]结束

Manchmal müssen wir eine Datei erstellen und dann mit ihr arbeiten:

touch /tmp/a-test-file-from-blog.useasp.net

## 不使用快捷键,文件名要重新输入
chmod u+x /tmp/a-test-file-from-blog.useasp.net

##使用快捷键
chmod u+x <ALT-.>
## 快捷键[M-.]自动会将上面的最后一个参数附加

Wie wär's damit? Ist das nicht effizienter?

Natürlich erreicht man mit Bash-Tastenkürzeln wahre Effizienz nur durch ständige Nutzung. Anfangs, wenn man lange darüber nachdenken muss, welches Tastenkürzel man verwenden soll, ist es schwer, effizient zu sein – aber das Schärfen der Axt verzögert das Holzfällen nicht, und die anfängliche Investition lohnt sich.

Wenn du möchtest, dass sich deine Bash ein wenig anders verhält, kannst du Tastenkürzel auch selbst mit dem Befehl bind anpassen. Die Tastenkürzel in Bash werden tatsächlich von Readline bereitgestellt; daher ist das Festlegen von Tastenkürzeln hier eigentlich das Konfigurieren von Readline. Es gibt zwei Arten von Tastenkürzeln in Readline: Eine sind die internen Funktions-Tastenkürzel von Readline, und die andere führt Shell-Befehle aus. Beim Einrichten unterscheiden sie sich geringfügig:

##查看Readline中可以使用的函数名称
bind -l
##查看当前绑定的案件配置与其对应的功能
bind -v
##已经绑定的快捷键
bind -p

##绑定自定义执行命令shell命令的快捷键
bind -x '"/C-x/C-l":ls -al'
## 绑定后,按[C-x,C-L]就能执行ls -al

## 绑定内置函数功能
bind "/C-x":backword-delte-char
##这个是这行Readline库中的函数backword-delte-char

Diese Einstellung gilt nur für die aktuelle Sitzung. Sobald die Sitzung verloren geht, gehen so festgelegte Tastenkürzel verloren. Um die Tastenkürzel dauerhaft zu machen, müssen wir die Tastenkürzel-Konfiguration in eine Datei schreiben. In Linux gibt es zwei Orte, um Tastenkürzel dauerhaft zu speichern: die globale und die benutzerspezifische Konfigurationsdatei. Die globale ist /etc/inputrc, und die benutzerspezifische ist ~/.inputrc im Home-Verzeichnis des Benutzers. Die globale wirkt sich auf alle Benutzer aus, während die im Home-Verzeichnis des Benutzers nur den entsprechenden Benutzer betrifft. Eine Beispiel-inputrc-Datei sieht ungefähr so aus:

## 本例来自CentOS6.4的默认配置文件
$if mode=emacs

# for linux console and RH/Debian xterm
"/e[1~": beginning-of-line
"/e[4~": end-of-line
# commented out keymappings for pgup/pgdown to reach begin/end of history
#"/e[5~": beginning-of-history
#"/e[6~": end-of-history
"/e[5~": history-search-backward
"/e[6~": history-search-forward
"/e[3~": delete-char
"/e[2~": quoted-insert
"/e[5C": forward-word
"/e[5D": backward-word
"/e[1;5C": forward-word
"/e[1;5D": backward-word

# for rxvt
"/e[8~": end-of-line
"/eOc": forward-word
"/eOd": backward-word

# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"/eOH": beginning-of-line
"/eOF": end-of-line

# for freebsd console
"/e[H": beginning-of-line
"/e[F": end-of-line
$endif

Notizen:

  1. In der Konfigurationsdatei steht /C für CTRL, /M für ALT, /e für ESC, // ist der Backslash /, /' ist das einfache Anführungszeichen und /" ist das doppelte Anführungszeichen.
    /C-    control prefix
    /M-    meta prefix
    /e     an escape character
    //     backslash
    /"     literal ", a double quote
    /’     literal ’, a single quote
    
  2. Um die Zeichenfolge einer Funktionstaste anzuzeigen, kannst du [CTRL-V] verwenden oder cat eingeben und Enter drücken, um in den Editiermodus zu gelangen, und dann das Tastenkürzel direkt drücken.
  3. Die Konfigurationsdatei kann Zeichen in Oktal- oder Hexadezimalform darstellen.

Wenn wir passende Tastenkürzel für häufige Operationen festlegen, können Befehle, für die zuvor viel Tippen nötig war, mit nur einem Tastenkürzel ausgeführt werden. Das wird unsere Arbeitseffizienz zweifellos stark verbessern! Nutze Tastenkürzel, junger Mann!

Quelle: http://www.codeceo.com/article/bash-shortcut.html