假设我想浏览文件列表并通过终端交互式打开它,我一直在使用
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