如何在 KornShell 中创建带有参数的别名

如何在 KornShell 中创建带有参数的别名

我正在尝试创建一个别名,当给出一些参数时,该别名将查找包含该参数作为模式的文件夹。令别名为gohf

现在,我将使用这个别名gohf <some-pattern>,例如,gohf testing。现在,这应该查找名称中包含“testing”的文件夹,并在最后一步中将我带到该文件夹​​。

以下是我能想到的。

alias gohf='cd `find . -type d | grep testing`';

当模式始终为“testing”时,上述别名有效。我该如何修改,以便如果别名使用为 say gohf game,那么别名应该将我带到名称中包含游戏的文件夹。

笔记:

外壳:ksh

我假设我输入的每个模式只有一个文件夹。

答案1

正如 manatwork 在评论中所说,您应该使用函数来更好地处理参数。

gohf(){
  cd $(find . -type d -iname "$1" | sed 1q)
}

不需要像使用标志那样通过管道传递findto的结果或执行相同的操作。然后我们将整个事情通过管道传输到,以便我们只处理第一个“命中”(如果有多个)。grep-name-inamesedcd

如果您希望能够处理多个find“点击”,您应该这样做:

gohf(){
  select dir in $(find . -name "$1" -type d)
  do
    cd $dir
    break
  done
}

相关内容