Есть ли более простой способ навигации по терминалу, например, tmux?

Есть ли более простой способ навигации по терминалу, например, tmux?

Предположим, я хочу просмотреть список файлов и открыть его в интерактивном режиме через терминал. Я использую

locate filename | head -n 1 | xargs xdg-open

или что-то в этом роде. Другой вариант — щелкнуть мышью по имени файла, которое появляется, а затем вставить его.

Tmux позволяет мне перемещаться по терминалу, копировать строки и включать их в команды. Есть ли способ сделать это в bash или zsh, или, может быть, прямо в эмуляторе терминала?

решение1

Сначала поместите варианты в массив. Синтаксис Bash:

IFS=$'\n' read -r -d '' -a choices < <(locate filename)

Синтаксис Zsh:

choices=("${(@f)$(locate filename)}")

Низкотехнологичный, но не очень удобный способ позволить пользователю выбрать один из элементов — это использоватьselectпостроить.

select choice in "${choices[@]}"; do
  xdg-open "$choice"
  break
done

(Синтаксис Bash; это также работает в zsh, но там его можно упростить.)

Для более приятного интерфейса вы можете использоватьдиалог.

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

Связанный контент