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

関連情報