是否可以创建 sandwhich 别名?

是否可以创建 sandwhich 别名?

我正在寻找一种方法来使以下别名适用于任何文件名。

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'

我想知道是否有办法更改此别名,以便我可以输入任何文件名:

dim *the desired file*

仍然得到相同的结果。基本上有没有办法将别名后面输入的内容调用到别名本身中?类似这样的方法:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'

答案1

不,您不能使用 shell 别名来做到这一点。您需要使用函数。

这是一个完成该工作的简单函数:

dim() {
cd /home/jason/Documents
vim "$1"
cd
}

该函数dim将以文件名作为参数。你可以将此代码片段放在文件末尾~/.bashrc,然后按如下方式运行:

dim file.txt

替换file.txt为您想要的任何文件名。

要从当前 shell 会话运行它,source文件~/.bashrc首先:

. ~/.bashrc

答案2

不要使用别名,而使用函数。

来自Bash 手册页

别名

[...] 替换文本中没有使用参数的机制。如果需要参数,则应使用 shell 函数(请参阅功能以下)。

因此你的功能可能是:

函数 dim () { cd ~jason/Documents ; vim $* ; cd - ;}

相关内容