我曾经使用CShell([tag:csh]),它让你做一个需要参数的别名。符号是这样的
alias junk="mv \\!* ~/.Trash"
在Bash中,这似乎并不可行。鉴于Bash有许多有用的功能,我认为这个功能已经被实现了,但我想知道如何实现。
Bash别名并不直接接受参数。你将不得不创建一个函数。
alias不接受参数,但可以像别名一样调用一个函数。比如说
alias
myfunction() { #do things with parameters like $1 such as mv "$1" "$1.bak" cp "$2" "$1" } myfunction old.conf new.conf #calls `myfunction`
顺便说一下,在你的.bashrc和其他文件中定义的Bash函数可以作为shell中的命令使用。因此,例如,你可以这样调用前面的函数
.bashrc
$ myfunction original.conf my.conf
完善上面的答案,你可以得到像别名那样的1行语法,这对shell或.bashrc文件中的临时定义更方便。
bash$ myfunction() { mv "$1" "$1.bak" && cp -i "$2" "$1"; } bash$ myfunction original.conf my.conf
不要忘记右括号前的分号。同样地,对于实际问题。
csh% alias junk="mv \\!* ~/.Trash" bash$ junk() { mv "$@" ~/.Trash/; }
或者。
bash$ junk() { for item in "$@" ; do echo "Trashing: $item" ; mv "$item" ~/.Trash/; done; }
下面是我在~/.bashrc中的三个函数的例子,它们本质上是接受参数的别名。
~/.bashrc
#Utility required by all below functions. #https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variable#comment21953456_3232433 alias trim="sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*\$//g'"
.
:
Bash别名并不直接接受参数。你将不得不创建一个函数。
alias
不接受参数,但可以像别名一样调用一个函数。比如说顺便说一下,在你的
.bashrc
和其他文件中定义的Bash函数可以作为shell中的命令使用。因此,例如,你可以这样调用前面的函数完善上面的答案,你可以得到像别名那样的1行语法,这对shell或.bashrc文件中的临时定义更方便。
不要忘记右括号前的分号。同样地,对于实际问题。
或者。
下面是我在
~/.bashrc
中的三个函数的例子,它们本质上是接受参数的别名。.