Antworten:
Sie können den eingebauten Befehl verwenden, bind
um eine Tastenkombination zuzuordnen, sodass ein Befehls- / Shell-Skript ausgeführt wird.
Angenommen, wir möchten den Befehl ausführen pwd
, wenn wir die Taste drückenF12 Taste drücken.
$ bind '"\e[24~":"pwd\n"'
Jetzt, wenn ich F12auf meine Aufforderung drücke ,$
:
$ pwd
/home/saml
Mit der folgenden Technik können Sie den Escape-Code für eine bestimmte Tastenkombination ermitteln. Auf den meisten Systemen drücken Sie Ctrl+ V, lassen Sie los und drücken Sie dann die Taste, für die Sie den Code möchten. Es gibt einige andere Systeme, mit denen es funktioniertM anstattV
Drücken Sie Ctrl+, lassen Sie Vdann beide Tasten Ctrlund los Vund drücken Sie schließlich F12in einem Terminalfenster, um Folgendes zurückzugeben:
$ ^[[24~
Diese Ausgabe kann wie folgt interpretiert werden, ^[
ist der EscSchlüssel. Wenn wir diesen bestimmten Schlüssel mit dem bind
Befehl angeben möchten, müssen wir a verwenden \e
, um den EscSchlüssel zu kennzeichnen, gefolgt von allem anderen von oben. Der bind
Befehl sieht also so aus:
$ bind '"\e[24~":"....."'
Sie können auch bind -x
Tastenkombinationen einrichten, mit denen Befehle ausgeführt werden, während Sie gerade etwas an der Eingabeaufforderung eingeben. Die Ausgabe dieser Befehle wird angezeigt, aber was auch immer Sie an der Eingabeaufforderung eingegeben haben, bleibt erhalten.
$ bind -x '"\eW":"..."'
HINWEIS: Diese Methode funktioniert nur mit Tastaturkürzeln, die 1 Zeichen ausgeben. Daher F12funktioniert sie hier nicht.
Lassen Sie uns das Tastenkürzel Alt+ Shift+ alias W.
$ bind -x '"\eW":"who"'
Angenommen, ich schreibe den Befehl finger
:
$ finger
Nun schlug ich die Tastenkombination Alt+ Shift+ W:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
Es bind
wird der definierte Befehl ausgeführt, who
dessen Ausgabe übernommen und vor der Eingabeaufforderung eingefügt. Wenn Sie es wiederholen, werden Sie sehen, was los ist. Hier ist die Ausgabe von mir, die es zweimal trifft:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
Eine Idee wäre daher, die bind -x
oben beschriebene Methode zu verwenden und cat
diese Textdatei an Ihrer Eingabeaufforderung anzuzeigen:
$ bind -x '"\eW":"cat someinfo.txt"'
Wenn ich nun Befehle ausführe, kann ich diese Datei folgendermaßen sehen:
This is text from some
multi-line file reminding
me how to do some
stuff
$ finger
Die Ausgabe der Datei someinfo.txt
wird über meinem finger
Befehl oben angezeigt .
echo '
(Leerzeichen nach dem einfachen Anführungszeichen) einzugeben, dann Strg + v zu drücken, dann die gewünschte Taste und dann Leerzeichen, einfaches Anführungszeichen ... wie hier beschrieben . Beispiel:echo ' ^[OD '
bind '"\e[24~":"airmon-ng start wlan0\n"'
aber nachdem ich das Terminal geschlossen habe, scheint das Ding zurückgesetzt zu sein und alle Hotkeys sind weg