前言
这算是我个人的第一篇博客吧,仅用于记录个人开发与生活中的一些事情和心得,如果在你看到的时候,能够对你产生一点帮助或者启发的话,那就更值得慰藉了。刚开始写博客,可能内容算不得好、排版存在一些问题,请谅解。
需求产生的背景
由于我自己git的sshKey每次开机后都要重新添加,为了减少这个简单且无脑的重复工作,就采用了编写脚本来实现这个功能。
具体实现
首先就是写一个脚本,在你自己的期望路径建立一个脚本,写入以下代码:
#!/bin/sh #声明脚本语言类型
cd ~ #进入根目录
ssh-add -l #查看当前sshKey的列表,可以省略,
ssh-add -D #添加前先清空列表
ssh-add ~/.ssh/id_gitlab #添加你自己的sshKey,有多个sshKey就分别加
ssh-add ~/.ssh/id_github #同上面的意思
可以说,通过这几行命令,我的每次重复添加sshKey的需求就完成了。但是只是这样的话,还是存在两个问题。
难道我每次重启完电脑都要手动执行一次这个命令?那我写一个脚本的作用岂不是大打折扣了?
我添加sshKey都是写死的,难道我之后每次新加一个账户,就要重新添加一个sshKey?那岂不是相当不方便且不优雅?(该问题不影响到使用,如果不介意之后再次添加或者不需要再次添加git账户,也可以忽略)
由此,我又添加了以下两个操作:
1. 开机自启脚本
首先,修改脚本的权限,在你脚本的路径下,终端运行以下命令。( 将xx改成你自己的脚本名称)
chmod 777 xx.sh
需要在脚本文件的简介中,将打开方式设置为终端,并且将共享与权限全部修改至读与写。
然后点开设置->用户和群组->点击登录项->将你的脚本加入进去。
经过这些步骤,就可以实现开机执行脚本了。
2. “优雅”的添加sshKey
想要优雅的添加sshKey的前提就是你要优雅的命名你的sshKey的名字…
假设以下的文件就是我的sshKey文件夹,通过以下代码遍历文件夹内文件名。
cd ~/.ssh
path=$1
files=$(ls $path)
for fileName in $files; do
echo $fileName
done
其中$fileName就是文件名,此时我们需要筛选一下,我这边命名是所有sshKey都带有id_,所以可以获取所有包含id_并且不包含.pub的文件名。然后将其添加至ssh列表中,如下:
#!/bin/sh
cd ~/.ssh
ssh-add -l
ssh-add -D
strA="id_"
strB=".pub"
path=$1
files=$(ls $path)
for fileName in $files; do # 遍历文件名
resultA=$(echo $fileName | grep "${strA}") # 两个判断条件
resultB=$(echo $fileName | grep "${strB}")
if [[ "$resultA" != "" ]] && [[ "$resultB" == "" ]]
then
ssh-add ~/.ssh/$fileName # 添加sshKey
fi
done
至此,所有的功能都已经完成了,再也不用操心git上传没有权限了~
其实很多操作都可以使用脚本来完成,可以避免很多重复的操作,节省很多时间。