如何在终端别名中使用变量实现wttr.in快捷查询?
让终端别名支持变量参数的解决方法
终端别名本质是简单的命令字符串替换,没办法自动处理后续传入的参数。你执行yyy NewYork时,实际会被解析成curl wttr.in/ NewYork——这里的NewYork被当成了curl的独立参数,而不是拼接到目标URL里,所以才会报错。
要实现带参数的快捷命令,别用别名,改用shell函数:
- 打开你的shell配置文件(比如Bash用
~/.bashrc,Zsh用~/.zshrc),添加以下内容:
yyy() { curl "wttr.in/${1:-}" }
- 保存文件后,执行对应命令让配置生效:
- Bash:
source ~/.bashrc - Zsh:
source ~/.zshrc
- Bash:
这样设置后,执行yyy会查询默认位置的天气,执行yyy NewYork就会正确拼接参数,查询纽约的天气了。${1:-}的作用是:如果有传入第一个参数($1)就用它,没有的话留空,兼容两种使用场景。
内容的提问来源于stack exchange,提问作者Flissek
相关产品推荐
相关产品推荐

