【Linux】从零开始学习Linux基本指令(三)

纸上得来终觉浅, 绝知此事要躬行。
主页:June-Frost
专栏:Linux入门

该文章主要了解Linux操作系统下的基本指令。

⚡️该篇为Linux指令部分的终章,如果您想了解前两篇文章的内容,可以在阅读本文后点击【Linux】从零开始学习Linux基本指令(一) 和 【Linux】从零开始学习Linux基本指令(二)了解更多。

目录:

  • ⌛️ 从文件角度理解Linux
  • ⏳输入/输出重定向
  • ⌛️ 一些常见指令
    • ✉️ date 指令
    • ✉️ cal 指令
    • ✉️ find 指令
    • ✉️ whereis 指令
    • ✉️ grep 指令
    • ✉️ zip/unzip 指令
    • ✉️ tar 指令
  • ❤️ 结语

⌛️ 从文件角度理解Linux

重要设计思想——在Linux系统下一切皆为文件。系统的所有组件和资源,包括硬件设备、配置信息、数据等,都可以被视为文件。这种思想源自于Unix操作系统,而Linux作为Unix的开源版本,继承了这一设计思想。
 在Linux系统中,硬件设备也被抽象为文件来管理。每个设备都有对应的设备文件,例如硬盘、光驱、网卡等。用户可以通过打开和读取这些设备文件来访问硬件设备,例如使用命令行工具来读取或写入硬盘中的数据。此外,Linux系统中的配置信息也以文件的形式存储。例如,网络配置、系统环境变量、服务配置等都存储在各种配置文件中。这些配置文件可以被编辑和修改,以适应不同用户和系统的需求。对于用户数据,Linux系统也将其视为文件进行处理。每个用户都有自己的主目录,其中包含了用户的配置文件、文档、图片等数据。用户可以通过文件操作来访问、修改和删除这些数据。
 这种设计使得系统非常灵活和可配置,用户可以轻松地管理和访问系统中的各种资源。这种设计也使得Linux成为一个非常强大和稳定的操作系统,适合用于各种不同的应用场景。


⏳输入/输出重定向

  • > 输出重新向

echo 指令可以输出指定的字符串或变量值到标准输出设备(显示器),由于Linux系统下一切皆为文件,所以echo 可以看作默认向显示器文件写入,通过输出重定向,就可以将命令的输出结果从标准输出设备(显示器)重定向到其他设备或文件中。

【Linux】从零开始学习Linux基本指令(三)_第1张图片

> 有两个特点:

  1. > 右边的文件如果没有创建,那么系统会尝试创建一个新的文件。通过这个特性,我们就可以建造一个空文件。

【Linux】从零开始学习Linux基本指令(三)_第2张图片

  1. > 右边如果文件已经存在,那么它会被清空,并且新的输出会被写入到这个文件中。当然,如果没有内容就只清空文件。

【Linux】从零开始学习Linux基本指令(三)_第3张图片

> 会清空目标文件,而在Linux中,>>是用于将输出追加到已存在的文件中的重定向符号。它不会覆盖现有文件的内容,而是将新内容添加到文件的末尾。

【Linux】从零开始学习Linux基本指令(三)_第4张图片

这里补充一下 cat 选项的具体使用(按照上面的内容为例):

  • -b 对非空输出行编号
    【Linux】从零开始学习Linux基本指令(三)_第5张图片

  • -n 对输出的所有行编号
    【Linux】从零开始学习Linux基本指令(三)_第6张图片

  • -s 不输出多行空行
    【Linux】从零开始学习Linux基本指令(三)_第7张图片

taccat 的倒序版。
【Linux】从零开始学习Linux基本指令(三)_第8张图片

  • < 输入重定向

 这里运用cat指令来帮助理解它的作用。对于cat指令,用户输入什么,它就会对应打印什么,这说明cat 默认读取键盘文件,然后向显示器输出。我们可以运用输入重定向使得cat去读取其它文件。

