shell执行git命令

shell执行git命令

发布代码的git命令

我的博客

发布博客代码到vps上,按顺序执行下面的git命令:

git pull origin test
git push origin master

在已经记住了这两个git命令的情况下,没有必要每次发布
都敲这么多代码。我需要一个shell脚本,一次性执行多条
命令。

删除缓存的linux命令

我的博客

由于我把每篇文章数据都存储到了文件缓存中,每次编辑
旧文章重新发布后,并不能看到最新数据,需要到服务器
上手工清理缓存。这也很麻烦。

删除缓存的linux命令是:

rm -rvf /usr/local/nginx/html/blog/runtime/cache

编写shell脚本

#! /bin/bash
# 保存当前目录
currentDir=$PWD
echo "Start to publish...\n"
# 切换到项目目录
cd /usr/local/nginx/html/blog
# 执行git命令
git pull origin test
git push origin master
# 切换回原来的目录
cd $currentDir
# 删除缓存 
rm -rvf /usr/local/nginx/html/blog/runtime/cache
echo "Success\n";

执行脚本

假设写好的脚本文件名为git.sh,若直接运行该脚本,会提示
无权限。那就必须让执行脚本的用户具有执行这个脚本的权限,
使用命令:

chmod +x ./test.sh #使脚本具有执行权限

以后每次发布项目的时候,直接使用执行脚本就可以了。

./git.sh 

制作软连接

软连接与硬链接概念

Linux软连接和硬链接

软连接相当于windows里的快捷方式,删除它之后,原文件依然存在。
一个文件,有多个硬链接与其对应。只有将该文件的所有硬链接删除
之后,该文件才会被删除。

软连接与硬链接命令

待补充。

遇到的问题

error: 无法打开 .git/FETCH_HEAD:????

使用cg帐号执行git.sh的时候,出现这个错误提示。切换到root
帐号,su root后,可以执行这个脚本了。

坏的解释器: 没有那个文件或目录

错误现象

执行下面的脚本:

#! /bin/bash
# 保存当前目录
currentDir=$PWD
echo "Start to publish...\n"
# 切换到项目目录
cd /usr/local/nginx/html/blog
# 执行git命令
git pull origin test
git push origin master
# 切换回原来的目录
cd $currentDir
# 删除缓存 
rm -rvf /usr/local/nginx/html/blog/runtime/cache
echo "Success\n";

控制台出现错误信息:

[root@localhost shell]# ./git.sh
bash: ./git.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

用命令cat -A git.sh查看git.sh,内容非常奇怪,见下图:

shell执行git命令_坏的解释器

使用cat -A test.sh查看test.shtest.sh能够正常运行。它的内容是:

shell执行git命令_正常

打开Notepad++的“显示所有字符”开关后,看到了正常脚本与异常脚本的差异:

shell执行git命令_正常与异常对比

产生原因

原因很长,详情见 Linux和windows中的换行符差异问题

我只掌握这些:Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统
里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成
一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号
windows创建的文件是 \n\r结束的, 而linux,mac这种unix类系统是\n结束的。

解决办法

编程工作几乎全在windows上做,在windows上写出来的shell脚本因换行问题
不能在linux上执行,有两种解决方法:

  1. 写好脚本之后,借助linux的sed工具处理脚本。

  2. 用PHP写个文本处理工具,在linux上运行脚本之前,先用PHP工具处理好
    shell脚本的换行问题。

先尝试一些第一种,在linux上执行命令

sed -i 's/\r$//'git.sh 

-i表示插入,'s'表示替代模式,\r$表示任何以\r结尾的字符。整句的意思是,
\r结尾的字符替换成空白。(不理解)

执行上述命令,屏幕打印报错信息:

[root@localhost shell]# sed -i 's/\r$//'git.sh 
sed:-e 表达式 #1,字符 10:“s”的未知选项

使用下面的命令:

sed -i 's/\r$//' git.sh

没有任何输出信息。再使用cat -A git.sh查看,发现已经正常了。用sz命令把
git.sh下载到windows上用notepad++查看,也是正常的。

正确的sed代码与错误的sed代码仅有的差异是:

sed -i 's/\r$//'git.sh 
sed -i 's/\r$//' git.sh

git.sh是否与前面有空格。

还有一个发现:若一个文件的换行符是\r,那么即使在windows下通过回车键
换行,换行符也是\n。可以保留一份以\n为换行符的shell脚本模板,每次新建
shell脚本的时候,都用它。

我的博客

shell脚本切换用户后停止执行

详情见:shell脚本切换用户后停止执行了

其他知识

批量删除文件

下面的命令删除了所有的txt文件,包括当前目录的下级目录!

find . -name "*.txt" -type f  | xargs -n 1 rm -f

find . -name "*.txt" -type f  | xargs -n 1 rm

git查看远程仓库地址

git remote -v

我的博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容