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

1、前言

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

2、git pull 更新

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

git pull

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

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

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

#!/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 下载

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

#!/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 当成一个别名使用:

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

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

  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、备份文件

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

#!/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脚本就讲到这里,更多技巧和提交效率的方式,希望大家能举一反三,这都是授鱼不如授渔!

参考


  • 如有疑问,欢迎在评论区一起讨论!
  • 如有不正确的地方,欢迎指导!


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


上一篇:iOS的@try、@catch()


下一篇:.cer 文件添加到钥匙串报错:不能修改“System Roots”钥匙串