字符串的别名替换以便在终端命令中使用它

字符串的别名替换以便在终端命令中使用它

有没有办法替换别名,以便将其附加或添加到 shell 中现有的命令之前?

例如定义别名:

alias execloc='/home/user/'

将其添加到 bash 终端中的命令中:

cd exeloc/temp/somefolder

可以做这样的事情吗,或者有没有什么办法可以做到?

答案1

您不能这样做,因为/home/user/它不是命令。它更像是一个静态字符串。

来自man bash(第 1984 行某处):

别名允许将字符串替换为单词,当它用作 简单命令的第一个字

就您而言,execloc永远不会是简单命令的第一个字。

但是,execloc您可以将其定义为环境变量,而不是定义为别名:

export execloc='/home/user/'

然后您就可以在任何地方使用它,如下所示:

cd $exeloc/temp/somefolder

答案2

我不思考使用 bash/dash 也是如此,但我可能错了。我认为使用 'zsh' (别名 -g foo='bar') 可能可行。

但还存在其他的可能性。

如果您只是想要更方便的“cd”命令,您可以使用 CDPATH(谷歌搜索)。或者使用符号链接或硬链接(man ln)。

或者使用如下行修改/创建 ~/.inputrc:

Control-f:"grep -r -i .\e[D\e[D\e[D"

这会为我输入一个 grep 命令,然后退格到点之前,以便我可以输入 ctrl-f,然后输入我要搜索的单词。

答案3

您可以按如下方式进行操作(如果我正确理解了您的问题):

导出 EXECLOG=/home/user

cd $EXECLOG/temp/somefolder

基本上在 shell 中设置替换并通过在它们前面加上“$”符号来访问它们。标准 shell 变量。

(退出以修复 EXECLOG 中的拼写错误)

相关内容