当前位置: 首页 > article >正文

Linux第二课:LinuxC高级 学习记录day03

4、解压和压缩

1、gzip 和 gunzip

特点:

        1)只能对单个普通文件进行压缩或解压

        2)不能进行归档,压缩后或解压缩后源文件不存在

        3)压缩生成压缩格式为.gz

命令:

        压缩:gzip 文件名.c        // 默认生成压缩文件:文件名,c.gz

        解压:gunzip 文件名.c.gz        // 默认生成文件:文件名.c

 2、bzip2 和 bunzip2

特点:和gzip相同,压缩格式为 .bz2 格式

命令:与gzip相同

3、xz 和 unxz

特点:和bzip2,gzip相同,压缩格式为 .xz 格式

命令:与bzip2,gzip相同

4、zip 和 unzip

特点:

        1)具有归档功能

        2)可以压缩文件夹,压缩格式为 .zip 

        3)压缩或者解压之后源文件依然存在

命令:

        压缩:zip 压缩文件名 要压缩的文件列表

        解压:unzip 压缩文件名

5、tar

选项:

        -c:创建一个新的归档文件

        -v:显示归档和释放的过程信息

        -x:释放归档文件

        -f:用户指定归档文件的文件名

        -t:列出tar归档文件中包含的文件或目录

        -j:由tar生成归档,然后由bzip2压缩 .bz2

        -z:由tar生成归档,然后由gzip压缩 .gz

        -J: 由tar生成归档,然后由xz压缩 .xz

命令:

        tar 选项 压缩文件名 要压缩的文件列表

压缩组合:

        tar -cvjf file.tar.bz2 *

        tar -cvJf file.tar.xz *

        tar -cvzf file.tar.gz *

解压:

        tar -xvf xxx.tar.压缩格式

注意:

        1)tar -cvf file.tar *        // 只归档不压缩

         2)具有归档功能,通过选项可以进行压缩或者解压

        3)压缩或解压后源文件存在

        4)需要写全压缩或解压的文件名格式:        压缩文件名.tar.压缩格式

查看:

        tar -tf xxx.tar.gz

 5、shell脚本编程

5.1、shell脚本

        shell        // 解析器:sh csh ksh bash

        shell 命令        // shell 解析的命令

        shell 脚本        //  shell 命令的有序集合

        shell 脚本编程        // 将shell命令按照一定逻辑集合到一起,写到一个 .sh 文件,实现一个或多个功能,这个脚本文件不用编译直接执行

解释型语言:脚本,python

编译型语言:C,C++,java,汇编

书写shell脚本的步骤:

        1、创建一个脚本文件        // touch 文件名.sh

        2、编辑脚本内容         // vi 或者 vscod

        3、执行脚本文件

                1)直接运行脚本

                        chmod 777 xxx.sh

                        ./xxx.sh

                2)bash 文件名

 5.2、shell 变量

        shell 中允许建立变量存储数据,但是不支持数据类型(整型,字符,浮点型),所有赋值给变量的值都解释为一串字符串。

5.1.1、变量的定义

格式:

        变量名=值        // = 两边不能加空格

获取变量的值: $变量名

        a=hello

        b=$a

5.1.2、变量的分类

系统环境变量

        // 系统配置好的,内置的变量

查看环境变量

        env

        printenv

expor 变量名=值        // 临时终端有效

~/.bashrc        // 当前用户永久有效

/etc/bash.bashre        // 所有用户永久有效

 自定义变量

格式

        变量名=变量的值

        变量名=‘变量的值’

        变量名=“变量的值”

                // = 两端不能有空格

                // ‘ ’ 内不能使用$展开变量的值

 修饰

        readonly:只读变量,值不能修改

        unset:清空变量的值,不能清空 readonly 修饰的变量

 位置变量和命令行参数

        $0        // 可执行脚本名

        $1 $2 $3 …… $9        // 脚本名之后的字符串

        ${n}        // 脚本名之后的字符串,n > 10

        $#        // 获取所有外部参数的个数(不包含脚本名)

        $* 或者 &@        // 获取所有外部参数(不包含脚本名)

预定义变量

        $?        // 获取的是上一条命令是否是正确的执行结果

                // 0 :真,非0:假

        $$        // 获取当前脚本的进程 ID

6、shell 中的语句

6.1、分类

1)说明性语句

        以#开始,到该行结束,不被解释执行

2)功能性语句

        任意shell命令,用户程序或其他shell程序

3)结构性语句

        条件测试语句,多路分支语句,循环语句,循环控制语句等

6.2、功能性语句

6.2.1、read

        // 类似scanf

功能:

        从终端获取值赋值给变量

格式:

        read 变量1 变量2

选项:

        read -p "提示信息" 变量1        // 提示信息

        read -s 变量        // 输入信息不回显

        read -t 秒数 变量        // 输入限时,时限内不输入,结束输入向后执行语句

        read -n 个数 变量名        // 限制输入个数,输入到一定量字符,自动停止

 6.2.2、shell中的运算

        shell 本身不擅长运算,需要借助于运算符和其他命令

1、expr

