shell技巧7 - git提高效率的一些用法

原文转载自 「iHTCboy's blog」 (https://iHTCboy.com/2019/03/14/2019-03-14_shell技巧7-git更新等效率脚本/)

预计阅读时间 0 分钟(共 0 个字, 0 张图片, 0 个链接)

1、前言

经过前面那么多节的脚本使用技巧,相信大家一定已经掌握了基本的shell脚本编写,但是可能还是没有想明白,或者想到说平时工作生活中,有什么作用?今天,写写我自己在工作中,一些提高效率的脚本一起来看看吧~

2、git pull 更新

工作中,我们都知道,更新工作代码库:

1
git pull

但是,有没有想过,如果你有10个库呢?是不是要命令行切换目录输出10次?或者你有Sourcetree,在界面也要切换10次吧?

所以,有没有想过,如果用脚本,能不能一次的把全部的库,都git pull下来?想到这样,相信大家已经知道,肯定可以啊!

直接上代码(具体的代码,可参考我的Github代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash

# 定义用到的变量
directory_path=""

# 定义读取输入字符的函数
function getDirectoryPath() {
# 输出换行,方便查看
echo "================================================"
# 监听输入并且赋值给变量
read -p " Enter directory path: " directory_path
# 如果为空值,从新监听
if test -z "directory_path"; then
getDirectoryPath
else
read_dir ${directory_path}
fi
}

function read_dir(){
for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
do
if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
then
#在此处处理目录即可
echo "-----------------------------\n"
echo "check directory:《" $file "》"
echo "message:"
cd $1"/"$file
git pull
echo "\n"
fi
done
}


#读取第一个参数
getDirectoryPath

echo "\n------- finish processing -------"

使用方法非常简单,执行脚本,输入在你所有库的根目录,然后脚本会循环所有目录git pull。当然,如果是公司电脑,那你可以用别名alias定义一个通用命令来执行,明天早上上班,执行一下,效率满满的!!!

3、git clone 下载

有时候,你换了新电脑,或者像我不小心,电脑挂了,重装系统,新的电脑,需要一个一个库的拉取下来,这时候,你也可以写一个脚本来统一执行:

1
2
3
4
5
#!/bin/bash

git clone https://github.com/iHTCboy/OneMindMap.git;
git clone https://github.com/iHTCboy/NotesEveryDay.git;
git clone https://github.com/iHTCboy/macOSConfig.git;

编写自己的库或公司库脚本,放到git仓库,是不是又学到一招!

4、git commit

这个大家应该想到了吧?可以放到 .bash_profile.zshrc 当成一个别名使用:

1
2
3
4
5
function glazy() {
git add .
git commit -a -m "$1"
git push
}

使用方法很简单:
glazy 'XXXX' 就可以一步到位:

1
2
3
4
5
6
7
8
9
10
11
12
➜  iShell git:(master) ✗ glazy 'shell技巧6 - iOS最大构建版本文件大小'
[master 15a0b97] shell技巧6 - iOS最大构建版本文件大小
1 file changed, 72 insertions(+)
create mode 100644 Shell/calculate_Mach-0__Text-Size .sh
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 1.52 KiB | 1.52 MiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/iHTCboy/iShell.git
6f39dfe..15a0b97 master -> master

5、备份文件

为了避免数据掉失,我会经常定时备份博客的文档,如果需要人工手动,重复,反复,一个一个,切换目录,其实,写一个脚本就搞定:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

blog_dir="/Users/HTC/Documents/Personal/P-Project/iHTCBlog/source/"
backup_dir="/Users/HTC/Documents/Personal/P-Project/macOSConfig/iHTCboy_Blog/"

# copy files
cp -r "${blog_dir}" "${backup_dir}"

# delete drafts file
rm -rf "${backup_dir}/_drafts"

当然,为了方便,不可能每次都打开终端才执行,如果Mac或Linux,可以用 Unix 可执行文件,直接点击,会自动打开终端执行。

比如脚本叫 backup_sh.sh 改为 backup_sh 名字,然后在终端为文件添加可执行权限:
chmod +x /Users/HTC/Desktop/backup_sh

以后,直接双击backup_sh这个文件,就会自动在终端执行,备份完成!

注:其它方法可参考 shell技巧1 - 生成ipa文件 | iHTCboy’s blog 第5小节。

6、总结

关于shell脚本就讲到这里,更多技巧和提交效率的方式,希望大家能举一反三,这都是授鱼不如授渔! 关键,还是大家要熟悉学习和掌握shell编码,就能在工作生活中提高效率。

参考



注:本文首发于 iHTCboy’s blog,如若转载,请注来源

more_vert