如何在具有两个参数的别名中正确使用 $1

如何在具有两个参数的别名中正确使用 $1

我必须比较多个文件,而且我不想一直在两个地方更改命令。所以我想在 bash 中创建一个别名。

alias gd='gvimdiff $1 dir/$1'

这样我就可以得到

gvimdiff res.tex dir/res.tex

只需输入

gd res.tex

答案1

您不能以这种方式使用别名,但是,您可以定义一个函数来执行相同的操作。

function gd() {
    gvimdiff $1 dir/$1
}

答案2

别名不是这样工作的。您应该能够使用历史替换(例如!!:1),不,bash不允许)或定义一个功能反而。

答案3

这很简单,在 kde neon、ubuntu、manjaro、arch all bash 中试过了

alias gd="gvimdiff '$1' dir/'$1'"

只需添加以下逗号即可。

答案4

与之前的答案相反,这似乎至少从 bash 5.0.18 开始才有效。

alias gd="gvimdiff $1 dir/$1"

(确保不要使用单引号,因为它们会转义$)。

这可能只在启用 shell 选项“expand_aliases”的情况下有效。要启用此类型

shopt -s expand_aliases

在终端中。或者更好的方法是将该行写入“.bashrc”以使其永久生效(如果它还不在那里)。

相关内容