使用方法:

        1)expr中使用变量,必须加$

        2)expr本身可以直接将结果输出到终端,想接收expr的结果,必须有命令置换符` `

        3)expt 中运算符两侧必须有空格,不支持自增和幂运算

        4)expr 中使用某县运算符时,需要转义\ : ( ) | > < ...

 expr可以进行字符串运算:

        expr match  ”字符串“  表达式(“字符串”)

        expr match "hello world" "hello"        // 返回:5

        expr match "hello world" "llo"        // 返回:3

        // 表达式在字符串中的第一个位置完全匹配,返回匹配字符个数,不能完全匹配返回值为0

        expr  substr  “字符串”  偏移量  长度

        expr  substr  “hello world”  7  5

        // 从字符串开头数偏移7个字符,然后从第7个位置截取5个字符

        返回:world

        expr  index  “字符串”  字符

        expr index "hello word" e        返回:2

        // 返回字符在字符串中第一次被查找到时的下标,下标从1开始

        expr index "hello word" le        返回:2

        // 如果查找多个字符在字符串的位置,返回最先出现的字符下标

        expr length “字符串”        // 返回字符串的长度

2、let

使用方法:

        1、let 变量名=表达式

        2、let 运算时,运算符两侧不能有空格

        3、let 中使用变量时,可以加$也可以不加

        4、如果直接写成 let 表达式,表达式可以运行,但是没法接收

        5、let 可以自加(与C语言相同)

3、test

        test 语句可以测试三种对象:字符串,整数,文件属性

字符串测试

        符号两侧必须有空格,没有返回值

        s1 = s2        // 测试两个字符串的内容是否完全一样

        test “hello” = "world"        // 相等为真,不等为假

        s1 != s2        // 测试两个字符串的内容是否存在差异

        test “hello” != "world"        // 相等为假,不等为真

         -z s1        // 测试字符串的长度是否为空

        test -z ""        // 空为真,非空为假

        -n s1        // 测试字符串的长度是否不为空

        teat -n "hello"        // 空为假,非空为真

整数的测试

        a -ep b        // 测试 a 和 b 是否相等        equai

        read  A  B

        test $A -eq $B

        echo $?        // 如果两个数相等则为真,反之为假

        a -ne b        // 测试a 和 b 是否相等

        test $A -ne $B        // 相等为假,不等为真

        a -gt b        // 测试 a 是否大于 b 

        test $A -gt $B        // a > b为真,a不大于b为假

        a -ge b        // 测试 a 是否大于等于b

        a -lt b        // 测试 a 是否小于 b

        a -le b        // 测试 a 是否小于等于 b

文件属性测试

        -d  name 测试 name 是否为一个目录

        test -d $FILE        // 是目录为真,在当前目录找

        -f name        // 测试 name 是否为一个普通文件

        -e name        // 测试name是否存在

补充:

        FILE1 -nt FILE2        1的时间戳比2的更新

        FILE1 -ot FILE2        1的时间戳比2的更旧

        -b FILE        文件存在且是一个块设备文件

        -c FILE        文件存在且是一个字符设备文件

        -d FILE        文件存在且是一个目录设备文件

        -f FILE        文件存在且是一个普通文件

        -e FILE        文件存在

        -h 或者 -L FILE        文件存在且为软链接文件

        -s FILE        文件存在且大小不为0

        -S FILE        文件存在且是一个套接字文件

        -p FILE        文件存在且是一个管道文件

        -w FILE        文件存在且有可写权限

        -r FILE        文件存在且有可读权限

        -x FILE        文件存在且有可执行权限


http://www.kler.cn/a/504043.html

相关文章:

  • Windows图形界面(GUI)-QT-C/C++ - Qt图形绘制详解
  • 分布式缓存redis
  • Three.js 用户交互:构建沉浸式3D体验的关键
  • pandas与sql对应关系【帮助sql使用者快速上手pandas】
  • WINFORM - DevExpress -> DevExpress总结[安装、案例]
  • springboot
  • PHP Filesystem:深入解析与实战应用
  • 【机器学习】聚类评价指标之福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)
  • 说一说mongodb组合索引的匹配规则
  • 从github上,下载的android项目,从0-1进行编译运行-踩坑精力,如何进行部署
  • 65.在 Vue 3 中使用 OpenLayers 绘制带有箭头的线条
  • 伏羲1.0试用版(文生图)
  • 【软件工程】知识点总结(下)
  • 基于python的舆情监测管理系统
  • phpstorm jetbrain 配置review code
  • React 中事件机制详细介绍:概念与执行流程如何更好的理解
  • 软件测试 —— 自动化测试(Selenium)
  • element-ui dialog弹窗 设置点击空白处不关闭
  • 【Redis】初识Redis
  • 机器学习赋能的智能光子学器件系统研究与应用
  • Spring Boot 项目启动后自动加载系统配置的多种实现方式
  • 202305 青少年软件编程等级考试C/C++ 二级真题答案及解析(电子学会)
  • 本地服务器Docker搭建个人云音乐平台Splayer并实现远程访问告别烦人广告
  • mapbox进阶,添加绘图控件
  • NHANES数据挖掘|特征变量对死亡率预测的研究设计与分析
  • 机器学习之自助法