
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥
♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥
♥♥♥我们一起努力成为更好的自己~♥♥♥
♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥
♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥
✨✨✨✨✨✨
个人主页✨✨✨✨✨✨
在上一篇博客我们已经进行了部分基础指令的讲解,这一篇博客我们继续来看看Linux系统下的一些基础指令并且进行部分理论知识的输出,准备好了吗~我们发车去探索Linux的奥秘啦~🚗🚗🚗🚗🚗🚗
目录
基础指令😍
mv
tac
理论小课堂【程序日志】
more
less
head
tail
输出任意区间行内容
date
cal
which
find
whereis
alias
grep
文本编辑器nano
grep使用
查看系统进程的命令
ps ajx
top
使用场景
混合使用
打包压缩【理论小课堂】
1. 是什么?
2. 为什么?
打包压缩在不同操作系统间的应用
zip/unzip
rzsz
tar
bc
uname
热键😉
关机😎
重启😊
总结+操作系统理解😁
理解操作系统
基础指令😍
mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),经常用来备份文件或者目录~
语法: mv [选项] 源文件或目录(src) 目标文件或目录(dst)
功能:







常用选项:
- -f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!

tac
在对这个命令进行讲解前,我们先来回顾一下cat命令~
cat可以用来输出普通文件内容
- 常见选项:
- -b 对非空输出行编号【空行不进行编号】
- -n 对输出的所有行编号【空行也有内容('\\n')】
- -s 不输出多行空行【相邻空行压缩为一行】
使用示例:


tac
功能:直接行反向输出文件内容(先输出最后一行)~

常用选项(与cat有区别)
| 无选项 | 默认反向输出文件内容 | tac file.txt |
| -b 或 –before | 在分隔符前插入内容(默认行为,实际使用较少) | tac -b -s "分隔符" file.txt |
| -r 或 –regex | 将分隔符解释为正则表达式 | tac -r -s "正则表达式" file.txt |
| -s 或 –separator | 指定行分隔符(默认是换行符 \\n) | tac -s "," file.csv |
使用得不是很多,大家了解一下就可以了~
理论小课堂【程序日志】
我们知道cat命令可以输出我们的普通文件内容,我们一般使用cat进行小文件和配置文件内容的输出,但是如果是比较大的文件(比如程序日志)呢?如果使用cat命令输出文件内容,就会显得比较繁琐,所以也就有了我们接下来需要学习的命令~
程序日志是程序运行时自动记录的“运行日记”,像飞机的黑匣子一样,实时记录程序的操作、状态和事件。它告诉开发者程序做了什么(如用户点击按钮)、遇到了什么问题(如网络超时、数据错误),甚至能追踪黑客攻击。通过日志,可以快速定位崩溃原因、监控服务是否正常运行(比如网站是否卡顿),还能统计用户行为(如每天多少人访问)。日志会分等级(错误、警告、调试信息等),重要问题用醒目标记。合理管理日志(如定期清理、集中存储分析)能避免服务器存储爆满,同时让问题排查更高效。
more
语法:more [选项]
功能:more命令功能类似cat,分批显示文件内容
常用选项:
- -n 指定输出行数
- q 退出more
我们以/var/log/messages (root账户可以查看)(Linux 系统中记录系统级常规日志的核心文件)的为例:
![]()

按回车就可以向下更新

输入q就可以退出~
当然我们也可以指定行数显示

我们可以看到虽然可以向下更新内容,但是不能往前面翻阅,这样翻过了就比较麻烦~我们也就有了接下来的命令~
less
less工具也是对文件或其它输出进行分页显示的工具,是linux正统查看文件内容的工具,功能极其强大,less的用法比起more更加的有弹性,在more的时候,我们并没有办法向前面翻,只能往后面看向下更新,但若使用了less时,就可以使用[pageup] [pagedown]等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容,除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法:less [参数] 文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向下移动,却不能向上移动,less分页显示文件内容,可以前后翻,而且less在查看之前不会加载整个文件~
选项:
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关),找到下一个搜索到的字符串位置
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
为了效果更加明显,我们自己创建一个大文件:
命令行输入:
count=1; while [ $count -le 10000 ]; do echo "${count} hello xiaodu\\!" >> mylog.txt; count=$((count + 1)); done
命令解释:
用bash实现循环写入日志:初始化计数器count为1,当count小于等于10000时,将count值和"hello xiaodu!"追加到mylog.txt文件,然后count自增1。循环直至count大于10000结束,实现向文件写入10000行日志的功能。
使用cat就可以输出文件内容,可以发现这个文件还是很大的,有10000行,十分难翻~

