给alias添加自定义参数

# 原理

linux alias 命令用于设置指令的别名。语法格式为:

alias 别名='指令名称'
1

定义 alias 时,有时候会有用命令行参数的需求。但通过查证文档的结果是,alias 根本就不支持传递命令行参数。不过,我们可以变通的解决这个问题,即定义函数。

这里通过 alias 实现之前提到过的 “git一步完成文件的 add, commit 和 push功能的命令” 的为示例演示一下该功能的实现:

vim ~/.bashrc
1
alias g='gmerge() { git add .; git commit -m "$1"; git push; }; gmerge'
1

来源 (opens new window)

# 运用

# 合并代码

下面使用这种方式写一个封装了一系列动作的别名:

每次在git分支下工作完成,都要切到dev分支进行合并、推送远端。为了避免切分支,代码变动过大导致IDEA卡顿,所以单独有个文件夹下放dev分支代码。所以每次都是先在项目分支推送远端,然后切换到dev路径下合并代码,推送远端。于是给这部分流程写到alias别名中,在命令行一行搞定。

alias gmerge='merge() {
   echo "推送代码";
   git push;
   path=$(pwd) ;
   echo "当前路径:${path}" ;
   folderName=${path##*/} ;
   branch=$(git rev-parse --abbrev-ref HEAD) ;
   echo "当前分支:${branch}" ;
   echo "当前文件夹名:${folderName}" ;
   cd ../../merge/"${folderName}" ;
   echo "当前目录:$(pwd)" ;
   echo "拉取代码" ;
   git pull ;
   echo "合并分支 origin/${branch}" ;
   git merge origin/"${branch}";
   echo "推送代码" ;
   git push;
   echo "回到目录${path}" ;
   cd ${path};
   }; merge'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

其中主要难点:

  1. 工作中是多个项目组合开发,所以每次要进入到dev分支的项目路径不同

例如在开发项目路径下:

--future
----server(单独git项目 xxx分支)
----web-api(单独git项目  xxx分支)
1
2
3

用于合并到测试分支的项目路径:

--merge
----server(单独git项目 dev分支)
----web-api(单独git项目  dev分支)
1
2
3

第一版的想法是将项目名和分支名作为参数输入,这样就能进入到merge目录下对应的项目目录,然后合并指定分支代码。

用了一段时间觉得输入项目名和分支名麻烦,于是改进成自动获取项目名和分支名,便有了上面最终版本。

Linux shell中提取文件名和路径 (opens new window)

Git打印且只打印本地分支名 (opens new window)

# 删除其他分支

alias gclean='git branch | grep -v "$(git rev-parse --abbrev-ref HEAD)" | xargs git branch -D'
1

# 优化

上面的别名方式其实是整麻烦了,可以将方法直接写成shell脚本,然后放到环境变量中,这样就可以在任何地方使用了。

以下是一个简单的示例,演示如何创建一个名为myFunction的自定义方法:

  1. 创建一个新文件,例如“~/myFunctions.sh”。
  2. 输入以下内容:
#!/bin/bash

function myFunction() {
  echo "Hello, world!"
}
1
2
3
4
5

这个代码块定义了一个名为myFunction的函数,当调用它时,它将打印一条消息“Hello, world!”。

  1. 保存并关闭文件。

  2. 接下来,需要执行以下命令使脚本可执行:

chmod +x ~/myFunctions.sh
1
  1. 最后,需要将脚本添加到终端环境中,以便随时可以使用该自定义方法。可以在.bashrc.bash_profile文件中添加以下行:
source ~/myFunctions.sh
1
  1. 保存并关闭文件,然后重新启动终端或运行source ~/.bashrcsource ~/.bash_profile命令来使更改生效。

现在,就可以在终端中使用myFunction方法了。只需在终端中键入myFunction,它将打印出“Hello, world!”消息。

上次更新: 2023/05/26, 15:49:03
最近更新
01
go-admin-ui项目仿写练手1-登录页
06-29
02
maven依赖问题
06-17
03
JVM相关命令
02-21
更多文章>