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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕破解公共厕所管理的“孤岛现象”

在现代社会中&#xff0c;公共厕所是城市管理中的一项重要任务。然而&#xff0c;经常会出现公厕管理的“孤岛现象”&#xff0c;即每个公厕都是独立运作&#xff0c;缺乏统一的管理和监控机制。针对这一问题&#xff0c;智慧公厕的出现为解决公共厕所管理难题带来了新的方案。…

【Unity3D】UI Toolkit样式选择器

1 前言 UI Toolkit简介 中介绍了样式属性&#xff0c;UI Toolkit容器 和 UI Toolkit元素 中介绍了容器和元素&#xff0c;本文将介绍样式选择器&#xff08;Selector&#xff09;&#xff0c;主要包含样式类选择器&#xff08;Class Selector&#xff09;、C# 类选择器&#xf…

C++ 结构体

前文 C中的结构体是一种非常有用的数据类型&#xff0c;它允许我们将不同的变量组合在一起&#xff0c;形成一个自定义的数据结构。 结构体在C中的应用非常广泛&#xff0c;它可以用来表示和管理各种实体、对象或数据的属性。比如&#xff0c;在一个学生管理系统中&#xff0c…

阿里云和腾讯云2核2G服务器价格和性能对比

2核2G云服务器可以选择阿里云服务器或腾讯云服务器&#xff0c;腾讯云轻量2核2G3M带宽服务器95元一年&#xff0c;阿里云轻量2核2G3M带宽优惠价108元一年&#xff0c;不只是轻量应用服务器&#xff0c;阿里云还可以选择ECS云服务器u1&#xff0c;腾讯云也可以选择CVM标准型S5云…

实现在一张图片中寻找另一张图片的目标

OpenCV库中的SIFT特征检测算法和FLANN&#xff08;快速最近邻搜索库&#xff09;匹配算法来找到一个图片中的元素在另一个图片中的位置&#xff0c;并在源图片中标出它们的位置。 以下是一个简单的例子&#xff0c;使用OpenCV库&#xff0c;利用SIFT特征检测算法&#xff0c;在…

《向量数据库》——向量数据库Milvus 和大模型出联名款AI原生Milvus Cloud

大模型技术的发展正加速对千行百业的改革和重塑,向量数据库作为大模型的海量记忆体、云计算作为大模型的大算力平台,是大模型走向行业的基石。而电商行业因其高度的数字化程度,成为打磨大模型的绝佳“战场”。 在此背景下,Zilliz 联合亚马逊云科技举办的【向量数据库 X 云计…

云服务器下如何部署Django项目详细操作步骤

前期本人完成了“编写你的第一个 Django 应用程序”&#xff0c;有了一个简单的项目代码&#xff0c;在本地window系统自测没问题了&#xff0c;接下来就想办法部署到服务器上&#xff0c;可以通过公网访问我们的Django项目。将开发机器上运行的开发版软件实际安装到服务器上进…

鼠标知识系列之星闪鼠标

随着 2023.8.4 华为 HDC 大会的落幕&#xff0c;一个新的名词开始进入了人们的视线&#xff1a;星闪 NaerLink&#xff0c;随着星闪技术引入键鼠圈子的还有一个名词&#xff1a;星闪鼠标。 正如我们之前鼠标知识分享系列提到过的&#xff0c;目前市面上的鼠标主要是有线鼠标和…

烟感报警器单片机方案开发,解决方案

烟感报警器也叫做烟雾报警器。烟感报警器适用于火灾发生时有大量烟雾&#xff0c;而正常情况下无烟的场所。例如写字楼、医院、学校、博物馆等场所。烟感报警器一般安装于所需要保护或探测区域的天花板上&#xff0c;因火灾中烟雾比空气轻&#xff0c;更容易向上飘散&#xff0…

在FPGA上快速搭建以太网

