Loading

给alias命令添加参数支持

问题

希望给通过 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 通常没有指定任何值)


参考

  1. bash - Can I pass arguments to an alias command? - Ask Ubuntu
posted @ 2024-06-14 14:10  kingron  阅读(101)  评论(0编辑  收藏  举报