如何将命令行参数传递给别名?这是一个示例:
alias mkcd='mkdir $1; cd $1;'
但在这种情况下,$ xx将在别名创建时转换,而不是在运行时转换.但是,我创建了一个使用shell函数的解决方法(在googling之后),如下所示:
function mkcd(){
mkdir $1
cd $1
}
只是想知道是否有办法制作接受CL参数的别名.
顺便说一句 - 我使用'bash'作为我的默认shell.
Tho*_*att 266
只是为了重申已发布的其他shell的内容,在Bash中有以下工作:
alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'
Run Code Online (Sandbox Code Playgroud)
运行以下内容:
blah one two
Run Code Online (Sandbox Code Playgroud)
给出下面的输出:
First: one
Second: two
Run Code Online (Sandbox Code Playgroud)
Cha*_*tin 165
你找到了方法:创建一个函数而不是别名.C shell有一个为别名做参数的机制,但bash和Korn shell没有,因为函数机制更灵活,并提供相同的功能.
San*_*a R 54
你不能在ksh,但你可以在csh.
alias mkcd 'mkdir \!^; cd \!^1'
Run Code Online (Sandbox Code Playgroud)
在ksh中,功能是要走的路.但如果你真的想要使用别名:
alias mkcd='_(){ mkdir $1; cd $1; }; _'
Run Code Online (Sandbox Code Playgroud)
小智 6
最简单的方法是使用函数而不是别名。您仍然可以随时从 cli 调用函数。在 bash 中,您可以添加 function name() { command } 它加载与别名相同的内容。
function mkcd() { mkdir $1; cd $1 ;}
Run Code Online (Sandbox Code Playgroud)
不确定其他贝壳
小智 5
我发现函数不能写在~/.cshrc文件中。这里是带参数的别名
例如,传递给“find”命令的参数
alias fl "find . -name '\!:1'"
Ex: >fl abc
Run Code Online (Sandbox Code Playgroud)
其中 abc 是作为 !:1 传递的参数