如何在 shell 配置文件中解释和执行变量命令名?

问题描述 投票:0回答:1

我见过专家做这样的事情:

>>-5

这会将它们向上跳转 5 级父目录。

我想:“这太酷了!”

我可以将其添加到我的 shell 配置文件中,但不是以非常简洁的方式。

我所做的是将其添加到我的 .zshrc (也适用于 .bashrc 或其他 shell)配置文件中。

function -1 {
  cd ..
}
function -2 {
  cd ../..
}
function -3 {
  cd ../../..
}

这有效。

当然,如果我想做-25怎么办?我可能不会费心去数那么多,但你永远不知道。你可以看到这会变得多么漫长。我想避免复制粘贴类型的不良编码实践。

我尝试添加:

function "$0" {
#...

function "$@" {
#...

尝试获取命令输入。 我希望我可以使用正则表达式来查找字符串,解析,为任意数量的父级别的值创建一个循环...我有这方面的代码,但在第一步中遇到了困难:

"$@"
类型命令根本不起作用......即使它起作用,我不确定我是否希望所有命令都击中此块并且不会出现漂亮的
zsh: <command provided>: command not found...
错误消息。有什么办法可以避免这种情况吗?

这一切都归结为具有可变的命令名称。也许这是更好的问题:这可能吗?

我确信有人已经想到了这一点。我试着查了一下,但还没有找到任何东西。

shell command-line command configuration-files
1个回答
0
投票

请参阅下面的 bash/zsh 解决方案。使用“邪恶的评估”:-) 适用于 bash (5.1.6) 和 zsh (5.8.1)

dd=..
for ((x=1 ; x<=25 ; x++)) { eval "function -$x { cd $dd ; }" ; dd+=/.. ; }

也可以在其他类似 sh 的程序上进行较小的修改。

© www.soinside.com 2019 - 2024. All rights reserved.