🚩纸上得来终觉浅, 绝知此事要躬行。
🌟主页: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中,>>
是用于将输出追加到已存在的文件中的重定向符号。它不会覆盖现有文件的内容,而是将新内容添加到文件的末尾。
这里补充一下
cat
选项的具体使用(按照上面的内容为例):
-b
对非空输出行编号
-n
对输出的所有行编号
-s
不输出多行空行
tac
是cat
的倒序版。
-
<
输入重定向
这里运用cat
指令来帮助理解它的作用。对于cat
指令,用户输入什么,它就会对应打印什么,这说明cat
默认读取键盘文件,然后向显示器输出。我们可以运用输入重定向使得cat
去读取其它文件。
⌛️ 一些常见指令
✉️ 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),如有参数后面跟两个值,则表示月份和年份,如果参数后面没有值,则显示本月日历。
📗一些常用的选项:
-1
显示一个月的月历。-3
显示系统前一个月,当前月,下一个月的月历。-s
显示星期天为一个星期的第一天,默认的格式。-m
显示星期一为一个星期的第一天。-j
显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)。-y
显示当前年份的日历。
✉️ find 指令
- 语法:
find [路径] [选项] [操作]
功能:在指定目录下查找文件和目录。可以根据文件名、类别、时间、大小、权限等不同资讯的组合来查找文件。
说明:[路径] 表示要搜索的目录路径,[选项] 是可选的搜索条件或限制,[操作] 是在找到文件后可以执行的操作。
📙Linux下find
命令提供了相当多的查找条件,功能很强大。即使系统中含有网络文件系统( NFS),只要具有相应的权限,find
命令在该文件系统中同样有效。
对于它的功能具体来说,find
命令可以根据给定的规则在指定的路径下搜索文件,并且可以应用不同的选项来过滤搜索结果。例如,使用-name
选项可以按照文件名进行搜索,-mtime
选项可以按照文件的修改时间进行搜索。
✉️ whereis 指令
语法:whereis [选项][文件名]
功能:用于查找二进制文件、源代码和帮助文档的位置。
对于find指令
和whereis指令
,如果搜索的文件带着通配符,例如:stdio.* ,这意味着寻找的文件后缀没有要求。
📗一些常用的选项:
-b
搜索文件的二进制部分。-m
搜索文件的手册部分。-s
搜索文件的源部分。
✉️ grep 指令
- 语法:
grep [选项] pattern [file...]
功能:在文件中搜索匹配某个模式的行。
说明:pattern
是要搜索的模式,可以是简单的字符串或使用正则表达式来描述更复杂的模式。file
是要搜索的文件列表,可以是多个文件名,用空格分隔。如果未指定file,则默认会搜索标准输入。
为了更好地展示它的功能,先使用nano
向一个test.txt文件中写入一些内容。
在test.txt中查找有‘A’的行:
📗一些常用的选项:
-i
忽略大小写的不同,所以大小写视为相同。
-n
显示行号。在输出中显示匹配行的行号。
-v
反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行。
📗 grep
指令不但可以通过管道查看日志的一些错误信息,而且也可以配合sort
,uniq
等指令满足一些需求(例如:查看有多少ip访问过机器)
sort
功能:用于对文本文件进行排序。
💡可以按照同一套规则,把相同的内容放在一起。
uniq
用于去除文件中的重复行(相邻的行如果重复,就只保留一行)。
结合起来,通过sort 文件名 | uniq -c
就可以对test.txt文件中的内容进行排序,去除重复行并统计每行的出现次数。
🔭 打包压缩和解压解包
在Linux中,打包压缩是一种常见的文件管理技术,用于将多个文件和目录合并成一个单独的文件,并使用压缩算法可选择地进行压缩。这样做有很多优点:
- 方便管理:将多个文件和目录打包成一个文件,可以方便地对其进行备份、传输和存储,同时也可以避免在文件系统中出现大量的文件和目录,从而简化文件管理。
- 节省存储空间:通过将多个文件和目录打包并压缩,可以大大减少存储空间的使用。特别是在网络传输时,压缩文件可以减小传输的数据量,提高传输效率。
- 保护文件安全:打包压缩可以保护文件的安全性。例如,当一个重要文件被压缩成一个单独的文件时,即使其他文件被恶意修改或删除,这个重要文件也不会受到影响。
这里着重说明一下zip
和tar
的打包压缩格式。
✉️ zip/unzip 指令
- 语法:
zip [选项] 压缩文件名.zip 目录或文件
功能:将目录或文件压缩成zip格式。
通过选项-r
可以递归处理,将指定目录下的所有文件和子目录一并处理。
如果我们想解压到tree目录下,可以先将node.zip剪切到tree目录下,通过unzip node.zip
就可以实现。
也可以不去剪切,通过选项-d
直接将压缩包解压到test
目录。
✉️ 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
。
❤️ 结语
文章到这里就结束了,如果对你有帮助,你的点赞将会是我的最大动力,如果大家有什么问题或者不同的见解,欢迎大家的留言~