【Linux系统】—— 基本指令(三)
- 1「find」指令
- 2 「grep」指令
- 3 打包压缩基本知识
- 4 「zip / unzip」指令
- 5「tar」命令
- 6 文件互传
- 7 「bc」指令
- 8 「uname -r」命令
- 9 几个常用快捷键
- 10 「shutdown」 指令:关机
- 11 扩展命令
1「find」指令
常用选项:
前面我们曾学习过一个查找命令:「which」
「which」是用来查 Linux 系统中的命令,它只会去指定的目录(/usr/bin)下查找指定的命令
但如果我不想查系统的,我想查文件呢?这时就需要用「find」命令。比如查根目录下共有几个『.txt』后缀的文件
2 「grep」指令
2.1 初识「grep」指令
运用管道文件和「grep」指令,将日志中带有 “of” 的行数据打印出来。
当然,也可以不用管道文件。
总的来说,「grep」的核心作用就是行文本过滤工具,它会把包含某个关键字的行保留下来
。
2.2 「grep」指令 选项
现在为了演示,我们新建一个文件,代码如下:cnt=0; while [ $cnt -le 100 ]; do echo “hello $cnt”; let cnt++; done > log.txt
「-n」 :它可以将我们匹配出的行在原始文件中的行号标识出来
「-v」:进行反向选择,凡是包含关键字的行都不显示,其他行显示
「-i」:不区分大小写
我们先用「nano」手动修改部分数据
现在我们搜索"HELLO"
我们再带上 「-i」 选项
「-i」如上:不区分大小写
3 打包压缩基本知识
什么是打包压缩呢?
为什么我们要将文件进行打包压缩呢?
打包最主要的目的就是防止我们在拷贝或者文件传输的时候文件丢失
。
不知大家有没有试过,我们在网上下载某个比较大的软件,下好之后我们启动它时,它显示某个文件缺失无法运行,你下载了几小时下了几千个文件,最后由于缺失某个文件文前功尽弃。这时,如果将文件全部打包在一起就不会有这个问题了。
压缩的目的也很简单
上千个文件打包成一个文件后体积往往会比较大(比如下个原神几十上百G),压缩的目的就是为了减少体积。
为什么要减少体积呢?
首先是下载下来比较节省本地的存储空间,到时在将其进行解压解包,相当于用时间换空间
其次,更重要的是减少体积可以有效的减少网络传输的时间。我们从网上下载东西,都是要通过网络传送的,而下载5G的东西很明显比下载10G的东西更快。
一款软件,体积更小,用户下载的速度越快,即用户使用这个软件的成本越低。一款软件,大家是选择用 1 分钟就能下完的还是选择 30 分钟才能下完的呢
在 Linux 中,可以把打包和压缩两个阶段分离出来,让用户能看到打包能看到压缩,但这时其指令选项会特别麻烦,因此我们学习打包压缩时,不对他们做明显区分。
在 Linux 中,打包压缩形成的压缩文件种类是非常多的,下面我们讲解 Linux 中最常用的两种打包压缩方案:「zip/unzip」与「tar」
4 「zip / unzip」指令
首先我们来确定一下当前系统是否安装了「zip」指令
zip --version
与 'unzip --version'
若未安装,输入指令:apt install -y zip unzip
(ubunto)、yum install -y zip unzip
(centos)
下面我们以打包压缩『lesson1』目录为例:
打包单个文件与打包目录方法一样,这里就不单独演示了。
打包方式很简单:指令如下
这里需要注意:用「zip」指令打包的压缩文件格式是『.zip』后缀。不是说 Linux 不区分文件后缀吗,为什么这里压缩文件要带后缀呢?Linux 系统是不区分文件后缀,但是不代表 gcc、g++、zip 这样的工具不区分文件后缀
回车执行命令后发现果然形成了对应的『lesson1.zip』(此时已将『lesosn1.zip』 移到一个新建目录下)。那怎么知道打包对不对呢?我们把他解压来看一看
解压也非常简单:
回车执行命令后,确实解压出了『 lesson1』,一切貌似都很正常。
但当我们「tree」一下『 lesson1』时,傻眼了。我们发现我们在打包压缩的时候竟然值打包压缩了一个空目录:
为什么它没有将目录里面的内容给打包呢?
如果我们今天打包压缩的是一个大文件,那么上述方法是对的;但是现在我们打包压缩的是一个目录,所以我们要带选项 「-r」 因为目录时递归式的
这样才是正确的
其解压方式与上述类似,这里就不再赘述了。
在 windows 系统中,我们解压往往都能解压到指定目录,那 Linux 可以吗?肯定是可以的
这里我们介绍「unzip」的 「-d」 选项:
如:将『lesson1』解压到根目录下
5「tar」命令
与「zip / unzip」指令一样,「tar」指令也是用来打包压缩的指令
「tar」命令的选项会比「zip / unzip」多一些。
我们依然是以打包『lesson1』目录为例
「tar」指令的打包压缩语法与「zip」指令类似,只是选项复杂了点
「tar」指令压缩的文件后缀名为 『.tgz』
回车执行命令后,我们看到生成了一个『lesson1.tgz』的压缩包
下面我们来进行解压:
解压的用选项由 「-czf」 改为 「-xzf」
「-x」 选项即解压的意思
这样『lesson1』就解压出来啦
「tar」命令与「zip」命令的区别是:「tar」命令再打包目录时不需要「-r」命令来递归,它默认全部给我们打包
。
如果我们想看打包或压缩的过程,我们可以加上「-v」
选项
同样,「tar」命令也可以将文件解压至指定路径下。相关选项是:「-C」
小结:虽然「tar」命令的选项很多,但是我们只需要记住 「czf」 和 「xzf」 就够用了,最多再记个「v」
与「C」
。
注:有些系统「tar」指令的选项不允许带 「-」,如果大家选项前带 「-」出现报错,可以尝试不带 「-」
6 文件互传
压缩包最大的意义就是进行文件传输,下面我们介绍不同系统间文件相互传输的方法
6.1 Linux 与 Windows 互传
6.1.1 Linux向Windows传输
Linux 向 Windows 传输文件的指令是:「sz」
注:系统未安装的可输入:yum install -y lrzsz (centos) / apt install -y lrzsz (centos)
安装
传输文件的方法很简单:例如我们现在要传『lesson1.zip』文件
回车后,系统会出现一个弹窗:询问要将『lesson1.zip』文件传输到 windows 系统下的什么位置
这里我们直接选择桌面
传输完成后,Windows 系统中就能收到『lesson1.zip』文件啦,我们可以在 Windows 下将其解压即可查看里面的文件。
6.1.2 Windows向Linux传输
Windows 向 Linux 传输文件的指令是:「rz」
这种传输也很简单,我们直接输入「rz」指令后,此时系统会弹一个弹窗
我们再在弹窗中选择要传输至 Linux 系统的文件,最后点击打开就自动传输啦。
最后我们再解压即可
如果小伙伴们觉得这样传输太麻烦的话,可以直接拖拽式
传输:直接把 Windows 系统中的文件拖进 Linux 中,也是可以的
6.2 Linux 与 Linux 互传
Linux 与 Linux 互传所需的命令是:「scp」
一般而言「scp」命令默认是装好的
其实「scp」命令和「cp」命令一模一样;只是「cp」是在同一台机器上进行拷贝,「scp」是在不同的机器上进行拷贝而已
传输格式如下:scp lesson4.tgz whb@8.137.19.140:/home/whb/code/113
7 「bc」指令
- 语法:「bc」 [选项] [计算任务的文件]
- 功能:进行算术操作精密运算的工具。「bc」命令也是一种支持任意精度的交互执行的计算器语言。
「bc」指令即一个简易的计算器
「bc」指令一般很少使用,但也有一些运用场景。比如你有些数据实在配置文件当中,现在要把配置文件中的所有数字进行求和计算,返回和。如果手动去敲太慢,写 C/C++ 文件还要写程序太麻烦,这时就可以将文件内容打出来,利用「bc」和 管道文件 进行快捷计算。
8 「uname -r」命令
在讲「uname -r」指令时,先问大家一个问题:怎么在 Linux 环境中查看你的 体系结构 和 系统内核版本?
8.1 认识内核版本
什么是 Linux 的内核版本呢?
Linux 内核版本是指 Linux 操作系统的核心组件——内核的特定发行版本。Linux 内核是操作系统的最底层部分,负责管理硬件、内存、进程间通信、设备驱动程序以及系统调用的核心功能。Linux 内核版本通过版本号来标识,这些版本号遵循一定的命名规则,以便用户和开发者了解内核的特性和发布状态。
Linux 内核版本号通常由三部分组成:主版本号
、次版本号
和修订号
,格式为“主版本号.次版本号.修订号”
我们简单来认识 Linux 系统的版本号:以 centos7 的内核版本为例
这里我们谈一下新老内核问题
一般在企业中,愿意使用新的内核还是使用老的内核呢?
企业里面一定不会用新内核。哪怕不是最新的而是相对比较新的企业都不会用
简单来说是因为新内核可能在效率上确实比老内核高一点(高不了多少),但 一个企业最看重的就是 稳定性(三天两天系统就崩,人家用你的产品才怪)。新内核可能有很多坑没被踩过,企业不敢随便使用;而老内核就不同了,该踩的坑都被踩完了,企业可以放心使用。
8.2 什么是体系结构
在传统意义上讲,所谓的体系结构问的其实是这台计算机用的芯片(CPU)是什么架构的。
CPU 的架构非常多,但最常见的其实就两三种:早些年的英特尔系列的 i386 或者更早的 8086;七八年前的 x86_64(x86_64 == x64);现在用的 AMD
在硬件层面,CPU无疑是最重要的;在软件层面,操作系统是最重要的
如:Windows 下的查看体系结构和操作系统版本
现在的笔记本电脑用到的体系结构最多的是 AMD 的,也有一些老的用英特尔的 x86_64(x64);台式机或服务器主要以英特尔系为主;手机上更多的使用 ARM 的。
不同芯片之间有很大的差别:工艺、背后的商业公司、自身指令集。Linux 操作系统能在笔记本、台式机、服务器上跑本质上是因为 Linux 操作系统里面有很多兼容性的代码,它在不同的平台下全部都实现了。如果去看 Linux 的源代码,会发现:它有一些公共的代码(调度、内存管理、文件系统等等);但与有些操作,如跟芯片有关的,它需要个性化地给每一种平台全部写好。所以编译内核时,它会先识别当前计算机所使用的芯片类型,将非该芯片的代码用条件编译的方式全面裁掉
,最终给我们现在所看到的代码。
8.3 如何查看体系结构和内核版本
查看内核版本我们可以用 「uname」 指令
选项:
9 几个常用快捷键
为什么 『ctrl + r』 可以搜索历史命令呢?这也意味着 Linux 会记录我们输入的指令 。怎么证明呢?我们可以可以通过 「history 」 指令来验证
10 「shutdown」 指令:关机
选项:
这里说一下:云服务器,永不关机,除非维护或者不用了。
为什么呢?因为云服务器未来是要部署自己写好的服务的。我们半夜为什么能刷B站,半夜能能逛淘宝,都是因为B站、淘宝的服务端一直在工作,所以我们一直能访问,所以互联网公司中的云服务器是永远不关机的。这也能体现出来 Linux 操作系统的强大,机器往往企业买回来连续运行个四五年才断电,一跑就是好几年,Windows系统是抗不住的。
11 扩展命令
好啦,本期关于基本指令的知识就介绍到这里啦,希望本期博客能对你有所帮助。同时,如果有错误的地方请多多指正,让我们在 Linux 的学习路上一起进步!