如果有的话,fish 中与 bash 的 select...in...do..done 等效的是什么?

如果有的话,fish 中与 bash 的 select...in...do..done 等效的是什么?

我在 bash 中巧妙地编写了一个函数,该函数通过将目录名称作为函数的参数来更改到当前工作目录下的任意目录。如果有多个同名结果,则会出现一个菜单,让用户选择目标。bash 代码为:

function cdb() {
  select dir in $(find -type d -name "$1" -not -path '*/\.*' -prune);
  do
    cd "${dir}" && break;
  done 
}

一个例子是:

android@cybaryme:~/octos$ cdb av
1) ./frameworks/av
2) ./system/bt/bta/av
#? 1
android@cybaryme:~/octos/frameworks/av$

不过我大部分时间都在使用 fish,也希望它有这个功能。但我无论如何也找不到 select 命令或它的等效命令。可能我以为“complete”可以完成这个任务,但我搞不清楚它的用途。

有人能解释一下有哪些可用资源吗?或者能举一个可以填补缺失空白的 Perl 脚本的例子吗?

答案1

Fish 没有select命令。我也没有发现任何迹象表明有人要求添加它。你可以在 fish 自带的几个函数中找到一个如何执行相同操作的示例,以及我的mcd 函数这可能会被添加到核心包中。请注意,我的实现允许按数字或字母进行选择,这非常方便。请随意打开高级请求

相关内容