是否可以制作 sandwhich 别名?

Jas*_*ese 9 bash alias

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

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以更改此别名以使其可以输入任何文件名:

dim *the desired file*
Run Code Online (Sandbox Code Playgroud)

并且仍然得到相同的结果。基本上有没有办法将别名后键入的内容调用到别名本身中?就像是:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 9

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

这是一个简单的功能来完成这项工作:

dim() {
cd /home/jason/Documents
vim "$1"
cd
}
Run Code Online (Sandbox Code Playgroud)

该函数dim将采用文件名作为参数。您可以将此代码片段放在~/.bashrc文件末尾,然后将其运行为:

dim file.txt
Run Code Online (Sandbox Code Playgroud)

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

从当前shell会话中运行它,source~/.bashrc第一个文件:

. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

  • “1美元”是什么意思?我是一个初学者,正在努力学习,而不仅仅是复制粘贴并称之为一天。 (3认同)