
Ich experimentiere mit dmenu und bin auf ein Problem gestoßen.
Ich möchte ein .bash_history-Menü mit vorherigen Befehlen erstellen, einen auswählen und ihn dann entweder in meinem Terminal ausführen lassen. Hier ist, was ich bisher habe.
cat ~/.bash_history | dmenu -l 20
Wenn dies vom Terminal aus ausgeführt wird, wird meine Auswahl ausgegeben. Wenn ich dies von einem Skript aus ausführe, wird mein gesamter Bash-Verlauf ausgegeben.
Antwort1
Das folgende Skript scheint dmenu aufzurufen und die Auswahl an stdout in Bash zurückzugeben.
#!/bin/bash
cat ~/.bash_history | dmenu -l 20
exit
Ich bin hierher gelangt, als ich bei Google nach der Frage „Wie leite ich die Ausgabe von dmenu in einen Befehl um?“ gesucht habe. Ich habe nach einem einfachen Skript gesucht, um Auswahlen aus dmenu in der Bash-Shell auszuführen. Folgendes scheint in Bash zu funktionieren:
#!/bin/bash
read thing2execute <<< $(cat ~/.bash_history | dmenu -l 20)
$thing2execute
exit
Hier auf der Site suckless.org ist hierfür auch ein viel komplexeres Allzweckskript verfügbar: https://tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history/
Antwort2
Nach einigem Googeln fand ich eine Lösung, die Mikes Antwort ähnelte, aber etwas einfacher war. Sie könnten $() verwenden, um Ihre Aufgabe zu erfüllen
$(cat ~/.bash_history | dmenu -l 20)
Damit können Sie die Ausgabe von dmenu abrufen und als nächsten Befehl ausführen.