我正在寻找一种方法来使以下别名适用于任何文件名。
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 - ;}