
Предположим, я хочу просмотреть список файлов и открыть его в интерактивном режиме через терминал. Я использую
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