如何将命令行参数传递给别名?下面是一个例子:
alias mkcd='mkdir $1; cd $1;'
但是在本例中,$xx是在创建别名时而不是在运行时被转换的。然而,我已经创建了一个使用shell函数的解决方案(在谷歌了一下之后),如下所示:
function mkcd(){ mkdir $1 cd $1 }
只是想知道是否有一种方法使别名接受CL参数。 BTW -我使用'bash'作为我的默认shell。
如何将命令行参数传递给别名?下面是一个例子:
alias mkcd='mkdir $1; cd $1;'
但是在本例中,$xx是在创建别名时而不是在运行时被转换的。然而,我已经创建了一个使用shell函数的解决方案(在谷歌了一下之后),如下所示:
function mkcd(){ mkdir $1 cd $1 }
只是想知道是否有一种方法使别名接受CL参数。 BTW -我使用'bash'作为我的默认shell。
当前回答
你不能用ksh,但可以用csh。
alias mkcd 'mkdir \!^; cd \!^1'
在ksh中,函数是最重要的。但如果你真的很想用别名
alias mkcd='_(){ mkdir $1; cd $1; }; _'
其他回答
下面是一个使用Python的简单示例函数。你可以插入~/.bashrc。
你需要在第一个左花括号之后有一个空格。
python命令需要用双引号来获得变量替换。别忘了结尾的分号。
count(){ python -c "for num in xrange($1):print num";}
示例运行:
$ count 6
0
1
2
3
4
5
$
空别名将执行它的args:
alias DEBUG=
你找到了方法:创建一个函数而不是一个别名。C shell有一种对别名执行参数的机制,但bash和Korn shell没有,因为函数机制更灵活,并提供相同的功能。
只是重申已经发布的其他shell,在Bash中以下工作:
alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'
运行如下:
blah one two
给出如下输出:
First: one
Second: two
我发现函数不能用~/来写。cshrc文件。这里是alias,它接受参数
例如,传递给'find'命令的参数
alias fl "find . -name '\!:1'"
Ex: >fl abc
ABC是参数传递为!:1