我在 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 脚本的例子吗?