【Linux】从零开始学习Linux基本指令(三)_第9张图片


⌛️ 一些常见指令

✉️ date 指令

  • 语法date [OPTION]... [+FORMAT]
    功能:用于获取和操作日期和时间。

 其中,OPTION是可选的参数,FORMAT是用于指定日期和时间输出的格式。

 但是这种方式还是不太直观,所以我们可以将其格式化

格式化的一些选项:

  • %H : 小时(00…23)
  • %M : 分钟(00…59)
  • %S : 秒(00…61)
  • %X : 相当于 %H:%M:%S
  • %d : 日 (01…31)
  • %m : 月份 (01…12)
  • %Y : 完整年份 (0000…9999)
  • %F : 相当于 %Y-%m-%d

 通过date +%s , 可以查看当前的时间戳。(Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。在计算机科学和数据领域中,时间戳被广泛用于记录事件发生的时间,以便进行事件溯源、数据同步和时间排序等操作。)

 通过date -d @时间戳 就可以实现时间戳转化时间

在这里插入图片描述

谈一谈时间的重要性:

 在软件开发中,日志是一个非常重要的工具,它为开发人员和维护人员提供了应用程序运行时的信息,帮助他们跟踪和诊断问题,提高应用程序的可靠性和可维护性。在日志中很常见的两种时间就是刚才提到的时间戳日期时间。日期时间的可读性强,以人类可读的形式表示时间,可以直接查看和阅读。而时间戳是递增的,它具有唯一性,可以进行范围查找


✉️ cal 指令

  • 语法cal [参数][月份][年份]
    功能:显示公历(阳历)日历。它主要用于查看日历等时间信息。如果参数后面跟一个值,则表示年份(1-9999),如有参数后面跟两个值,则表示月份和年份,如果参数后面没有值,则显示本月日历。

【Linux】从零开始学习Linux基本指令(三)_第10张图片

一些常用的选项:

  • -1 显示一个月的月历。
  • -3 显示系统前一个月,当前月,下一个月的月历。
  • -s 显示星期天为一个星期的第一天,默认的格式。
  • -m 显示星期一为一个星期的第一天。
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)。
  • -y 显示当前年份的日历。

✉️ find 指令

  • 语法find [路径] [选项] [操作]
    功能:在指定目录下查找文件和目录。可以根据文件名、类别、时间、大小、权限等不同资讯的组合来查找文件。
    说明:[路径] 表示要搜索的目录路径,[选项] 是可选的搜索条件或限制,[操作] 是在找到文件后可以执行的操作。

Linux下find命令提供了相当多的查找条件,功能很强大。即使系统中含有网络文件系统( NFS),只要具有相应的权限,find命令在该文件系统中同样有效。
 对于它的功能具体来说,find命令可以根据给定的规则在指定的路径下搜索文件,并且可以应用不同的选项来过滤搜索结果。例如,使用-name选项可以按照文件名进行搜索,-mtime选项可以按照文件的修改时间进行搜索。

【Linux】从零开始学习Linux基本指令(三)_第11张图片


✉️ whereis 指令

语法whereis [选项][文件名]
功能:用于查找二进制文件、源代码和帮助文档的位置。

【Linux】从零开始学习Linux基本指令(三)_第12张图片

 对于find指令whereis指令,如果搜索的文件带着通配符,例如:stdio.* ,这意味着寻找的文件后缀没有要求。

一些常用的选项:

  • -b 搜索文件的二进制部分。
  • -m 搜索文件的手册部分。
  • -s 搜索文件的源部分。

✉️ grep 指令

  • 语法grep [选项] pattern [file...]
    功能:在文件中搜索匹配某个模式的行。
    说明pattern是要搜索的模式,可以是简单的字符串或使用正则表达式来描述更复杂的模式。file是要搜索的文件列表,可以是多个文件名,用空格分隔。如果未指定file,则默认会搜索标准输入。

 为了更好地展示它的功能,先使用nano向一个test.txt文件中写入一些内容。
