zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【Linux操作系统】常用指令(三)

2023-02-25 18:20:12 时间

目录

0.Linux根目录下的文件介绍

1.打印日历 cal

2.查找指定文件 find

3.行过滤工具 grep

3-1热键第二弹

3-2 拓展[正则表达式]:

3-3 grep的使用

4.压缩 zip与打包tar

4-1 压缩zip

4-2 打包tar

打包和压缩的区别

5.计算器 bc

6.查看系统的命令 uname


0.Linux根目录下的文件介绍

首先cd /进到根目录下,ls列出当前文件夹下所有文件:

  • /
  • root,存放root用户的相关文件
  • home,存放普通用户的相关文件
  • bin,存放常用命令的目录,如vi,su
  • sbin,要具有一定权限才可以使用命令
  • mnt,默认挂载光驱和软驱的目录
  • etc,存放配置的相关文件
  • var,存放经常变化的文件,如网络连接的sock文件 、日志
  • boot,存放引导系统启动的相关文件
  • usr,安装一个软件的默认目录,相当于windows下的program files
  • proc,这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
  • srv ,service缩写。该目录存放一些服务启动之后需要提取的数据
  • sys,这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统
  • tmp,这个目录是用来存放一些临时文件的
  • del,类似于windows的设备管理器,把所有的硬件用文件的形式存储
  • media,系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。
  • opt,这是给主机额外安装软件所摆放,如安装oracle数据库就可放到该目录下默认为空。

1.打印日历 cal

全称? :calender

作用:通过特定的选项,查看特定的年和月的信息

 1.打印当前年当前月的日历
 模板:cal
 ​
 2.打印某一年12个月的日历:
 模板:cal 年份
 例子:cal 2022
 ​
 3.打印当前年上个月,这个月,下个月的日历
 模板:cal -3

更多信息:

2.查找指定文件 find

基本的认识:我们在Linux中使用的指令,程序,工具其实也是c/c++等语言写的,也是文件。

  • 如果我们要查找一条指令,我们可以使用which + 指令
  • 如果我们要查找一个文件,我们可以使用find命令

模板:  find  路径  选项[查找的标准:按文件名,创建时间等]   参照的信息 例子:  find  ~  -name  test.c (从家目录开始递归查找所有test.c文件,打印出从家目录开始的相对路径)

 查看某路径下,某文件的位置
 模板:find 路径 -name 文件名
 例子:find . -name test.c

当前文件结构下,比如我要在当前路径,查找test.c文件:

3.行过滤工具 grep

基本认识:文本三剑客

  • grep 过滤行内容。
  • awk 过滤字段。
  • sed 过滤行内容;修改行内容。

3-1热键第二弹

热键:经常被使用的键

续第一弹热键,借此行过滤工具的章节,我们今天再来给大家增加几个热键:

  1. ctrl+r :通过ctrl+r,然后输入历史命令的部分片段,就可以从历史命令中过滤出相匹配的命令。
  2. tab :当我们只记得命令的前几个字母,后面的字母想不起来的时候,就可以输入记得的前几个字母,然后按下两次tab键,就可以从所有命令中检索出所有已知字符开头的命令。

上面的热键我之所以在这里给大家讲是因为这里的两个热键和我们行过滤工具grep的功能是类似的,好好体会一下吧~~

3-2 拓展[正则表达式]:

