bash脚本

关于bash脚本(Linux) shell的一些学习心得

对bash脚本的一些理解

bash脚本就是把一些我们重复的在终端输入的操作写成.sh文件,然后直接在终端运行这个.sh文件,就可以批量的完成我的操作,可能我这句话说的不是很准确,我要用我写的例子来讲述我的理解。

要实现的案例

首先我要做的是将一个文件夹里所有的deb文件按照它们的名字建立分级目录,然后将deb解压后的文件夹里的所有.so文件和可执行文件提取到建立好的分级目录里。
deb文件名字如图所示,文件名字为lighttpd_1.4.35-4ubuntu2.1_arm64.deb。我要建立一个分级目录/lighttpd/1.4.35-4ubuntu2.1/arm64.deb,把解压后的deb文件中的.so文件和可执行文件放到这个目录下。如果仅仅只对这一个文件进行操作,我们只需要在终端分别输入指令就可以。

#先建立解压后的deb文件存放的文件夹
mkdir extract
mkdir extract/DEBIAN
#然后对文件进行解压,XXX为文件的名字,这个例子里面XXX就填成lighttpd_1.4.35-4ubuntu2.1_arm64.deb
dpkg -X .XXX extract
#按照deb文件的名字建立分级目录
 #mkdir -p p1/p2/p3
mkdir -p lighttpd/1.4.35-4ubuntu2.1/arm64.deb
#查找所有的so文件和可执行文件
find . -name *.so
find .  -type f -perm -111
#然后使用cp操作就可以把找到的文件复制到之前创建好的多级文件夹里

deb文件:deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb。
但是这样子只能每个文件都要在终端敲一遍,这个时候我们的bash脚本就发挥作用了。

开始写实现上面需求功能的脚本

bash脚本的开头要写上

#! /bin/bash
#author:zhangyingli
#bash脚本的目的

#建立解压deb文件后的文件所在的文件夹
mkdir extract
mkdir extract/DEBIAN
#Linux Shell获取文件夹下的文件名
#$n就代表传给脚本的第几个参数
path=$1 #$1代表传入的第一个参数,输入deb文件在的文件夹的路径
files=$(ls $path)
for filename in $files  #将path下的文件名循环出来
do
  #mkdir extract
  #mkdir extract/DEBIAN
	#echo $filename
  #将文件解压到extract文件夹下
  dpkg -X ./deb/$filename extract
  #将文件名字转换为字符串
  string="$filename"
  #echo $string
  index=0
  #分割文件名字转换为的字符串
  OLD_IFS="$IFS" 
  IFS="_" 
  arr=($string) 
  IFS="$OLD_IFS" 
  for s in ${arr[@]} 
  do 
      array_name[index]=$s
      #echo ${array_name[index]}
      let index++
      #echo "$s" 
  done
	#建立多级目录
  mkdir -p ${array_name[0]}/${array_name[1]}/${array_name[2]}
  
  #开始寻找so文件和可执行文件
  find /home/hyy/extract -name "*.so" | xargs -i cp {} ./${array_name[0]}/${array_name[1]}/${array_name[2]}/
  find /home/hyy/extract -type f -perm -111 | xargs -i cp {} ./${array_name[0]}/${array_name[1]}/${array_name[2]}/
  #删除extract目录
  sudo rm -rf /home/extract
done

如何在linux终端运行bash脚本

一般要先给权限:
sudo chmod 777 gitpull.sh 赋予可执行权限
运行bash语句:
bash 脚本的名字.sh

chomd用法
Linux系统中,每个用户的角色和权限划分的很细致也很严格,每个文件(目录)都设有访问许可权限,利用这种机制来决定某个用户通过某种方式对文件(目录)进行读、写、执行等操作。

操作文件或目录的用户,有3种不同类型:文件所有者、群组用户、其他用户。最高位表示文件所有者的权限值,中间位表示群组用户的权限值,最低位则表示其他用户的权限值,所以,chmod 777中,三个数字7分别对应上面三种用户,权限值都为7。

文件或目录的权限又分为3种:只读、只写、可执行。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值