lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)
目录
1 查看文件相关命令
1.1 常用命令
1.2 硬链接和软链接
2 文件搜索相关命令
2.1 查找文件命令
2.2 查找文件内容命令
2.3 其他相关命令
3 文件处理相关命令
3.1 cut
3.2 sed 过滤
3.3 awk 匹配
4 解压缩相关命令
4.1 解压缩文件的意义
4.2 解压缩相关命令
1 查看文件相关命令
1.1 常用命令
cat - concatenate files and print on the standard output
tac - concatenate and print files in reverse 逆序
more — file perusal filter for crt viewing 不可以回去,就是不可以向前,只能向后,按回车键
less - opposite of more less可以上下翻动 less不必读整个文件,加载速度会比more更快。按上下或jk,按右结束
head - output the first part of files 默认显示前10行
cat file
tac file
more file
less file
head file
1.2 硬链接和软链接
Linux中有两种类型的链接:
硬链接是利用Linux中为每个文件分配的物理编号——inode建立链接。因此,硬链接不能跨越文件系统。
linux@linux:~$ ls -i file
1448347 file
软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。
ln命令:
ln [ -s ] target link_name
选项“-s”表示为创建软链接。在缺省情况下,创建硬链接。参数target为目标文件,link_name为链接文件名。如果链接文件名已经存在但不是目录,将不做链接
linux@ubuntu:~$ ln -s /proc/cpuinfo mycpuinfo
linux@ubuntu:~$ ls –l mycpuinfo
lrwxrwxrwx 1 wdl wdl 13 2007-09-22 00:43 mycpuinfo -> /proc/cpuinfo
以上命令为/proc/cpuinfo文件创建了一个软链接文件。使用“ls –l”命令可以查看到新创建的链接文件所指向的目标文件名。
硬链接示例
linux@linux:~$ ls -i file
1448347 file
linux@linux:~$ ln file file_hard
linux@linux:~$ ls -i file_hard
1448347 file
软链接示例
linux@linux:~$ ls -i file
1448347 file
linux@linux:~$ ls -i file
1448347 file
linux@linux:~$ ln -s file file_soft
linux@linux:~$ ls -i file_soft
1448348 file_soft
硬链接和软链接的区别:
- 如果是修改硬链接的目标文件名,链接依然有效;
- 如果修改软链接的目标文件名, 则链接将断开;
- 对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。
- 假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。
2 文件搜索相关命令
2.1 查找文件命令
find - search for files in a directory hierarchy 语法:find [起始目录] 寻找条件 操作
-name '字串' 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]。-iname '字串' 忽略大小写的方式查找-type x 查找类型为 x 的文件-exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ \;”结束。
示例
find . -name "file2" //.代表当前目录下找
fine /home -name "file2" //在home目录下找
find . -iname "file2" //忽略大小写
find . -type f //f代表普通文件
寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。
and:逻辑与,在命令中用 -a 表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足find . -name 'tmp' -type c -user 'inin'or:逻辑或,在命令中用 -o 表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足OPTIONS:描述命令所有的参数或选项find . -name 'tmp' -o -name 'mina*'not:逻辑非,在命令中用 ! 表示。该运算符表示查找不满足所给条件的文件find . ! -name 'tmp'
示例
find . -name "file" -type l //当前目录查找名称file,文件类型是链接文件
find . -name "file" -a -type l //也可以加-a 与上面相同find . ! -name "file" -exec rm {} \; //找到名称不是file的文件,并且执行删除,exec代表删除{} \;固定用法加最后

2.2 查找文件内容命令
grep, egrep, fgrep, rgrep - print lines that match patterns
语法:grep [选项] 要查找的内容 查找的位置
常用选项:
-A 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B 除了显示符合样式的那一行之外,并显示该行之前的内容。
-C 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-i 忽略字符大小写的差别。
-r 查找位置是目录时用
-n 在显示符合样式的那一行之前,标示出该行的列数编号。
示例
linux@linux:~$ cat file2
hello
World
11
22
33
linux@linux:~$ grep -A 1 "hello" file2
hello
World
linux@linux:~$ grep -A 2 "hello" file2
hello
World
11
linux@linux:~$ grep -B 2 "22" file2
World
11
22
linux@linux:~$ grep -C 1 "22" file2
11
22
33
linux@linux:~$ grep -i -C 1 "World" file2
hello
World
11
linux@linux:~$ grep -in -C 1 "World" file2
1-hello
2:World
3-11
linux@linux:~$ grep -irn -C 1 "World" . //查看所有目录下 有world单词的内容
./file2:1-hello
./file2:2World
./file2:3-11
linux@linux:~$ grep -irn -C 1 "World" /home/linux
2.3 其他相关命令
which - locate a command 定为命令
whereis - locate the binary, source, and manual page files for a command 定位命令和操作手册
linux@linux:~$ which ls
/bin/ls
linux@linux:~$ which pwd
/bin/pwd
linux@linux:~$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
linux@linux:~$ whereis pwd
pwd: /bin/pwd /usr/include/pwd.h /usr/share/man/man1/pwd.1.gz
3 文件处理相关命令
3.1 cut
cut - remove sections from each line of files 从每行文件中删除部分
-b: 以字节为单位取出固定字符区间
-c :以字符 的单位取出固定字符区间;
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
示例

