
Supongamos que quiero revisar una lista de archivos y abrirla interactivamente a través de la terminal, he estado usando
locate filename | head -n 1 | xargs xdg-open
o algo así. La otra opción es hacer clic en el nombre del archivo que aparece con el mouse y luego pegarlo.
Tmux me permite navegar por mi terminal, copiar líneas e incorporarlas a los comandos. ¿Hay alguna manera de hacer esto en bash o zsh, o quizás directamente en el emulador de terminal?
Respuesta1
Primero coloque las opciones en una matriz. Sintaxis de bash:
IFS=$'\n' read -r -d '' -a choices < <(locate filename)
Sintaxis de Zsh:
choices=("${(@f)$(locate filename)}")
La forma de baja tecnología, pero no muy fácil de usar, de permitir que el usuario seleccione uno de los elementos es usar elselect
construir.
select choice in "${choices[@]}"; do
xdg-open "$choice"
break
done
(Sintaxis de Bash; esto también funciona en zsh pero allí se puede simplificar).
Para una interfaz más agradable, puede utilizardiálogo.
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