Linux 带有2个命令的别名无法获取输入参数

Linux 带有2个命令的别名无法获取输入参数,linux,shell,Linux,Shell,在Ubuntu18Linux下,我尝试在.bash_别名中设置别名 其中包含2个命令,并读取一个输入参数 alias nd="mkdir $1 && cd $1" 我不喜欢NDQQ,结果是 mkdir: missing operand 我的错误在哪里? 欢迎任何帮助 PD.-我有一个带参数的别名,可以正常工作: alias mira="ps -ef | grep -v grep | grep $1" 我做了mira dhcp,结果还可以 PD2-如果我需要密码 alias

在Ubuntu18Linux下,我尝试在.bash_别名中设置别名 其中包含2个命令,并读取一个输入参数

alias nd="mkdir $1 && cd $1"
我不喜欢NDQQ,结果是

mkdir: missing operand
我的错误在哪里? 欢迎任何帮助

PD.-我有一个带参数的别名,可以正常工作:

alias mira="ps -ef | grep -v grep | grep $1"
我做了mira dhcp,结果还可以

PD2-如果我需要密码

alias nd="mkdir $1" 
。。。它工作得很好

您是否尝试过运行alias nd?输出是

alias nd='mkdir  && cd '
这会让你看到出了问题

当你喂蛋壳的时候

alias nd="mkdir $1 && cd $1"
这条生产线的工艺流程;除其他事项外,处理结果是扩展变量$1,该变量在当前环境中为空,如在终端中输入echo$1所示

一句话:alias不是用于此目的的工具。函数就是实现这一点的工具。在shell中运行以下命令,然后nd将执行您想要的操作

nd() { mkdir $1 && cd $1; }
当你这样做的时候

alias nd="mkdir $1" 
这说明

alias nd='mkdir '
尾随空间实际上没有任何作用,因此您刚刚为mkdir创建了另一个名称,就像您之前所做的一样

alias nd=mkdir
这就是它起作用的原因