3.2 sed 过滤
sed - stream editor for filtering and transforming text 流编辑器过滤和转换文本
-r:使用扩展正则表达式-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项-i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改-n:取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
编辑命令
a: 追加
i: 插入
d: 删除
s: 替换
p: 打印
示例:
linux@linux:~/Desktop$ sed -n '1p' passwd //打印1行
root:x:0:0:root:/root:/bin/bash
linux@linux:~/Desktop$ sed -n '1,4p' passwd //打印passwd中1到4行linux@linux:~/Desktop$ sed '1d' passwd //预览删除passwd文件中第一行linux@linux:~/Desktop$ sed -i '1d' passwd //删除passwd文件中第一行
linux@linux:~/Desktop$ sed -i '1,3d' passwd //删除passwd文件中第一行至第三行linux@linux:~/Desktop$ sed -i '$ahi' passwd //在passwd文件中最后一行追加一个hi
linux@linux:~/Desktop$ sed -i '1ahi' passwd //在passwd文件中第一行追加一个hilinux@linux:~/Desktop$ sed -i '1ihi' passwd //在passwd文件中第一行插入一个hilinux@linux:~/Desktop$ sed -i 's/linux/Linux/' passwd //在passwd中替换一次linux->Linuxlinux@linux:~/Desktop$ sed -i 's/linux/Linux/g' passwd //在passwd中替换所有linux->Linuxlinux@linux:~/Desktop$ sed -i '20,34s/linux/Linux/g' passwd //在passwd的24-34行中替换所有linux->Linux
3.3 awk 匹配
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号

