♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥
♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥
♥♥♥我们一起努力成为更好的自己~♥♥♥
♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥
♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥
✨✨✨✨✨✨ 个人主页✨✨✨✨✨✨
在上一篇博客我们已经进行了部分基础指令的讲解,这一篇博客我们继续来看看Linux系统下的一些基础指令并且进行部分理论知识的输出,准备好了吗~我们发车去探索Linux的奥秘啦~🚗🚗🚗🚗🚗🚗
目录
基础指令
mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),经常用来备份文件或者目录~
语法:
mv [选项] 源文件或目录(src) 目标文件或目录(dst)
功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中~
- 当第二个参数类型是当前路径不存在的文件/目录时,mv命令完成文件/目录重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名~
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至(剪切)目标目录中~
常用选项:
-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的午夜)开始所经过的秒数,不考虑闰秒
- 时间->时间戳:date +%s
我们知道世界上不同地方是有时差的,我们处于东八区,我们会加上八个小时~
图片中的内容是关于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 等)进一步减小文件体积~功能也就是打包和解包~
核心功能:
- 归档(打包):将多个文件/目录合并为一个
.tar
文件~ - 解压(拆包):从
.tar
文件中提取内容 - 查看内容:列出归档中的文件列表(不解压)
- 组合压缩:支持与
gzip
、bzip2
、xz
等压缩工具结合,生成.tar.gz
、.tar.bz2
、.tar.xz
常用选项
选项 | 含义 |
---|---|
-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在执行完一个命令后,会返回到命令读取状态,等待用户的下一个输入,形成一个交互循环。
很多专业术语在后面我们会学习到,这里简单了解一下就可以了~
计算机操作系统层次结构示意图:
从上到下分为四个主要层次:用户、操作系统、驱动程序和底层硬件。
- 用户:这一层表示用户与操作系统交互的界面,用户可以通过指令操作、开发操作和管理操作来与系统进行交互。
- 操作系统:这一层负责管理计算机的硬件资源,包括内存管理、进程管理、文件管理和驱动管理。
- 驱动程序:这一层包含各种硬件设备的驱动程序,如网卡驱动、硬盘驱动和其他驱动,它们负责与硬件设备进行通信。
- 底层硬件:这一层表示计算机的物理硬件,如网卡、硬盘等。
》什么是操作系统?
操作系统是一款进行软硬件资源管理的软件!
》为什么有操作系统?
通过对下做好软硬件的管理工作(手段),操作系统对上给用户提供一个良好【稳定 高效 安全】的运行环境(目的)
♥♥♥本篇博客内容结束,期待与各位优秀程序员交流,有什么问题请私信♥♥♥
♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥
✨✨✨✨✨✨个人主页✨✨✨✨✨✨