当前位置:首页 > CN2资讯 > 正文内容

shell脚本 拉取git仓库并编译 shell执行git命令

1天前CN2资讯


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";

执行脚本

假设写好的脚本文件名为,若直接运行该脚本,会提示

无权限。那就必须让执行脚本的用户具有执行这个脚本的权限,

使用命令:

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

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

./

制作软连接

软连接与硬链接概念

软连接相当于windows里的快捷方式,删除它之后,原文件依然存在。

一个文件,有多个硬链接与其对应。只有将该文件的所有硬链接删除

之后,该文件才会被删除。

软连接与硬链接命令

待补充。

遇到的问题

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

使用cg帐号执行的时候,出现这个错误提示。切换到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]# ./

bash: ./: /bin/bash^M: 坏的解释器: 没有那个文件或目录

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

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

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

shell执行git命令_正常

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

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

产生原因

我只掌握这些:Unix系统里,每行结尾只有“”,即“\n”;Windows系统

里面,每行结尾是“”,即“\n\r”;Mac系统里,每行结尾是“”。

一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成

一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号

windows创建的文件是 \n\r结束的, 而linux,mac这种unix类系统是\n结束的。

解决办法

编程工作几乎全在windows上做,在windows上写出来的shell脚本因换行问题

不能在linux上执行,有两种解决方法:

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

用PHP写个文本处理工具,在linux上运行脚本之前,先用PHP工具处理好

shell脚本的换行问题。

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

sed -i 's/\r$//'

-i表示插入,'s'表示替代模式,\r$表示任何以\r结尾的字符。整句的意思是,

把\r结尾的字符替换成空白。(不理解)

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

[root@localhost shell]# sed -i 's/\r$//'

sed:-e 表达式 #1,字符 10:“s”的未知选项

使用下面的命令:

sed -i 's/\r$//'

没有任何输出信息。再使用cat -A 查看,发现已经正常了。用sz命令把

下载到windows上用notepad++查看,也是正常的。

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

sed -i 's/\r$//' sed -i 's/\r$//'

是否与前面有空格。

还有一个发现:若一个文件的换行符是\r,那么即使在windows下通过回车键

换行,换行符也是\n。可以保留一份以\n为换行符的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
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/31614.html

    分享给朋友:

    “shell脚本 拉取git仓库并编译 shell执行git命令” 的相关文章

    JustHost评测:高性价比VPS服务的最佳选择

    JustHost是一家成立于2006年的俄罗斯主机商。多年来,它在VPS和服务器租用方面积累了相当的声誉,并建立了一个庞大的客户群体。刚开始时,它的目标是帮助用户实现更灵活、高效的网络解决方案,逐渐扩展到如今的多种服务提供。无论你是中小企业还是个人用户,JustHost的产品都能满足不同层次的需求。...

    远程VPS优选指南:高效管理虚拟专用服务器的最佳实践

    随着远程工作的普及和数字化转型的加速,远程VPS(虚拟专用服务器)逐渐成为许多企业和个人的首选工具。VPS通过虚拟化技术,让我们能够在一台物理服务器上同时运行多个独立的操作系统,这种灵活性使得用户能够像管理独立服务器那样,远程登录和管理自己的虚拟环境。每天都有更多的人意识到,拥有一个VPS可以为他们...

    深入了解ICMP协议及其在网络管理中的应用

    ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族中的一种重要网络协议。我们可以把ICMP想象成网络中的信使,它主要负责在网络中传递控制消息和错误报告。这种功能对于维护网络的正常运作至关重要,让网络管理员能够及时发现并处理问题。IC...

    深入探讨4C与1C:市场营销与电池性能优化的关键

    4C与1C概述 在探讨市场和技术发展的过程中,4C与1C是两个值得注意的概念。虽然它们的名称很相似,但是一个关注的是市场营销的策略,另一个则关乎电池的充放电性能。我常常思考这两个概念的融合点,以及它们对我们生活的深远影响。 1.1 4C理论介绍 4C理论是市场营销中一个重要的框架,帮助企业更好地理解...

    AMD Ryzen VPS 性能测评:RackNerd 的优越体验与机房对比

    当我开始使用RackNerd的VPS服务时,我被它的低价和强大性能所吸引。作为一个刚入驻云计算的用户,我知道许多商家提供VPS,但RackNerd以十美元每年的超低价格引起了我的注意。而真正让我印象深刻的是它的稳定性与出色的售后服务。我曾多次遇到技术问题,售后支持总能在第一时间给我回应,这让我感受到...

    如何获取和使用evoxt优惠码,轻松享受购物乐趣与实惠

    在如今这个充满折扣与优惠的购物时代,获得evoxt的优惠码变得尤为重要。我还是忍不住想和大家分享一些获取这些优惠码的实用方法。这样不仅能够节省开支,还能在消费时感受到更多的乐趣。 官方网站注册及会员优惠 首先,我要强调的就是在evoxt的官方网站上注册一个账户。这一步真的很重要。注册后,你可以直接享...