linux系统上shell脚本编写问题总结


需求背景:项目技术栈:Vue2+Nuxt2+TypeScript,是一个服务端渲染的项目,每次打测试包时需要在虚拟机上通过命令行打包项目,然后将打包生成的文件压缩为一个压缩包.tar.gz,然后将这个压缩包下载到本地,再由本地上传到测试服务器的指定目录下,在测试服务器上通过命令行解压文件,然后启动项目服务;

实现效果:通过虚拟机linux中的shell脚本自动打包指定git分支的前端项目代码,然后将打包生成的文件生成压缩包,并将这个压缩包推送到测试服务器指定目录下;然后在测试服务器上通过shell脚本解压对应缩包.tar.gz,并启动项目服务

1、编写shell脚本时遇到的问题:
1.1 执行.sh的shell脚本时,解压出来的文件名会自动带有问号,且这个问号在FTP工具中看不到,通过linux命令才能查看到

1.2 提示shell脚本中的\r命令未找到;如:./test.sh: line 1: $'\r': command not found

原因:因为我是通过MobaxXterm工具创建的shell文件,并且通过文本方式编写的脚本内容,存在换行的操作,这里的换行符和linux系统上的换行符存在差别,所以会提示如上的两个问题

解决方法:设置文件的格式类型为unix,或者去掉shell脚本中\r换行符;

# 方法一:设置文件的格式类型为unix
# 使用vi命令打开shell文件
vi test.sh
# 转换格式,设置文件的格式类型为Unix格式,
# 这意味着文件将使用Unix风格的换行符(LF)而不是Windows风格的换行符(CRLF)
:set ff=unix
# 保存文件
:wq

# 方法二:去掉shell脚本中\r换行符
# 去掉test.sh文件中\r换行符然后生成新文件newtest.sh
sed 's/\r//g' test.sh > newtest.sh
# 给新生成的newtest.sh文件添加可执行权限,使其可以执行
chmod +x newtest.sh

2、常用的linux命令:

  • sshpass -p 'password' scp file1 username@xxx.xxx.xx.x:/file2,       
    • 将本地的file1文件推送到远程服务器xxx.xxx.xx.x的指定目录file2下,(使用sshpass提前输入远程服务器的密码,或者使用scp推送文件的时根据提示输入远程服务器密码)
      • 参数说明:
        • username:连接远程服务器的用户名
        • xxx.xxx.xx.x:远程服务器的IP地址
        • password:连接远程服务器时该用户名对应的明文密码
    • 注意:sshpass需要根据当前linux系统进行提前安装,安装教程可参考博客:sshpass的安装与使用-CSDN博客
  • su user                                                   切换的指定的user使用的用户
  • cat /etc/*-release                                    查看当前的linux系统
  • sed 's/\r//g' test.sh > newtest.sh            去掉test.sh命令文件中\r换行符生成新文件newtest.sh
  • chmod +x newtest.sh                             给新生成的.sh文件添加可执行权限
  • cp file1 file2                                            将file1文件拷贝到file2
  • ssh-keygen -t rsa -b 4096 -C "xxxx@emspost.com.cn"
    • 在linux系统上生成对应的ssh密钥
  • cat id_rsa.pub                                        查看id_rsa.pub公钥内容,将内容复制到github仓库下
  • mv file1 file2                                           对file1文件重命名成file2
  • tar -zxvf file1.tar.gz -C file2                     将file1.tar.gz压缩包解压到file2目录下
  • ps aux | grep 进程关键字                         查找指定进程的详细信息
  • kill  pid                                                      终止指定pid号的进程

3、使用vim命令编辑文件的步骤:

1)打开终端:在Linux系统上打开一个终端窗口

2)输入命令 vim  filename,打开要编辑的文件

3)按下Enter回车键,vim将会打开该文件并显示在终端中

4)开始编辑文件:

       4.1)按下 i 键进入插入模式,可以开始输入文本内容

        4.2)在插入模式中,输入想要添加的内容,

        4.3)编辑完毕后,可以按下 Esc 键退出插入模式,返回到普通模式

5)保存并退出文件:完成编辑后,可以执行以下命令来保存更改并退出vim

        5.1)在普通模式下,输入:w并按下Enter回车键来保存文件但不退出vim

        5.2)输入:q并按下Enter回车键 来退出vim,但不保存更改内容

        5.3)输入:wq 并按下Enter回车键,保存更改并退出vim;

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wen_文文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值