在本文中&#xff0c;我们将介绍如何在FPGA上快速搭建以太网 &#xff08;LWIP &#xff09;。为此&#xff0c;我们将使用 MicroBlaze 作为主 CPU 运行其应用程序。 LWIP 是使用裸机设计以太网的良好起点&#xff0c;在此基础上我们可以轻松调整软件应用程序以提供更详细的应用…

【MySQL基础】一条查询和更新语句的执行流程01-02

目录 MySQL的基本架构示意图连接器查询缓存分析器优化器执行器重要的日志模块&#xff1a;redo log重要的日志模块&#xff1a;binlog更新时redo log 和 binlog 两阶段提交 例如在执行下面这个查询语句&#xff1a; mysql> select * from T where ID10&#xff1b;MySQL的基…

Apache Hive之数据查询

文章目录 版权声明数据查询环境准备基本查询准备数据select基础查询分组、聚合JOINRLIKE正则匹配UNION联合Sampling采用Virtual Columns虚拟列 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马程序员或相关权利…

GPT引领前沿热点、AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。 2、数据可…

vue2中实现 TDesign 树形懒加载

之前我有写过Element ui的树形懒加载 其主要是通过load函数来实现 而TDesign也是照虎画猫 他也是主要靠load 我们先来看一个基本的组件 <template><t-tree :data"items" :load"load" /> </template><script lang"jsx">…

【每天一道算法题】day2-认识时间复杂度

认识时间复杂度&#xff1a; O&#xff1a;读作big O&#xff0c;在数学上指的是上限的意思 常数时间的操作 一个操作如果和样本的数据量没有关系&#xff0c;每次都是固定时间内完成的操作&#xff0c;叫做常数操作。时间复杂度为一个算法流程中&#xff0c;常数操作数量的一…

交友盲盒完整版——详细源码分享

现在目前比较火热的一款app交友盲盒是通过uniappspringboot技术来制作的&#xff0c;原理其实很简单&#xff0c;大家一看便知。 大家自行下载到手机里面去使用即可&#xff0c;不支持ios手机 演示地址&#xff1a;https://share.weiyun.com/l3ovztce 下面就是给大家分享源码了…

【C++】可变参数模板

2023年9月9日&#xff0c;周六下午 这个还是挺难学的&#xff0c;我学了好几天... 在这里我会举大量的示例程序&#xff0c;这样可以有一个更好的理解&#xff0c; 不定期更新。 目录 推荐文章&#xff1a; 示例程序一&#xff1a;拼接字符串 示例程序二&#xff1a;求整…

局域网ntp服务器设置(windows时间同步服务器NetTime)(ubuntu systemd-timesyncd ntp客户端)123端口、ntp校时

文章目录 背景windows如何配置ntp服务器手动配置配置参数AnnounceFlags和Enabled含义 使用软件配置&#xff08;NetTime&#xff09;实操相关疑问&#xff1a;0.nettime.pool.ntp.org是什么&#xff1f; 注意事项请务必检查windows主机123端口是否已被占用&#xff0c;方法请参…

华为云云耀云服务器L实例评测|在Docker环境下部署Ward服务器监控工具

华为云云耀云服务器L实例评测&#xff5c;在Docker环境下部署Ward服务器监控工具 一、前言1.1 云耀云服务器L实例简介1.2 Ward简介1.3 Ward特点 二、本次实践介绍2.1 本次实践简介2.2 本次环境规划 三、购买云耀云服务器L实例3.1 购买云耀云服务器L实例3.3 查看云耀云服务器L实…

Java高级——类加载及执行子系统的案例与实战

类加载及执行子系统的案例与实战 概述类加载器案例TomcatOSGi 字节码案例动态代理Java逆向移植工具 实战——远程执行功能目标思路实现验证&#xff08;未完成&#xff0c;不会写JSP&#xff09; 概述 Class文件以何种格式存储、字节码指令如何执行等都是由JVM控制 字节码生成…