示例:
linux@linux:~/Desktop$ awk '{print $0}' file //打印全部
linux@linux:~/Desktop$ awk '{print $1}' file //打印file文件中第一列
linux@linux:~/Desktop$ awk '{print $1,$2}' file //打印file文件中第一列,第二列
linux@linux:~/Desktop$ awk '{print NR,$1}' file //打印file文件中第一列,包括行号
linux@linux:~/Desktop$ awk '{print NF,$1}' file //打印file文件中第一列,包括列数
linux@linux:~/Desktop$ awk '{print $NF}' file //打印file文件中最后一列数据
注意awk默认是空格进行分割的,如果要指定别的符号分割采取如下命令
awk -F ':' '{print $1}' passwd //打印passwd中以:为分隔符,第1列数据
运算:
== > < =赋值
awk -F ':' '$1=="linux" {print $0}' passwd //判断第一列数据是否等于linux,如果是都打印出来
4 解压缩相关命令
4.1 解压缩文件的意义
归档文件是将一组文件或目录保存在一个文件中。 压缩文件也是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。 归档文件仍是没有经过压缩的,它所使用的磁盘空间仍等于其所有文件的总和。因而,用户可以将归档文件再进行压缩,使其容量更小。
用户在进行数据备份时,需要把若干文件整合为一个文件以便保存。尽管整合为一个文件进行管理,但文件大小仍然没变。若需要网络传输文件时,就希望将其压缩成较小的文件,以节省在网络传输的时间。因此本节介绍文件的归档与压缩。
4.2 解压缩相关命令
gzip 和 gunzip
将一个文件压缩成.gz格式的压缩文件,移植性好
缺点:这个命令没有归档功能,每次只能压缩一个文件。生成相应名字的压缩包
linux@DESKTOP-6C99IPF:~/share$ ls
test
linux@DESKTOP-6C99IPF:~/share$ gzip test
linux@DESKTOP-6C99IPF:~/share$ ls
test.gz
linux@DESKTOP-6C99IPF:~/share$ gunzip test test.gz
linux@DESKTOP-6C99IPF:~/share$ ls
test
linux@DESKTOP-6C99IPF:~/share$
bzip2和bunzip2
bzip2命令是.bz2文件的压缩程序 bzip2在性能上优于gzip,提供了最大限度的压缩比率。
linux@DESKTOP-6C99IPF:~/share$ ls
test test1 test2
linux@DESKTOP-6C99IPF:~/share$ bzip2 *
linux@DESKTOP-6C99IPF:~/share$ ls
test.bz2 test1.bz2 test2.bz2
linux@DESKTOP-6C99IPF:~/share$ bunzip2 *
linux@DESKTOP-6C99IPF:~/share$ ls
test test1 test2
zip和unzip
压缩后的文件后缀名为 .zip,可以压缩目录,原文件保留。 方便在Linux和微软Windows间交换文件
linux@DESKTOP-6C99IPF:~/share$ ls
hello test test1 test2
linux@DESKTOP-6C99IPF:~/share$ zip test.zip *
linux@DESKTOP-6C99IPF:~/share$ ls
hello test test.zip test1 test2
linux@DESKTOP-6C99IPF:~/share$ rm hello test test1 test2 -r
linux@DESKTOP-6C99IPF:~/share$ ls
test.zip
linux@DESKTOP-6C99IPF:~/share$ unzip test.zip
linux@DESKTOP-6C99IPF:~/share$ ls
hello test test.zip test1 test2
tar
tar命令主要用于将若干文件或目录合并为一个文件,以便备份和压缩。当然,之后出现tar程序的改进版本,可以实现在合并归档的同时进行压缩。
tar命令符号模式的一般语法格式为:tar [ -t | -x | -r | -c | -v | -f | -j | -z ] tarfile filelist-t 显示归档文件的内容-x 释放归档文件-c 创建一个新的归档文件-r 追加的方式归档文件-v 显示归档和释放的过程信息-f 用户指定归档文件的文件名,否则使用默认名称-j 由tar生成归档,然后由bzip2压缩-z 由tar生成归档,然后由gzip压缩
示例
linux@ubuntu:~$ tar –cf myExamples.tar myExamples
linux@ubuntu:~$ tar -cjf myExamples.tar.bz2 myExamples
linux@ubuntu:~$ tar -czf myExamples.tar.gz myExamples
linux@ubuntu:~$ ls -lh myExamples.tar*
-rw-r--r-- 1 wdl wdl 9.3M 2007-09-23 00:42 myExamples.tar
-rw-r--r-- 1 wdl wdl 8.6M 2007-09-23 00:43 myExamples.tar.bz2
-rw-r--r-- 1 wdl wdl 8.5M 2007-09-23 00:44 myExamples.tar.gz
linux@ubuntu~$ tar –tvf myExamples.tar.gz
linux@ubuntu:~$ tar –xvf myExamples.tar
linux@ubuntu:~$ tar -xvjf myExamples.tar.bz2
linux@ubuntu:~$ tar -xvzf myExamples.tar.gzlinux@linux:~/Desktop$ tar -cf file.tar file1 file2 file3
linux@linux:~/Desktop$ ls
file1 file2 file3 file.tar
linux@linux:~/Desktop$ rm file1 file2 file3
linux@linux:~/Desktop$ ls
file.tar
linux@linux:~/Desktop$ tar -xvf file.tar
file1
file2
file3
linux@linux:~/Desktop$ ls
file1 file2 file3 file.tar
相关文章:
lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)
目录 1 查看文件相关命令 1.1 常用命令 1.2 硬链接和软链接 2 文件搜索相关命令 2.1 查找文件命令 2.2 查找文件内容命令 2.3 其他相关命令 3 文件处理相关命令 3.1 cut 3.2 sed 过滤 3.3 awk 匹配 4 解压缩相关命令 4.1 解压缩文件的意义 4.2 解压缩相关命令 1 …...
SpringBoot2.0集成WebSocket,多客户端
适用于单客户端,一个账号登陆一个客户端,登陆多个客户端会报错 The remote endpoint was in state [TEXT_FULL_WRITING] 这是因为此时的session是不同的,只能锁住一个session,解决此问题的方法把全局静态对象锁住,因…...
华为OD机试 - 等和子数组最小和 - 深度优先搜索(Java 2022 Q4 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》…...
浏览器会因为什么样的脚本而崩溃
浏览器可能因为以下几种情况而崩溃: 无限循环:如果JavaScript脚本包含一个无限循环,浏览器将无法停止脚本的执行,导致浏览器不响应甚至崩溃。例如,以下代码会导致无限循环: while (true) {// 无限循环 } 内…...
生成与调用C++动态链接库(so文件)
文章目录 前言生成C动态链接库步骤1:编写C源码步骤2:生成共享库步骤3:验证生成的SO文件 调用C动态链接库步骤1:修改原来makefile步骤2:编译调用程序步骤3:运行调用程序 总结 前言 动态链接库是代码重用和模…...
韶音的耳机怎么样,韶音骨传导耳机值得入手吗
韶音关于骨传导耳机的产品在质量方面还是有着不错的表现,其最具代表性的骨传导耳机就是韶音OpenRun Pro,在国产骨传导耳机中是具备了一定的知名度,有着自主研发的声学技术。 最突出的点就在于颜色上多样化,有着经典的黑色…...
STM32G030F6 (SOP-20)Cortex ® -M0+, 32KB Flash, 8KB RAM, 17 GPIOs
淘宝淘了一批 STM32G030F6P6 SOP20.先备注一下, 还没想到能干嘛用. 手上的 STM32F103C6T6还剩一些. 一堆 “淘宝原厂STM32F103C8T6”, 还烫着手. 理解信息: ( 逐步补充 ) System Clock GPIOs GPIOs 17 PA[7:0] : 8bits USART Timer ADC I2…...
常用的字符集和字符编码
基础概念 字符 字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等 字符集 一个操作系统支持的字符的集合。 字符编码和解码 将每个字符都设置一个唯一编号,编码就是将字符集中的字符编号以一定形式转化为字节存储下来,…...
容器技术简介
引言 随着云计算、大数据、人工智能等技术的不断发展,容器技术作为一种新兴的虚拟化技术,正逐渐成为IT领域的热点。容器技术可以帮助开发者更好地管理、部署和扩展应用程序,提高开发效率和应用程序的可靠性。本文将深入探讨容器技术的概念、…...
数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...
全文链接:http://tecdat.cn/?p22813 本教程为读者提供了使用频率学派的广义线性模型(GLM)的基本介绍。具体来说,本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用,以及模型评估的方法(点击文末“阅读原文…...
macos 不支持svn安装
macos 10.13可能不支持svn命令,所以要安装 xcode-select --install 弹窗在线安装失败的话只能手动下载安装 打开:Sign In - Apple 搜索Command Line Tools (macOS 10.13) 下载9.4.1版本直接安装后即可...
如何通过实际操作来加深对Linux命令和概念的理解?
作为一个新手,你一定不要被Linux那堆命令吓到。其实,它们就像你的“超能力”,只要你掌握它们,你就能成为Linux世界的超级英雄! 首先,我们要了解的是,Linux命令其实就像你的“魔法咒语”&#x…...
【开发语言】C语言与Python的互操作详解
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
华为配置聚合vlan(Super vlan--Sub vlan)
聚合vlan,Aggregation vlan,也称Super vlan,可以实现用Sub vlan二层隔离广播域,但又将这些Sub vlan聚合使用同一IP子网和网关的情况。 这样,多个Sub-VLAN共享一个网关地址,节约了子网号、子网定向广播地址、…...
CentOS7安装时直接跳过了安装信息摘要页面的解决方法
最近在配置Hadoop虚拟机的时候,创建的centos7虚拟机在安装信息摘要时直接自动跳过,直接跳到设置用户名和密码,在重复多次的重新删除安装后发现了问题所在: 在进行到选择操作系统来源时,注意是否出现“该操作系统将使用…...
python基础运用例子
python基础运用例子 1、⼀⾏代码交换 a , b :a, b b, a2、⼀⾏代码反转列表 l[::-1]3、合并两个字典 res {**dict1, **dict2}**操作符合并两个字典for循环合并dict(a, **b) 的方式dict(a.items() b.items()) 的方式dict.update(other_dict) 的方式 4、⼀⾏代码列…...
k8s基本概念
一、什么是Kubernetes二:Kubernetes部署方式的演变三、为什么要用K8S四、K8S的特性五、Kubernetes 集群架构与组件5.1 Master 组件① Kube-apiserver② Kube-controller-manager③ Kube-scheduler④ AUTH 认证模块 5.2 配置存储中心5.3 Node 组件① Kubelet② Kube-…...
Python exp() 函数
描述 exp() 方法返回x的指数,ex。 语法 以下是 exp() 方法的语法: import mathmath.exp( x ) 注意:exp()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的指数,ex。 实例 以下展…...
Day 34 贪心算法 part03 : 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…...
气象站的构成及功能应用
气象站是一种用于观测、记录和报告天气数据的设备。它是由数据采集系统、通讯系统、供电系统和立杆支架构成。 一、气象站的构成: 数据采集系统:用于测量气温、湿度、风速、风向、气压、降雨量、雪深等气象参数。 通讯系统:收集和处理传感…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
