
Angenommen, ich möchte eine Liste von Dateien durchsehen und sie interaktiv über das Terminal öffnen. Ich verwende
locate filename | head -n 1 | xargs xdg-open
oder so ähnlich. Die andere Möglichkeit ist, mit der Maus auf den angezeigten Dateinamen zu klicken und ihn dann einzufügen.
Mit Tmux kann ich in meinem Terminal navigieren, Zeilen kopieren und in Befehle einbauen. Gibt es eine Möglichkeit, dies in Bash oder Zsh oder vielleicht direkt im Terminalemulator zu tun?
Antwort1
Legen Sie zunächst die Auswahlmöglichkeiten in einem Array ab. Bash-Syntax:
IFS=$'\n' read -r -d '' -a choices < <(locate filename)
Zsh-Syntax:
choices=("${(@f)$(locate filename)}")
Die einfache, aber nicht sehr benutzerfreundliche Möglichkeit, den Benutzer eines der Elemente auswählen zu lassen, besteht in der Verwendung desselect
bauen.
select choice in "${choices[@]}"; do
xdg-open "$choice"
break
done
(Bash-Syntax; dies funktioniert auch in zsh, kann dort aber vereinfacht werden.)
Für eine schönere Oberfläche können Sie verwendenDialog.
menu_args=()
for c in "${choices[@]}"; do
menu_args+=("$c" "$c")
done
if choice=$(dialog --menu "$title" "$LINES" "$COLUMNS" "$LINES" "${menu_args[@]}"); then
xdg-open "$choice"
fi