题
这个问题已经有一个答案在这里:
- 做一个庆典的别名需要参数? 13的答案
它是可能做到如下:
我要运行如下:
mongodb bin/mongod
在我bash_profile我
alias = "./path/to/mongodb/$1"
解决方案
别名将扩大到串它代表。任何东西之后,别名后将出现其扩张,而不需要或能够作为明确的参数(例如 $1
).
$ alias foo='/path/to/bar'
$ foo some args
会得到扩大到
$ /path/to/bar some args
如果你想使用明确的参数,则需要使用一个功能
$ foo () { /path/to/bar "$@" fixed args; }
$ foo abc 123
将被执行,因为如果你做了
$ /path/to/bar abc 123 fixed args
取消定义有别名:
unalias foo
取消定义的一个功能:
unset -f foo
看到的类型和定义(对每个定义的别名、关键词、功能、内或可执行文件):
type -a foo
或类型(为最高优先级生):
type -t foo
其他提示
通常,当我想通过的参数,以化名在庆典,我结合使用的别名和一个这样的功能,例如:
function __t2d {
if [ "$1x" != 'x' ]; then
date -d "@$1"
fi
}
alias t2d='__t2d'
使用参数的别名,我使用这种方法:
alias myalias='function __myalias() { echo "Hello $*"; unset -f __myalias; }; __myalias'
它是一个自我毁灭的功能包裹在一个别名,因此,它几乎是最好的两个世界,并且不采取额外线(s)在您的定义...我恨,哦,是啊,如果你需要返回的价值,只要存储这话之前取消,然后返回值使用的"返回"的关键在于自我毁灭的功能有:
alias myalias='function __myalias() { echo "Hello $*"; myresult=$?; unset -f __myalias; return $myresult; }; __myalias'
所以..
你可以,如果你需要有这个变量在那里
alias mongodb='function __mongodb() { ./path/to/mongodb/$1; unset -f __mongodb; }; __mongodb'
当然...
alias mongodb='./path/to/mongodb/'
实际上会做同样的事情,而不需要参数,但就像我说的,如果你想要或需要他们因为某些原因(例如,你需要2美元,而不是1美元),将需要使用包装喜欢这样。如果是大于一线可能考虑的只是写一个函数的彻底,因为它会成为更多的碍眼,因为它增大。功能是巨大的,因为你得到的所有津贴的功能得到(见完成,陷阱,结合等的好东西,其功能可以提供,在bash平).
我希望这可以帮助你:)
这是解决方案,它可以避免使用功能:
alias addone='{ num=$(cat -); echo "input: $num"; echo "result:$(($num+1))"; }<<<'
测试结果
addone 200
input: 200
result:201
在 csh (而不是 bash)你可以做你想要什么。
alias print 'lpr \!^ -Pps5'
print memo.txt
符号 \!^
原因的论点被插在命令,在这一点上。
的 !
性格是由一个 \
以防止其被解释为一个历史的命令。
你也可以通过多个参数:
alias print 'lpr \!* -Pps5'
print part1.ps glossary.ps figure.ps
为了简化leed25d的答案,结合使用的别名和一个功能。例如:
function __GetIt {
cp ./path/to/stuff/$* .
}
alias GetIt='__GetIt'
不隶属于 StackOverflow