GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie führe ich ein Skript in der Shell aus, wenn eine Tastenkombination gedrückt wird?

Wie könnte ich ein Skript in der Shell ausführen, wenn eine Tastenkombination gedrückt wird.

Was ich im Wesentlichen brauche, ist, wenn eine Tastenkombination gedrückt wird, sollte das Skript aus einer Datei lesen und diesen Inhalt im Terminal anzeigen.

Akzeptierte Antwort:

Sie können den eingebauten Befehl bind verwenden um eine Tastenkombination so zuzuordnen, dass sie ein Befehls-/Shell-Skript ausführt.

Beispiel

Angenommen, wir möchten den Befehl pwd ausführen , wenn wir F12 drücken Schlüssel.

$ bind '"\e[24~":"pwd\n"'

Wenn ich jetzt F12 drücke an meiner Eingabeaufforderung $ :

$ pwd
/home/saml

Festlegen von Tastaturkürzeln

Sie können die folgende Technik verwenden, um den Escape-Code für eine bestimmte Tastenkombination zu ermitteln. Auf den meisten Systemen drücken Sie Strg + V , loslassen und dann die Taste drücken, für die Sie den Code haben möchten. Es gibt einige andere Systeme, die mit M funktionieren statt V

Beispiel

Drücken Sie Strg + V Lassen Sie dann beide Strg los und V und abschließend F12 drücken in einem Terminalfenster gibt Folgendes zurück:

$ ^[[24~

Diese Ausgabe kann wie folgt interpretiert werden:^[ ist das Esc Schlüssel. Wenn wir also diesen bestimmten Schlüssel mit bind angeben möchten Befehl müssen wir einen \e verwenden um das Esc zu bezeichnen Schlüssel gefolgt von allem anderen von oben. Also das bind Befehl sieht so aus:

$ bind '"\e[24~":"....."'

Ausführen eines Befehls in der Mitte

Sie können auch bind -x verwenden um Tastenkombinationen einzurichten, die Befehle ausführen, während Sie gerade etwas an der Eingabeaufforderung eingeben, und die Ausgabe dieser Befehle wird angezeigt, aber was auch immer Sie an der Eingabeaufforderung eingegeben haben, bleibt intakt.

$ bind -x '"\eW":"..."'

HINWEIS: Diese Methode funktioniert nur mit Tastaturkürzeln, die 1 Zeichen ausgeben, also F12 funktioniert hier nicht.

Beispiel

Lassen Sie uns die Tastenkombination Alt aliasieren + Shift + W .

$ bind -x '"\eW":"who"'

Angenommen, ich gebe den Befehl finger ein :

$ finger

Jetzt drücke 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

Was los ist, ist bind führt den definierten Befehl who aus , nimmt seine Ausgabe und fügt sie vor der Eingabeaufforderung ein. Wenn Sie es wiederholen, werden Sie sehen, was los ist, hier ist die Ausgabe von mir, wie ich es 2 Mal drücke:

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

Ihr Problem

Eine Idee wäre also, den bind -x zu verwenden obige Methode und cat um diese Textdatei bei Ihrer Eingabeaufforderung anzuzeigen:

$ bind -x '"\eW":"cat someinfo.txt"'

Wenn ich jetzt Befehle ausführe, kann ich diese Datei wie folgt 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 angezeigt Befehl oben.

Verwandt:Validieren einer HTLM-Auswahlliste mit Java Script?

Referenzen

  • Wie binde ich in Bash eine Funktionstaste an einen Befehl?

Linux
  1. Wie behandelt man Schalter in einem Shell-Skript?

  2. Wie führe ich Befehle in Gnuplot mit Shell-Skript aus?

  3. Wie führe ich ein Shell-Skript aus, wenn sich eine Datei oder ein Verzeichnis ändert?

  4. So führen Sie ein Skript aus, wenn die xfce-Sitzung endet

  5. So führen Sie ein Shell-Skript beim Start aus

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So verwenden Sie Variablen in Shell-Skripten

So führen Sie einen Shell-Befehl mit Python aus

So erstellen Sie Shell-Skripte

Wie führe ich einen Befehl in einem Shell-Skript aus?

Wie führe ich ein Shellscript aus, wenn ich ein USB-Gerät anschließe?