问题
希望给通过 alias
定义的命令加上参数的支持。
解决方案
如果只是想将参数用作命令的后面部分,比如 ll
命令,那么无需任何额外的操作:
alias ll='ls -al'
ll ~
如果想将参数用作拼成命令的一部分,则可以将命令转为自定义函数来实现,比如,想要给 django
项目生成迁移文件,而且自定义迁移文件名称,但是每次都需要先 cd
到项目目录,然后运行 makemigrate
命令,比较麻烦,可以转为使用 alias
将这些操作改为一个命令:
# 原来的操作
cd djangoproject
python manage.py makemigrations model --empty --name data_xxx# 使用 alias 的操作
alias migratedata='migrate(){ cd djangoproject;python manage.py makemigrations model --empty --name data_$1;};migrate'
migratedata xxx
因为 alias
本身并不支持直接传参,因此这里使用了将命令封装到一个函数 migrate
,然后通过执行函数以接收参数。
扩展
如果不通过函数接收参数 $1
, $1
会使用 shell
的参数(就像引入其他环境变量一样,但是 $1
通常没有指定任何值)
参考
- bash - Can I pass arguments to an alias command? - Ask Ubuntu