test.txt中查找有‘A’的行:

【Linux】从零开始学习Linux基本指令(三)_第13张图片

一些常用的选项:

  • -i 忽略大小写的不同,所以大小写视为相同。
    【Linux】从零开始学习Linux基本指令(三)_第14张图片
  • -n 显示行号。在输出中显示匹配行的行号。
    【Linux】从零开始学习Linux基本指令(三)_第15张图片
  • -v 反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行。
    【Linux】从零开始学习Linux基本指令(三)_第16张图片

grep指令不但可以通过管道查看日志的一些错误信息,而且也可以配合sortuniq等指令满足一些需求(例如:查看有多少ip访问过机器)

  • sort功能:用于对文本文件进行排序。

【Linux】从零开始学习Linux基本指令(三)_第17张图片

 可以按照同一套规则,把相同的内容放在一起。

  • uniq 用于去除文件中的重复行(相邻的行如果重复,就只保留一行)。

【Linux】从零开始学习Linux基本指令(三)_第18张图片

 结合起来,通过sort 文件名 | uniq -c 就可以对test.txt文件中的内容进行排序,去除重复行并统计每行的出现次数。


打包压缩和解压解包

 在Linux中,打包压缩是一种常见的文件管理技术,用于将多个文件和目录合并成一个单独的文件,并使用压缩算法可选择地进行压缩。这样做有很多优点:

  • 方便管理:将多个文件和目录打包成一个文件,可以方便地对其进行备份、传输和存储,同时也可以避免在文件系统中出现大量的文件和目录,从而简化文件管理。
  • 节省存储空间:通过将多个文件和目录打包并压缩,可以大大减少存储空间的使用。特别是在网络传输时,压缩文件可以减小传输的数据量,提高传输效率。
  • 保护文件安全:打包压缩可以保护文件的安全性。例如,当一个重要文件被压缩成一个单独的文件时,即使其他文件被恶意修改或删除,这个重要文件也不会受到影响。

 这里着重说明一下ziptar的打包压缩格式。

✉️ zip/unzip 指令

  • 语法zip [选项] 压缩文件名.zip 目录或文件
    功能:将目录或文件压缩成zip格式。

 通过选项-r可以递归处理,将指定目录下的所有文件和子目录一并处理。

【Linux】从零开始学习Linux基本指令(三)_第19张图片

 如果我们想解压到tree目录下,可以先将node.zip剪切到tree目录下,通过unzip node.zip 就可以实现。

【Linux】从零开始学习Linux基本指令(三)_第20张图片

 也可以不去剪切,通过选项-d 直接将压缩包解压到test目录。

【Linux】从零开始学习Linux基本指令(三)_第21张图片


✉️ tar 指令

语法tar [选项] [文件名]...
功能:将多个文件和目录打包成一个文件,称为归档文件或tar文件,同时也可以将归档文件中的文件解压缩出来。

一些常用的选项:

-c 建立一个压缩文件的参数指令(create 的意思);
-x 解开一个压缩文件的参数指令!
-t 查看 tarfile 里面的文件!
-z 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f 使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C 解压到指定目录。

 该指令和zip类似,如果要打包压缩一个目录,就使用指令 tar -czf 文件名.tgz 文件名 。如果要解压(前面提到的先使用mv的那种),就使用tar -xzf 文件名.tgz。如果是直接将压缩包解压到其他目录,就需要使用tar -xzf 压缩包 -C 指定目录
 如果想看到打包的过程,可以在选项中加入 -v


❤️ 结语

 文章到这里就结束了,如果对你有帮助,你的点赞将会是我的最大动力,如果大家有什么问题或者不同的见解,欢迎大家的留言~

你可能感兴趣的:(Linux入门,linux,学习,运维)