文章目录
前言
在数字化时代,Linux 作为开源操作系统的典范,已深度融入服务器运维、云计算、嵌入式开发等核心领域。其开源、稳定、高效的特性,使其成为互联网企业后端架构的基石,也是技术从业者必备的核心技能之一。然而,对于初学者而言,Linux 的命令行交互、文件系统结构与权限管理体系往往显得抽象而复杂,入门门槛较高。
本教程基于 CentOS 7 系列系统(企业级最常用版本),从操作系统的基本概念讲起,逐步深入 Linux 文件系统、用户管理、常用命令、权限控制、打包压缩等核心知识点。内容编排遵循 “理论 + 实践” 的原则:每个知识点均配有具体操作示例(如ls -l查看文件详情、useradd创建用户、sudo权限提权等),并通过对比 Windows 系统的操作逻辑帮助读者建立直观理解。教程后半部分还涵盖了grep文本搜索、tar压缩解压、重定向等进阶操作,以及 CPU / 内存资源查看等运维常用命令,形成从基础到实战的完整知识链。
无论您是计算机相关专业学生、刚接触服务器的开发者,还是希望转型运维岗位的技术人员,本教程都将为您提供系统化的学习路径。通过跟随示例逐步实践,您将掌握 Linux 命令行的核心操作,理解开源系统的设计思想,并具备独立管理 CentOS 服务器的基本能力。让我们从命令行开始,开启高效、安全的 Linux 之旅。
引申
注意:
下面这个才是Linux系统的
你锁定电脑页面了,会自动退出远程的服务器-回来时要注意还是不是Linux
OS的基本概念
OS中文叫做操作系统
操作系统是一款做软硬件管理的软件
一个好的操作系统的衡量指标:稳定,快,安全
为什么要有操作系统:为了对上(应用软件)提供良好的(稳定,快速,安全)的操作/使用环境
操作系统的核心工作:
通过对下管理好软硬件资源的手段,达到对上提供良好的操作/使用环境
我们所有的软件行为,全部都要自上而下贯穿计算机软硬件结构(上面那个图就是)
–几乎我们所有的软件行为都和操作系统直接或间接相关
我们在计算机上的所有行为都会转换成硬件行为
设备驱动的话就是催着硬件干事
命令行和图形化界面的话,命令行会更贴近操作系统(公司一般都是纯命令行的方式)
引申:Windows在
Windows PowerShell
里面也能用linux的指令
Linux里的文件
文件的属性是数据–所以创建文件,里面没有内容,也是要占空间的
文件 = 文件内容+文件属性
开头是d:表示是一个目录(Linux通常后面还拿蓝颜色标记)
开头是-:表示文件时一个普通文件
在Linux中,文件名开头是.的文件,是隐藏文件(比如上面的
.
..
.ssh
)
在Linux任何目录下都有两个隐藏文件
.
和..
..
:表示当前路径的上级路径
.
:表示当前路径 其存在的意义:帮用户定位到当前目录引申:
~
表示当前用户的家目录
Linux中的目录
Linux中
/
是路径分隔符(Windows是\
),但是路径开头的那个/
是根目录比如:腾讯的网站的链接就是用的
/
,说明腾讯内部也是用的LinuxLinux里的目录其实就是Windows里面的文件夹
同一个目录下不能存在同名文件
Linux的一些常用小知识点
|
是一种符号,在这个里面会生成临时文件(这里也叫管道文件)去进行过渡也就是连接两个命令,将左侧命令的标准输出直接作为右侧命令的标准输入
用法eg: cat text.txt | grep world --> 这个cat命令的输出内容会输入到管道文件里,管道文件又被grep使用
Linux中
*
的作用:可以实现局部性匹配比如:
*.c--表示所有后缀为.c的文件 text.*--表示所有前缀为text.的文件 eg: ls *.c表示列出当前目录下所有.c文件
Linux中按
ctrl+c
会显示
如果是指令: ls -l ^c的话-这个指令作废 如果是程序:按了这个的话,程序会中止运行
ctrl+d
有键盘输入结束的意思
Tab
–按一下可以自动补全命令(空格甚至都给你打好)(唯一时) 按两下时显示所有可能的结果(不唯一时才有)
ctrl+r
可以用历史命令补全(补充:
history
可以看历史1000条输入过的指令)-Linux会记录最新的1000条指令
which 指令
可以查指令所在的路径比如: which ls
alias
可以创建指令的别名
alias 别名='命令 '
(命令里面没有eg:空格啥的''
可以不要)alias la = 'ls -a'
但是重命名只是临时的,Xshell重启之后就没了
特例:Linux自身搞的别名:ll是ls -l的别名 这个是一直成立的
Linux下一切皆文件
Linux的基本指令
关于指令里的选项的话 :指令和选项之间要有空格 选项带-的之间也要有空格
空格的话,建议打一个就行了,多个也没错(Linux命令行要求的空格都是这个规则)
多个选项的写法(拿-a -l举例)
ls -a -l ls -l -a ls -al ls -l -a 这些都是一样的
指令是在系统中特定的路径下存在的
指令的本质就是可执行程序,直接安装到了系统的某个路径下-跟我们自己写的代码编译好的程序没有本质区别
(把其他东西拷贝到那个路径下之后也能像指令一样用–但是不建议这么搞)
碰到不会的指令的话就上网搜eg:cetnors7如何安装nano
ls指令
语法: ls [选项][目录或文件] []表示选项 目录或文件都可有可无
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。(没有选项时)
引申:文件名和选项的位置一般是可以颠倒的,但是不推荐
常见选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件
(ls不加任何选项的话,也是列出目录下的所有文件,但不包含隐含文件)
-d 只显示目录本身的信息,而不显示该目录里面的内容 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。
其中-l -a -F -d特别常用
pwd指令
语法: pwd
功能:显示用户当前所在的目录
没有常用选项
cd指令
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
常用写法:
cd ..
: 返回上级目录
cd /text1/text2/
: 绝对路径(这里表示的是:进入text1,再进入里面的text2)
cd text1/
: 相对路径(这里表示的是:在当前位置进入到text1)cd ../text/ : 表示的是:返回上级目录,进入这个目录下的text
cd \~
(跟cd
一个效果):进入用户家目录(家目录其实就是最初那一级
eg:/root
,普通用户的话是/home/....
刚登陆就会在家目录这里)
cd -
:返回最近访问目录
关于绝对路径和相对路径
定义一个文件,通常用路径来进行定位–因为路径有唯一性
为什么路径有唯一性:Linux的整个目录结构是一个多叉树,其的任何节点都只有一个父节点
引申:Linux的整个目录结构是一个多叉树,它的叶子节点一定是空目录或非目录文件
(空目录其实就相当于空的文件夹) 路上节点一定是非空目录
绝对路径:
从/开始定位到指定位置,具有唯一性的路径,叫做绝对路径
相对路径:
以当前所处的位置作为起始参考位置,来进行特定文件的定位,叫做相对路径
–自己位置发生了变化,相对路径可能就得改改了
应该用哪种:一般常用相对路径 绝对路径一般在一些固定场景和配置文件时用
注意:路径直接写eg: text(那就是当前位置的目录的text–也就是相对路径)
引申:
eg: newdir假如是个目录 路径写成 ../newdir/和../newdir是一样的(前者更强调它是个目录而已)
touch指令
语法:touch [选项] 文件
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
常用选项:
-a 或–time=atime或–time=access或–time=use只更改存取时间。
-c 或–no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或–time=mtime或–time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
mkdir指令
语法:mkdir [选项] name
功能:在当前目录下创建一个名为 “name”的目录
常用选项:
-p, --parents
可以是一个路径名称(绝对相对都可以)。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
rmdir指令和rm指令
rmdir指令
语法:rmdir [-p][目录名]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
-p
表示当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
rm指令
语法:rm [选项] 当前位置的子文件或子目录名 (删多个也行)
eg: rm text.i text.o
适用对象:所有使用者
功能:删除文件或目录
回答n就不删,y就删了
常用选项:
-f
即使文件属性为只读(即写保护),亦直接删除
-i
删除前逐一询问确认(超级用户没写这个也会问,普通用户则要写这个才会问)
-r
删除目录及其下所有文件
注意:Linux没有回收站,删了就是真删了
不要乱删东西(正在运行的删不了),删到操作系统就只能重装了
tree指令
安装tree(安装tree需要root账号进行操作)
yum install -y tree
使用
tree
:可以以树形结构展示目录和文件的层级关系eg:
man指令
man 语法: man [选项] 命令
eg: man ls 就是查询ls怎么用
常用选项:
-k 根据关键字搜索联机帮助
-num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
没有任何选项的话,那几章只会从上到下显示这个命令最先具有的那一章
echo指令和cat指令
echo
就是输出cat
就是输入(或者说cat
是读出,ehco
是写入)注意:
echo
输完,光标会自动换行 –printf则不会
eg: echo "1"就是输出到屏幕上 echo "1">text.txt就是输出到text.txt里面 (这个>叫做输出重定向) cat text.txt就是把text.txt的东西输入到屏幕上 引申:echo后面系统认为是字符串(跟C++要""区分) 比如: echo out.txt ->打印out.txt到屏幕上
关于这个>向目标文件写入时,是会清空文件本来内容再写的
cat的常用选项:(
\n
那种的才算空行 ,下面的" "那种的不算!)-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
cp指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明:源文件或目录必须要是存在的
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理(复制过去的东西名字跟原来是一样的)。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
对root账户的话,有些选项可能用了,但是不起作用--其他指令的选项也会这样
mv指令
语法: mv [选项] 源文件或目录 目标文件或目录
功能:剪切和重命名(根据下面的来一起理解)
eg: mv text.txt .. 这就是把text,txt剪切到上一级去 mv text.txt ../text2 如果text2是已经存在的目录,就是把text.txt搞到text2里面去 如果text2是已经存在的普通文件,就是把text2整个替换成text.txt 不存在,就是把text.txt剪切到上一级,并且重命名成text2
more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat(cat看小文件可以,大文件用more好些)
(more是一屏以屏显示,按空格会显示下一屏内容,回车键下翻一行–不能往上翻)
常用选项:
-n 对输出的所有行编号
q 退出more(ctrl+c退出不了)
/字符串:向下搜索“字符串”的功能
less指令
语法: less [选项] 文件
功能:可以上翻也可以下翻(相较于
more
)
常用选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:退出less(ctrl+c退出不了)
head指令
语法: head [选项][文件]
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
常用选项: -n 行数(或- 行数) 显示前 行数 行
tail指令
语法: tail[选项][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件
常用选项:
-f 循环读取
-n 行数(或- 行数) 显示后 行数 行
引申:想只获取中间的话可以eg:
head -1020 out.txt | tail -21
(这种操作叫管道)就是要的前1020行的后21行
比如上面:out.txt中提取1020行其实需要生成文件才能提取后21行
引申:管道文件是内存级的,不存在磁盘里
一般的文件是存在磁盘里,需要访问时放在内存里,搞完再放回磁盘
date指令
date 用法:date [OPTION]… [+FORMAT]
常用选项:(之间可以穿插任何字符进去)
%H 小时 %M 分钟 %S 秒 %Y 年 %m 月 %d 日
当前时间转换成时间戳(时间戳是啥要知道)
date +%s
时间戳转换成时间
date -d@时间戳
cal指令
命令格式: cal [选项][月份][年份]
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
find指令
find 起始目录 选项 [查找条件]
选项:
-name
eg: find ~ -name *.c
find which whereis的区别
which
只能找指令,可以找到指令在哪比如: which ls
whereis
:在系统特定路径下找,可以找到可执行程序,手册,安装包,压缩包之类的东西的位置eg: whereis string.h
find
:找符合条件的有哪些
grep指令
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
eg: grep world text.txt
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
bc指令
其实就是输入之后就变成计算器了
uname指令
uname -r
输出Linux 内核版本号
uname -a
输出所有信息->从左到右依次为:内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
Linux VM-4-3-centos 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux | | | | | | | | | | | | | | | +-- 操作系统名称(GNU/Linux) | | | | | | +-- 硬件平台类型(x86_64) | | | | | +-- 处理器类型(x86_64) | | | | +-- 硬件名(x86_64,这里和硬件平台类型复用) | | | +-- 内核版本(带发行版信息的完整版本) | | +-- 内核版本号(纯版本号:3.10.0-1160.119.1.el7.x86_64) | +-- 主机名(VM-4-3-centos) +-- 内核名称(Linux)
引申: x86_64其实就是x64 x86其实就是32位的
引申:
free [-k或-m或-g]
可以查内存
df -h
可以查磁盘
lscpu
可以查cpu
shutdown指令(现实中用不到)
用来关机–但是服务器一般都不关机!–自己关机,其他同事也就关机了
–Linux系统的环境下自己不要养成关机的习惯!
shutdown [选项]
常用选项:
-h :将系统的服务停掉后,立即关机。
-r :在将系统的服务停掉之后就重新启动
-t 秒数 :-t 后面加秒数-几秒后关机
打包和压缩
作用:1.不容易造成文件缺失 2.下载时间变短,存储占据空间变小
常见的就是
.zip
和.tgz
,没见过的那些的压缩解压方法以后上网搜过来用就行了
zip和unzip指令
zip语法:
zip [选项] xxx.zip 目录或文件(要被压缩的东西,可以写多个)
选项: -r 递归处理,将指定目录下的所有文件和子目录一并处理(不然就是把那个空目录搞进去)
eg: zip -r text.zip text.txt text1
unzip语法:
unzip 压缩包文件名 [-d 目标目录]
,默认解压到当前目录下
tar指令
tar czf xxx.tgz 被压缩的文件或目录
–打包压缩
tar tzf xxx.tgz
–预览
tar xzf xxx.tgz [-C 目录名]
–解压解包(后面那个是指定解压到哪)(
.tgz
跟.tar.gzip
等价)
三大重定向
>
:输出重定向
>>
:追加重定向(不可以写为eg> >
)
>
会清空文件再写入新内容>>
直接在原来基础上写入
>
的妙用:>out.txt
1.这样可以清空里面的内容 2.没有这个文件的话,顺便还创建了出来
<
:输入重定向–可以指定从哪读但是eg: cat out.txt 跟cat < out.txt没啥区别
作业部分
linux查看cpu占用的命令是什么?(A)
A.top//查看cpu资源使用状态
B.netstat//查看网络连接状态
C.free//查看内存资源状态
D.df//查看磁盘分区资源状态
linux 2.6.* 内核默认支持的文件系统有哪些?(ABCD)[多选]
A.ext3
B.ext2
C.ext4
D.xfs
E.ufs
以下哪个命令输出Linux内核的版本信息:(A)
A.uname -r//查看linux内核版本信息
B.vmstat//报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息
C.sar//主要帮助我们掌握系统资源的使用情况,特别是内存和CPU的使用情况
D.stat//用于显示文件的状态信息
在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?(D)
A.grep -E #$ try_grep
B.grep -E #a try_grep
C.grep -E ^$ try_grep
D.grep -E ^a try_grep