需求:有时候我们可能会想在一篇文章中找到所有的邮箱或者前后端手机号码校验的过程中看看用户输入的手机号码符不符合第一个数字为1,总共11位数,我们这时候就会用到正则表达式。 定义:正则表达式又叫做规则表达式,是一种文本过滤模式,通过一些规则来过滤文本,从而匹配出我们需要的文本信息。(想一想爬虫) 全称:规则表达式(Regular Expression),通常叫做regex或RE. 更多关于正则表达式的一些知识(比如元字符之类的)参照: [https://www.ydlclass.com/doc21xnv/javase/regex/#%E4%B8%80%E3%80%81%E5%85%83%E5%AD%97%E7%AC%A6]   正则表达式

3-3 grep的使用

全称:全局规则表达式打印(Global Regular Expression Print)

还记得我们之前通过shell脚本写入file.txt文件中的hello 0到hello 1000的文本内容吗?假如我打印file.txt中所有带hello 99的文本行,我这个时候就可以grep 'hello 99' file.txt过滤出所有带'hello 99'的文本行。

于此同时,我们还可以带上更多的选项来完成我们更准确的需求:

 1.(正向匹配)匹配file.txt中所有带'hello 99'的文本行:
 例子:grep 'hello 99' file.txt
 管道版本:cat file.txt | grep 'hello 99'
 ​
 2.(反向匹配-v)匹配file.txt中所有不带'hello 99'的文本行:
 例子:cat file.txt | grep -v 'hello 99'
 ​
 3.(大小写忽略-i)大小写忽略匹配file.txt中所有带'hello 99'的文本行:
 cat file.txt | grep -i 'hello 99'

4.正则表达式的区间写法: 正则提供一个元字符中括号 [] 来表示区间条件。

限定0到9 可以写成[0-9],如果数字不是连续的,比如限定139,可以写成[139]

限定A-Z 写成[A-Z]

限定某些数字 [165] 例子:'hello 990'到'hello 999'的文本行就可以用正则表达式表示为:hello 99[0-9]

 4.(区间过滤 [0-9])区间过滤出'hello 990'到'hello 999'的文本行
 例子:cat file.txt | grep 'hello 99[0-9]'

4.压缩 zip与打包tar

Linux中的压缩和打包命令灰常多,我们这里就给大家讲一下zip和tar

4-1 压缩zip

 1.压缩普通文件
 模板:zip  压缩的目标文件  压缩的源文件
 例子:zip code.zip file.txt
 2.压缩目录
 模板:zip -r 目标文件 源文件
 例子:zip -r dir.zip dir.zip

ps:如果你不带-r压缩目录,就会只压缩空目录,解压后自然也就只能得到空目录. 肯定的,你是想压缩目录里面的内容,而非空目录,所以带上-r选项就可以讲目录里面的内容一起压缩. 这个可以下来自己验证一下.

 3.解压普通文件/目录到当前文件夹(默认解压到当前文件夹)
 模板:unzip 要解压的压缩文件
 例子:unzip dir.zip
4.解压普通文件/目录到指定文件夹(解压到指定目录)
 模板:unzip 要解压的压缩文件  -d 路径
 例子:unzip dir.zip ~

下面给大家展示一下默认和指定解压的命令对比:

4-2 打包tar

问题:到这里有人会问:有了zip命令为什么还要有tar的压缩命令?

解答:我通过查阅资料了解到,有些Linux不支持直接zip压缩,而是要通过tar再gz形成压缩文件,这也就是为什么偶尔能看到.tar.gz的压缩文件了,总结来说,就是因为这个文件是经历了打包再压缩的过程.

tar格式(该格式仅仅打包,不压缩,理解)

打包:tar -cvf [目标文件名].tar [原文件名/目录名]

解包:tar -xvf [原文件名].tar

注:c参数代表create(创建),x参数代表extract(提取,解包),v参数代表verbose(打包的详细信息),f参数代表filename(文件名),所以f后必须接文件名。

tar.gz格式

方式一:利用前面已经打包好的tar文件,直接用压缩命令。(理解)

压缩:gzip [原文件名].tar

解压:gunzip [原文件名].tar.gz

注: g unzip ==gunzip

方式二:一次性打包并压缩、解压并解包(重要,推荐)

打包并压缩: tar -czvf [目标文件名].tar.gz [原文件名/目录名]

解压并解包: tar -xzvf [原文件名].tar.gz

注:1. z代表用gzip算法来压缩/解压

2..tar.gz可以缩略的写成后缀.tgz

如果你想要再方式二(推荐)一气呵成打包和压缩的过程,且想要将解压后的文件解压并解包到指定目录,我们可以使用-C选项.(C一定是大写哦)

打包和压缩的区别

打包:把东西装在一起,资源的空间并没有减少,防止东西丢失 (tar) 压缩:压缩了资源的空间(直接zip或先tar再gzip)

5.计算器 bc

 1.通过bc命令打开计算器完成简单运算
 bc

全称: Binary Caculator

与管道相结合:

 2.通过管道使用计算器:
 echo '1+2+3' | bc

6.查看系统的命令 uname

 作用:打印系统命令
 uname 选项
 选项:
 1.-a 所有系统信息
 ​
 2.-s 内核名称
 ​
 3.-r 内核版本
 ​
 3.-n  网络节点主机名
 ​
 4.-m 机器名称