Alias 如何在bash别名中包含参数?

Alias 如何在bash别名中包含参数?,alias,mkdir,bash,Alias,Mkdir,Bash,正在尝试创建: alias mcd="mkdir $1; cd $1" 获取: $ mcd foo usage: mkdir [-pv] [-m mode] directory ... -bash: foo: command not found 我做错了什么?别名只能用任意文本替换命令的第一个单词。它不能使用参数 您可以改为使用shell函数: mcd() { test -e "$1" || mkdir "$1" cd "$1" } 也可能是一个shell脚本?命名为没有扩展名的文

正在尝试创建:

alias mcd="mkdir $1; cd $1"
获取:

$ mcd foo
usage: mkdir [-pv] [-m mode] directory ...
-bash: foo: command not found

我做错了什么?

别名只能用任意文本替换命令的第一个单词。它不能使用参数

您可以改为使用shell函数:

mcd()
{
  test -e "$1" || mkdir "$1"
  cd "$1"
}

也可能是一个shell脚本?命名为没有扩展名的文件mcd?函数有什么不同或更好的地方?它不能作为shell脚本工作,因为脚本将在子shell中运行。为了使cd达到预期效果,它必须在调用者的shell中运行,而不是在子shell中运行。这个函数应该如何调用?啊,很好,发现这个函数应该像任何其他命令一样被调用,无论是通过函数、内置命令还是外部命令来实现。你只需要确保这个函数是在你的shell中定义的,这可以通过把它放在你的shell启动文件中来完成!