有没有办法替换别名,以便将其附加或添加到 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 中的拼写错误)