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        文件存在且有可执行权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV实现多尺度细节提升算法

1、算法原理 多尺度细节提升算法来源于论文*《DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING》*&#xff0c;算法主要是解决细节增强算法中噪声和细节的平衡问题。 常规的非锐化掩蔽&#xff08;USM&#xff09;算法在提升细节…

查看APK的公钥,MD5信息

查看md5 sha1 sha256的等信息 keytool -list -printcert -jarfile apk的路径地址 查看公钥私钥信息 keytool -list -rfc --keystore keystore文件的路径地址 | openssl x509 -inform pem -pubkey 把里面的keystore文件的路径地址替换成你的本地文件就可以了 如果报以上错误 就…

【机器学习实战入门】使用Python进行手写数字识别

什么是手写数字识别&#xff1f; 手写数字识别是计算机识别手写数字的能力。这对手工制造的设备来说是一个难题&#xff0c;因为手写数字并不完美&#xff0c;且人们书写数字的方式多种多样。手写数字识别旨在解决这一问题&#xff0c;通过使用数字的图像来识别该图像中的数字…

技术晋升读书笔记—华为研发

读完《华为研发》第三版&#xff0c;我深感震撼&#xff0c;书中的内容不仅详实地记录了华为公司的成长历程&#xff0c;还揭示了华为成功背后的管理理念和创新思路。这本书通过真实的案例和数据&#xff0c;展示了华为如何从一个小企业发展成全球通信行业的领导者。 一、关键人…

SQL server数据库导出excel操作

1、选择需要查询的数据库&#xff1a;鼠标右键—>任务—>导出数据 2、 选择数据源和服务器&#xff0c;使用sql server身份验证 &#xff08;数据源就是指需要从哪里导出到excel表格&#xff0c;这里就选择你需要导出的数据库&#xff09; 3、下一步选择要导出的excel表…

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦&#xff0c;保证给大家讲懂嗷&#xff1b; 1&#xff0c;线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的&#xff0c;或者即将工作&#xff0c;正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …

用LLM做测试驱动开发:有趣又高效的尝试

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

你需要什么样的资源隔离?丨TiDB 资源隔离最佳实践

导读 资源隔离是数据库性能优化的重要环节&#xff0c; TiDB 在当前版本已经实现了从数据级隔离到流控隔离的全面升级 &#xff0c;无论是多系统共享集群、复杂负载隔离&#xff0c;还是小型系统整合和 SQL 精细化控制&#xff0c;TiDB 都提供了灵活且高效的解决方案。 本文以…

1 行命令引发的 Go 应用崩溃

一、前言 不久前&#xff0c;阿里云 ARMS 团队、编译器团队、MSE 团队携手合作&#xff0c;共同发布并开源了 Go 语言的编译时自动插桩技术。该技术以其零侵入的特性&#xff0c;为 Go 应用提供了与 Java 监控能力相媲美的解决方案。开发者只需将 go build 替换为新编译命令 o…

Python毕业设计选题:基于django+vue的宠物服务管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 宠物商品管理 医疗服务管理 美容服务管理 系统…

Java连接TDengine和MySQL双数据源

git文件地址&#xff1a;项目首页 - SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源 - GitCode 1、yml配置 spring:datasource:druid:mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: roo…

三十一、事件过滤处理分析

三十一、事件过滤处理分析eventFilter 实现以下功能 bool QObject::eventFilter(QObject *watched, QEvent *event)&#xff1a; 如果已将此对象安装为所监视对象的事件过滤器&#xff0c;则过滤事件。 在你重新实现这个函数时&#xff0c;如果你想过滤掉事件&#xff0c;即停…

C++ QT中Q_Q和Q_D是什么?怎么使用?本质是什么?C++仿写

1.QT中Q_Q和Q_D是什么&#xff1f; Q_Q可以得到外部可以访问的类指针Q_D可以得到内部封装&#xff0c;外部不可达的类指针 2. 怎么使用&#xff1f; 上代码 APrivate.h #pragma once #include <QtCore>class A;class APrivate {Q_DECLARE_PUBLIC(A) public:APrivate(…

三种文本相似计算方法:规则、向量与大模型裁判

文本相似计算 项目背景 目前有众多工作需要评估字符串之间的相似(相关)程度&#xff1a;  比如&#xff0c;RAG 智能问答系统文本召回阶段需要计算用户文本与文本库内文本的相似分数&#xff0c;返回前TopK个候选文本。  在评估大模型生成的文本阶段&#xff0c;也需要评估…

高效实现 Markdown 转 PDF 的跨平台指南20250117

高效实现 Markdown 转 PDF 的跨平台指南 引言 Markdown 文件以其轻量化和灵活性受到开发者和技术写作者的青睐&#xff0c;但如何将其转换为易于分享和打印的 PDF 格式&#xff0c;是一个常见需求。本文整合了 macOS、Windows 和 Linux 三大平台的转换方法&#xff0c;并探讨…

浅谈云计算21 | Docker容器技术

Docker容器技术 一、 容器技术特性1.1 轻量级特性1.2 隔离性特性 二、容器镜像2.1 容器镜像概述2.1.1 定义与构成2.1.2 分层结构 2.2 联合文件系统2.3 容器镜像的构建与管理2.3.1 容器镜像的构建2.3.2 **构建镜像流程**2.3.3 **应用场景**2.3.4 镜像仓库的应用 2.4 容器镜像的优…

LabVIEW实现油浸式变压器自主监测与实时报告

油浸式变压器广泛应用于电力系统中&#xff0c;尤其是在电力传输和分配领域。为了确保变压器的安全、稳定运行&#xff0c;及时监测其工作状态至关重要。传统的变压器监测方法通常依赖人工巡检和定期检查&#xff0c;但这不能及时发现潜在的故障隐患&#xff0c;且效率较低。随…

【2025最新】国内中文版 ChatGPT镜像网站整理合集,GPT最新模型4o1,4o,4o-mini分类区别,镜像站是什么

1.快速导航 原生中转型镜像站点 立即Chat支持GPT4、4o以及o1,canvs等&#xff0c;同步官网功能 AIChat.com 支持最新4O 2.两者对比 官网立即Chat访问难度需要魔法直接访问支付手段国际支付国内支付封禁策略检测节点&#xff0c;随时封禁不会封禁价格每月140元订阅费用每年70元…

SpringBoot:RestTemplate与IllegalArgumentException

问题描述 在SpringBoot应用中&#xff0c;有时会遇到使用RestTemplate调用第三方服务的场景。例如&#xff1a;在进行地名数据采集时&#xff0c;为了拿到地名对应的经纬度位置&#xff0c;通常会有地理编码的步骤&#xff0c;此时就可能涉及到调用第三方接口服务实现此需求。 …

【日志篇】(7.6) ❀ 01. 在macOS下刷新FortiAnalyzer固件 ❀ FortiAnalyzer 日志分析

【简介】FortiAnalyzer 是 Fortinet Security Fabric 安全架构的基础&#xff0c;提供集中日志记录和分析&#xff0c;以及端到端可见性。因此&#xff0c;分析师可以更有效地管理安全状态&#xff0c;将安全流程自动化&#xff0c;并快速响应威胁。具有分析和自动化功能的集成…