Bash/Zsh别名参数传递求助:无法为指定命令创建带参别名
Bash/Zsh 别名与参数传递问题解决
你想要为以下命令创建支持参数传递的快捷方式:
WINEPREFIX=/folder/to/the/bottle/as/a/parameter winetricks ( $1 >/dev/null 2>&1 &) grep -Rnw '$1' -e '$2' aria2c -x10 -V --optimize-concurrent-downloads '$1'
但尝试的别名写法无法正常工作:
alias exe='(( $1 >/dev/null 2>&1 & ))' alias wp='WINEPREFIX=$1 wintricks' alias aria="aria2c -x10 -V --optimize-concurrent-downloads '$1'" alias tfind="grep -Rnw '$1' -e '$2'"
问题原因
别名仅做简单的字符串替换,无法像函数一样处理位置参数($1、$2),因此不适合实现带参数的快捷操作,改用Shell函数即可解决。
对应函数实现
WINEPREFIX + winetricks
wp() { WINEPREFIX="$1" winetricks "${@:2}" }使用示例:
wp /path/to/wine-bottle dotnet48后台静默执行命令
exe() { ("$@" >/dev/null 2>&1 &) }使用示例:
exe code .(后台静默启动VS Code)注:
"$@"会保留原命令的所有参数,支持带选项的命令双参数grep搜索
tfind() { grep -Rnw "$1" -e "$2" }使用示例:
tfind /project/dir "TODO:"aria2c 快捷命令
aria() { aria2c -x10 -V --optimize-concurrent-downloads "$1" }使用示例:
aria https://example.com/large-file.iso
生效方法
将上述函数添加到你的~/.bashrc(Bash)或~/.zshrc(Zsh)文件中,执行以下命令使设置立即生效:
# Bash source ~/.bashrc # Zsh source ~/.zshrc
内容的提问来源于stack exchange,提问作者iceBringer
相关产品推荐
相关产品推荐