使用less mylog.txt

显示一屏满就不再显示,使用[pageup] [pagedown]等按键的功能来往前往后翻看文件~还可以使用/xiaodu进行搜索,xiaodu就会高亮显示

按q就可以进行退出~
head
head与tail就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,而tail想当然尔就是看档案的结尾。
语法:head [参数]… [文件]…
功能:head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
选项:
- -n<行数> 显示的行数 (n可以省略)



tail
tail命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容.
语法:tail [必要参数] [文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。
常用查看日志文件~
选项:
- -f 循环读取
- -n<行数> 显示行数(n可以省略)



输出任意区间行内容
通过前面的学习,我们已经可以输出文件全部内容,头尾部分内容?那么如果我想输出任意区间行的内容应该怎么办呢?
我们需要使用管道符|,【管道符 | 】用于将前一个命令的输出作为后一个命令的输入~(后面会详细讲解)
我们来看看使用:

同时管道符可以连接任意数量的命令,形成复杂的命令序列~
例:
命令行输入:
head -5525 mylog.txt | tail -26 | tac | wc -l
命令解释:
该命令由head、tail、tac和wc四个Linux命令组成。先用head -5525从mylog.txt中提取前5525行,再用tail -26从这些行中选取最后26行。接着,tac命令将这些行顺序反转。最后,wc -l统计反转后的行数,由于tac只是改变行的顺序,不增减行数,所以结果恒为26。此命令组合可用于查看日志文件开头部分中的最后几行,并以相反顺序展示,有助于特定场景下的日志分析和调试。

date
指定年月日格式显示时间:date +%Y-%m-%d

用法:date [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 //设置当前时间,只有root权限才能设置,其他只能查看。
- date -s 20050521 //设置成 20050521,这样会把具体时间设置成空00:00:00
- date -s 01:01:01 //设置具体时间,不会对日期做更改
- date -s “01:01:01 2005-05-21” //这样可以设置全部时间
- date -s “01:01:01 20050521” //这样可以设置全部时间
- date -s “2005-05-21 01:01:01” //这样可以设置全部时间
- date -s “ 20050521 01:01:01” //这样可以设置全部时间
- 时间->时间戳:date +%s

- 时间戳->时间:date -d@17468699508 【也可以指定格式输出】



- Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

我们知道世界上不同地方是有时差的,我们处于东八区,我们会加上八个小时~
图片中的内容是关于Linux中的cal指令的说明:
cal
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
用法:cal [参数] [年份]
功能:用于查看日历等时间信息,使用cal [年份]的格式,查看年份,同时cal命令只支持1到9999之间的年份;使用cal [月份] [年份]的格式,查看年月~
常用选项:
- -3:显示系统前一个月,当前月,下一个月的月历
- -j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y:显示当前年份的日历
查看指定年:

查看指定年月:

显示系统前一个月,当前月,下一个月的月历:

显示系统当前年:

显示系统当前月:

which
功能: which命令可以用来查询某一个命令在哪一个路径下~

find
- Linux下find命令在目录结构中搜索文件,并执行指定的操作
- Linux下find命令提供了相当多的查找条件,功能很强大~由于find具有强大的功能,所以它的选项也很多,大家可以抽时间了解一下~
- 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限~
- 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)~
语法:find pathname -options
功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
常用选项
- -name ——按照文件名查找文件

-
-type [类型]——按文件类型过滤:f【普通文件】,d【目录】

- 其他选项大家可以通过大模型查询,这里就不一一赘述了~
whereis
功能:用于找到程序的源、二进制文件或手册

alias
功能:设置命令的别名
在上一篇博客,我们就介绍到了这个命令,我们来温故知新一下:


关于别名的删除:
第一种方法:直接关闭Xshell
第二种方法:alias 别名=‘ ’ 【把别名设置为空】
grep
语法:grep [选项] 搜寻字符串 文件
功能:在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i:忽略大小写的不同,所以大小写视为相同
- -n:输出对应行号
- -v:反向选择,即显示出没有 '搜寻字符串' 内容的那一行
文本编辑器nano
在正式讲解之前,我们先了解一个小工具nano,nano 是 Linux 和类 Unix 系统中的一款简单易用的文本编辑器,可以快速编辑文件~当然我们首先要安装这个小工具~
nano安装(root账户下安装)
Centos:yum install -y nano
Ubuntu:apt install -y nano
小编使用的是Ctenos版本:
![]()

安装成功,接下来就可以使用nano这个简单易用的文本编辑器了~
首先把mylog.txt的内容复制一份:
![]()
nano的使用:
nano filename # 打开或新建文件
常用快捷键:
| Ctrl+O | 保存文件(确认文件名后按 Enter) |
| Ctrl+X | 退出编辑器(若有未保存内容会提示保存) |
| Ctrl+K | 剪切当前行 |
| Ctrl+U | 粘贴剪切的行 |
| Ctrl+W | 搜索字符串 |
| Ctrl+C | 显示当前光标位置 |
| Ctrl+_ | 跳转到指定行号 |
| Ctrl+R | 从另一个文件插入内容 |
grep使用
实验:




查看系统进程的命令
ps ajx 和 top 是两个用于查看系统进程的命令,它们在功能和输出格式上有一些区别。
ps ajx
- 功能: ps 命令用于报告当前系统的进程状态。选项 ajx 组合提供了详细的进程信息~
- 输出: ps ajx 会输出一个静态的进程列表,包括进程ID (PID)、终端 (TTY)、累积CPU时间 (TIME)、命令名 (CMD) 等。这个命令提供了一次性的快照信息,适合用于脚本或需要保存输出的情况~
- a 选项显示终端上所有用户的进程。
- j 选项使用任务格式输出,包含更多详细信息。
- x 选项显示没有控制终端的进程。
top
-
功能: top 是一个动态实时视图工具,显示系统中各个进程的运行状态,它会定期更新显示,让用户实时监控系统的性能和资源使用情况~
-
输出: top 提供一个交互式界面,默认每隔几秒钟自动刷新一次(默认不退出,按q退出) 它显示的信息包括:
- 系统总体信息:如当前时间、系统运行时间、登录用户数、负载平均值。
- 进程信息:如进程ID (PID)、用户、优先级 (PR)、nice值 (NI)、虚拟内存 (VIRT)、常驻内存 (RES)、共享内存 (SHR)、状态 (S)、CPU使用率 (%CPU)、内存使用率 (%MEM)、累积CPU时间 (TIME+) 和命令名 (COMMAND)。
-
交互性: top 允许用户在运行时进行交互,比如排序进程、过滤特定进程、改变更新间隔、杀死进程等。
-
常用选项:
-d 选项可以指定刷新时间周期(单位秒)
-n 选项可以指定刷新次数,达到刷新次数就退出
使用场景
-
ps ajx: 适合需要获取一次性进程信息的情况,比如脚本中需要记录某一时刻的进程状态,或者需要详细分析某个特定进程的状态。
-
top: 适合实时监控系统性能,尤其是在需要观察系统资源动态变化、识别高资源消耗进程时非常有用。
混合使用
命令行输入:
ps ajx | grep 'sshd'

命令解释:
首先,ps ajx 命令以详细格式列出系统中所有正在运行的进程,包括那些没有控制终端的进程,提供了全面的进程状态信息。随后,通过管道【 | 】将 ps ajx 的输出传递给 grep 'sshd',grep 命令会在这些进程中搜索并仅显示包含 "sshd" 字符串的行。帮助我们快速定位与 SSH 服务相关的进程,如 SSH 守护进程,从而进行监控、调试或确保 SSH 服务正常运行。
补充:sshd 是 OpenSSH 守护进程的名称,通常用于提供 SSH 服务~通过这个命令可以查看所有与 sshd 相关的进程信息~
打包压缩【理论小课堂】
1. 是什么?
打包压缩是把文件数据进行归档,形成一个文件的过程。简单来说,就是将多个文件或文件夹整合成一个单独的文件,这个文件通常具有更小的体积,方便存储和传输。
2. 为什么?
- 网络发送方便:将多个文件打包成一个文件后,在网络传输时只需要传输一个文件,相比传输多个分散的文件,操作更加简便。
- 节省磁盘空间:通过压缩技术,可以减少文件占用的磁盘空间。例如,一些文本文件、图像文件等在压缩后体积会明显变小。
- 体积小,网络传送的速度快:由于压缩后的文件体积变小,在网络传输时所需的时间会减少,传输速度相应提高。
打包压缩在不同操作系统间的应用
- 获取到我的windows本地:将打包压缩后的文件传输到Windows本地系统中
- Linux <-> windows :打包压缩的文件可以在Linux和Windows操作系统之间进行传输和交互~
- Linux <-> Linux:Linux系统之间也可以方便地进行打包压缩文件的传输和共享~
zip/unzip

没有找到命令,我们首先就需要进行安装
安装工具(root账户):zip/unzip
Centos:yum install -y zip unzip
Ubuntu: apt install -y zip unzip
![]()

安装成功~
接下来我们就可以进行使用了~
zip语法:
zip 压缩文件.zip 目录或文件
【 zip 压缩的文件dst 需要压缩的文件src 】
功能:
将目录或文件压缩成zip格式
常用选项 -r选项——递归处理,将指定目录下的所有文件和子目录一并打包压缩处理~
打包压缩大文件:

打包目录+文件:
首先我们把原来创建的目录和文件移动到一个新建目录下


需要加-r选项——递归处理,将指定目录下的所有文件和子目录一并打包压缩处理~

默认解压到当前路径下,我们也可以指定解压的位置:

rzsz
rzsz是Linux下基于ZMODEM协议的文件传输工具,包含 rz(接收文件)和 sz(发送文件)两个命令,支持通过终端(如Xshell)与本地(如Windows)交互文件~
安装工具(root账户):rzsz
Centos:yum install -y lrzsz
Ubuntu: apt install -y lrzsz

当然也可以进行直接拖拽~
这些也就体现了打包压缩在不同操作系统间的应用
- 获取到我的windows本地:将打包压缩后的文件传输到Windows本地系统中
- Linux <-> windows :打包压缩的文件可以在Linux和Windows操作系统之间进行传输和交互
tar
tar命令可以将多个文件或目录打包成一个单独的归档文件(.tar),并支持结合压缩算法(如 gzip、bzip2 等)进一步减小文件体积~功能也就是打包和解包~
核心功能:
常用选项
| -c | 创建新归档(Create) |
| -x | 解压归档(eXtract) |
| -t | 列出归档内容(Table) |
| -v | 显示操作过程(Verbose) |
| -f | 指定归档文件名(File,必须紧接文件名) |
| -z | 使用 gzip 压缩/解压(生成 .tar.gz) |
| -j | 使用 bzip2 压缩/解压(生成 .tar.bz2) |
| -J | 使用 xz 压缩/解压(生成 .tar.xz) |
| -C | 解压到指定目录(Change directory) |
| –exclude | 排除特定文件/目录 |
常用命令模板
-
打包并压缩: tar -czvf 压缩包名.tar.gz 目标文件/目录 (-z 对应 gzip,-j 替换为 bzip2,-J 替换为 xz)

-
解压: tar -xzvf 压缩包名.tar.gz (默认解压到当前目录,加 -C /目标路径 指定目录)

-
查看内容: tar -tvf 压缩包名.tar.gz

关键提示:
- 选项 -f 必须紧跟文件名(如 tar -czvf file.tar.gz dir)
- 压缩效率:xz > bzip2 > gzip,但速度反之
- tar.gz只是文件后缀,可以进行简写
bc
bc是Linux里的终端计算器,能算加减乘除、平方根,还能处理小数(比如设置保留几位小数)。支持循环、条件判断,甚至进制转换(如十进制转十六进制)。用-l选项能调用高级数学函数,-q可以安静启动不显示提示。适合快速算数或写脚本时做复杂计算。

联合使用:

命令解释:
echo "1+2*2-3" | bc
使用echo输出数学表达式1+2*2-3,通过管道符|将其传递给bc命令行计算器,bc计算表达式结果,遵循运算优先级,先乘法后加减,最终得出结果2并显示在终端~
uname
语法:uname [选项]
功能:uname用来获取电脑和操作系统的相关信息(硬件方面)~
uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息
常用选项: -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

补充:lsb_release -a,可以在 Linux 系统中用于查询操作系统版本的命令(软件方面)

热键😉
Linux热键是键盘上的快捷组合键,能快速操作系统~
》[Tab]按键——具有『命令补全』和『档案补齐』的功能【一次不行就多次】
》[Ctrl]+c按键——让当前的程序『停掉』,也就是强制停止当前程序 》[Ctrl]+d按键——通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外它可以用来取代exit~
》[Ctrl]+r按键——Ctrl+r是终端反向搜索热键,按下后输入关键词可快速检索历史命令(按时间倒序匹配),支持多次按Ctrl+R切换结果,找到目标命令后回车执行或编辑~![]()
》!+命令字符——执行最近以命令字符开头的历史命令
我们可以看到历史命令可以被检索,说明我们的历史命令是被记录下来的,我们可以命令行输入【history】得到最近的历史命令——一般记录1000条最近历史命令
关机😎
语法:shutdown [选项]
常见选项:
- -h:将系统的服务停掉后,立即关机。
- -r:在将系统的服务停掉之后就重新启动
- -t sec:-t 后面加秒数,亦即『过几秒后关机』的意思
重启😊
reboot
- 直接输入reboot并执行,系统会立即开始重启过程~该命令通常需要root权限,普通用户使用时可能需要通过sudo提升权限,如sudo reboot。
总结+操作系统理解😁
到这里,Linux基础指令博客部分就结束了,当然Linux指令肯定不止于此,后面在使用过程中,我们可以学习到更多的命令~
通过前面的使用,我们来仔细看看命令行:

命令的本质其实就是Linux系统中指定目录下的可执行文件~
理解操作系统
狭义上的操作系统就是内核,而广义上的操作系统=内核+外壳程序(也包括系统上默认安装的某些软件)
画图理解:

shell外壳程序也就是命令行解释器,命令行解释器(command Interpreter)作用主要包含: ● 将使用者的命令翻译给核心(kernel)处理~ ● 同时,将核心的处理结果翻译给使用者~
那么为什么要多一层外壳程序呢?
外壳程序的作用: 1. 保护操作系统! 2. 方便用户操作,减少用户使用操作系统的使用成本~
外壳程序怎么工作?【简述:外壳程序一般会创建子进程去解释执行命令】
命令行读取:Shell程序首先从用户那里读取输入的命令行。用户在终端中输入命令,Shell等待用户完成输入并按下回车键。
命令解析:一旦命令被输入,Shell会解析命令行,将其分解成可执行的部分。这包括识别命令本身、选项、参数以及重定向和管道等特殊符号。
命令执行:
- 内置命令:如果输入的命令是Shell的内置命令(如cd、echo等),Shell会直接执行这些命令。
- 外部程序:如果命令是可执行程序(如ls、gcc等),Shell会在系统的PATH环境变量指定的目录中查找该程序,并启动一个新的进程来执行它。
- 脚本执行:如果输入的是一个脚本文件,Shell会读取脚本内容,逐行解释并执行其中的命令。
输入/输出重定向和管道:Shell处理输入/输出重定向(如>、<)和管道(|),将一个命令的输出作为另一个命令的输入,实现复杂的数据流处理。
环境管理:Shell维护一个环境,其中包括变量、别名、函数等。这些可以在命令执行过程中被引用和修改。
结果返回:执行完命令后,Shell会捕获命令的退出状态(通常是一个整数值,0表示成功,非0表示失败),并根据需要将其返回给用户或用于后续的条件判断。
交互循环:Shell在执行完一个命令后,会返回到命令读取状态,等待用户的下一个输入,形成一个交互循环。
很多专业术语在后面我们会学习到,这里简单了解一下就可以了~
计算机操作系统层次结构示意图:

从上到下分为四个主要层次:用户、操作系统、驱动程序和底层硬件。
》什么是操作系统?
操作系统是一款进行软硬件资源管理的软件! 》为什么有操作系统? 通过对下做好软硬件的管理工作(手段),操作系统对上给用户提供一个良好【稳定 高效 安全】的运行环境(目的)
♥♥♥本篇博客内容结束,期待与各位优秀程序员交流,有什么问题请私信♥♥♥
♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥
✨✨✨✨✨✨个人主页✨✨✨✨✨✨





