从0到1快速学会Linux操作系统,这一篇就够了!
一、认识Linux
1.1什么是操作系统? 软件的一种,用户和计算机硬件之间的桥梁。
操作系统是计算机软件的一种,它主要负责: 作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作。 而计算机,如果没有操作系统,就是一堆无法使用的垃圾而已。
用户控制操作系统,操作系统安排硬件干活。不管是PC操作系统还是移动操作系统其功能都是:调度硬件进行工作,充当用户和硬件之间的桥梁。
1.2 什么是linux?保护模式下的操作系统
创始人 : 林纳斯 托瓦兹,Linux 诞生于 1991 年,作者上大学期间。因为创始人在上大学期间经常需要浏览新闻和处理邮件,发现现有的操作系统不好用 , 于是他决心自己写一个保护模式下的操作系统,这就是 Linux 的原型, 当时他 21 岁,后来经过全世界网友的支持 , 现在能够兼容多种硬件,成为最为流行的服务器操作系统之一。
1.3 什么是Linux内核?毛坯房
内核是 Linux 操作系统的核心,系统级应用程序只是锦上添花。内核提供了 Linux 系统的主要功能,如硬件调度管理的能力。Linux 内核是免费开源的,任何人都可以查看内核的源代码,甚至是贡献源代码。可以通过:Linux内核官网下载地址https://www.kernel.org去下载 Linux 内核 。
内核无法被用户直接使用,需要配合应用程序才能被用户使用。 在内核之上,封装系统级应用程序,组合在一起就称之为Linux发行版。
1.4 什么是Linux 发行版?精装房
内核是免费、开源的,这也就代表了:
• 任何人都可以获得并修改内核,并且自行集成系统级程序。
• 提供了内核 + 系统级程序的完整封装,称之为 Linux 发行版。

1.5 Linux的优势有哪些?稳定+安全+高性能
1. 开源免费:无需购买许可证,节约成本。
2. 稳定可靠:可长期运行,无需频繁重启,适合高可用性需求。
3. 高安全性:强大的权限管理和快速漏洞修复,防御能力更强。
4. 资源占用低:高效利用硬件,适用于老旧设备或性能要求高的环境。
5. 灵活性强:支持多种发行版、脚本语言和工具,可定制化程度高。
6. 社区支持:全球开发者提供丰富文档和技术支持。
二、个人学习Linux的三种方式
方式1:在虚拟机VMware上安装Linux,再通过第三方软件(例如Xshell、MobaXterm)远程连接到Linux服务器操作系统。
本文主要是记录如何从0学习Linux命令行,相关软件的安装及连接请参考其他博客的安装教程,这里我把所有的相关软件的官网地址都放在下面了,安装过程太过繁琐就不予演示了,谢谢理解。
1.VMware WorkStation官网下载地址:https://www.vmware.com/
1.1虚拟机安装请点击此链接查看这篇博客:https://blog.csdn.net/weixin_45806267/article/details/143982891
2.Ubuntu官网下载地址:https://ubuntu.com/download/desktop
2.1Ubuntu安装请点击该链接查看这篇博客:https://blog.csdn.net/weixin_45806267/article/details/143994126
3.CentOS官网下载地址:https://vault.centos.org/
方式2:在个人电脑上使用WSL获得Ubuntu系统环境
(1)什么是WSL?
WSL:Windows Subsystem for Linux,是用于Windows系统之上的Linux子系统。
作用很简单,可以在Windows系统中获得Linux系统环境,并完全直连计算机硬件,无需通过虚拟机虚拟硬件。
(2)为什么要用WSL?
WSL作为Windows10系统带来的全新特性,正在逐步颠覆开发人员既有的选择。 传统方式获取Linux操作系统环境,是安装完整的虚拟机,如VMware。
实在是太方便了,简单、好用、轻量化、省内存,使用WSL,可以以非常轻量化的方式,得到Linux系统环境。
(3)怎么得到WSL?
方式3:通过阿里云、腾讯云、华为云等购买Linux云服务器进行学习
三、常见的Linux连接方法
方法1:直接连接
你要连接的电脑和该服务器处于同一局域网(信息科连接机房内的Linux),此时可以直接连接,可以通过直接通过管理平台或者远程桌面到对应服务器上就行登录。
方法2:通过虚拟机连接
安装了虚拟机,通过虚拟机部署了Linux,此时您就也可以通过虚拟机进入Linux。
方法2:Windows cmd命令行连接
该方法必须确保Linux服务器的SSH服务端口22已经开启。
方法4:通过第三方软件(类似于通过navicat来高效管理数据库)
该方法必须确保Linux服务器的SSH服务端口22已经开启。
(1)既然决定使用命令行去学习Linux操作系统,那么就必须丰富一下工具的使用。 我们使用VMware可以得到Linux虚拟机,但是在VMware中操作Linux的命令行页面不太方便。
主要是: 内容的复制、粘贴跨越VMware不方便文件的上传、下载跨越VMware不方便。因此我们可以通过第三方软件(利用SSH安全外壳协议),远程连接登录控制操作Linux操作系统, 这样各类操作都会十分的方便。
以下是远程连接Linux常用的第三方软件(SSH远程连接工具)官网下载地址:
1.MobaXterm:https://mobaxterm.mobatek.net/
2.FinalShell:https://www.hostbuf.com/
3.Tabby:https://tabby.sh/
4.xshell:https://www.xshell.com/zh/
5.xshell:https://www.xshell.com/zh/free-for-home-school/
(2)如何查看Linux的IP地址并远程连接呢?
① 在Linux操作系统中,桌面空白右键点击:open in terminal
② 输入ifconfig,即可看到IP地址
② 在以上某一软件中配置好IP地址,以及Linux的账号密码后即可连接成功
知识补充:什么是SSH?常用来作为远程登录Linux的安全协议
secure shell(SSH):安全外壳协议(安全的shell),是一个计算机网络协议(默认端口号为22), 是一种远程加密传输协议。
通过SSH协议,可以在客户端安全(提供身份认证、信息加密)的远程连接LInux服务器或其他设备。
个人理解:是一个远程工具。利用SSH机制,可以在我们的办公PC终端和Linux之间建立一条安全的通道,我们通过这个通道可以远程访问连接操作Linux。
四、Linux 的目录结构
Linux 的目录结构是一个树型结构。
Windows 系统可以拥有多个盘符 , 如 C 盘、 D 盘、 E 盘。
Linux 没有盘符这个概念 , 只有一个根目录 /,,所有文件都在它下面。
在 Linux 系统中,路径之间的层级关系,使用: / 来表示 。
五、Linux 命令通用格式
无论是什么命令,用于什么用途,在 Linux 中,命令有其通用的格式: 命令+选项+参数
command [-options] [parameter ] 语法中的 [],表示可选的意思 。
- command 命令本体,即命令本身
- [-options] 可选选项,控制命令的行为细节
- [parameter ]可选参数,控制命令的指向目标
六、Linux命令学习(通用格式: 命令+[选项]+[参数])
1 ls命令(list):列出当前目录下的内容
ls命令来自英文:list 列表,列出。
ls [-a -l -h] [Linux路径]
-a -l -h 是可选的选项
- Linux 路径是此命令可选的参数
- 当不使用选项和参数,直接使用 ls 命令本体,表示:以平铺形式,列出当前工作目录下的内容 。
- 直接输入ls命令,表示列出当前工作目录下的内容,当前工作目录是?
Linux系统的命令行终端,在启动的时候,默认会加载:当前登录用户的HOME目录【home目录是每个用户的个人工作空间】作为当前工作目录,所以ls命令列出的是HOME目录的内容。每个Linux操作用户在Linux系统的个人账户目录,路径在:/home/用户名 如:/home/root
1.1 ls -a 列出当前目录下的全部文件
1.2 ls -l 以列表的形式展示当前目录下的内容
1.3 ls -l -h 以列表的形式展示当前目录下的内容以及它们的大小
2 cd命令(Change Directory):切换当前工作目录
cd [linux路径] 切换当前所在的工作目录
当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录,我们可以通过cd命令,更改当前所在的工作目录。
cd命令来自英文:Change Directory:切换工作目录。
语法:cd [linux路径]
cd命令无需选项,只有参数,表示要切换到哪个目录下 cd命令直接执行。不写参数,表示回到用户的HOME目录。
3 pwd命令(Print Work Directory):查看当前工作目录
通过ls来验证当前的工作目录,其实是不恰当的。 我们可以通过pwd命令,来查看当前所在的工作目录。
pwd命令来自:Print Work Directory:打印当前工作目录。
语法: pwd命令,无选项,无参数,直接输入pwd即可。
4 相对路径、绝对路径和特殊路径符
4.1 绝对路径(具体路径):以根目录/为起点
以根目录/为起点,描述路径的一种写法,路径描述以/开头。
4.2 相对路径:以当前所在目录为起点【更加简洁】
以当前所在目录为起点,描述路径的一种写法,路径描述无需以/开头。
4.3 特殊路径符
. 一个点表示当前目录,比如cd . 或 cd ./Desktop
.. 两给点表示上一级目录,比如:回退到上一级cd .. 或回退到上一级的上一级 cd ../..
~ 一个波浪线表示用户的HOME目录,比如:cd ~ 或 cd ~/Desktop
4.4 练习
1.当前工作目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径。 test/hello.txt
2.在当前工作目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径。
../test/hello.txt
3.在HOME目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的路径,需要使用符号~ 。
~/test/hello.txt
5 mkdir命令(Make Directory):创建新的目录(文件夹)
mkdir来自英文:Make Directory
语法:mkdir [-P] [Linux路径]
***参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可。
***-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录。
mkdir -p 选项:如果想要一次性创建多个层级的目录,如下图(不加-p报错如下:)
[root@VM-8-12-centos ~]# mkdir test4/good/nb666
mkdir: cannot create directory ‘test4/good/nb666’: No such file or directory
会报错,因为上级目录test4和good并不存在,所以无法创建nb666目录。
可以通过-p选项,将一整个链条都创建完成。
[root@VM-8-12-centos ~]# mkdir test4/good/nb666
mkdir: cannot create directory ‘test4/good/nb666’: No such file or directory
[root@VM-8-12-centos ~]# mkdir -p test4/good/nb666 --可以通过-p选项,将一整个链条都创建完成。
[root@VM-8-12-centos ~]# ls
test1 test2 test20250103 test3 test4
[root@VM-8-12-centos ~]# cd test4
[root@VM-8-12-centos test4]# ls
good
[root@VM-8-12-centos test4]# cd good
[root@VM-8-12-centos good]# ls
nb666
注意:mkdir创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作。
涉及到权限问题,HOME外无法成功。
6 touch命令:创建文件
touch命令是“Globally search a Regular Expression and Print”的缩写。
语法:touch Linux路径
touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用。
[root@VM-8-12-centos ~]# pwd
/root
[root@VM-8-12-centos ~]# ls
test0 test1 test2 test20250103 test3 test4
[root@VM-8-12-centos ~]# touch text.txt
[root@VM-8-12-centos ~]# ls
test0 test1 test2 test20250103 test3 test4 text.txt
-rw-r--r-- 1 root root 0 Jan 3 19:59 text.txt
[root@VM-8-12-centos ~]# ls -l
total 24
drwxr-xr-x 2 root root 4096 Jan 3 19:47 test0
drwxr-xr-x 5 root root 4096 Jan 3 19:29 test1
drwxr-xr-x 2 root root 4096 Jan 3 19:27 test2
drwxr-xr-x 2 root root 4096 Jan 3 19:18 test20250103
drwxr-xr-x 2 root root 4096 Jan 3 19:31 test3
drwxr-xr-x 3 root root 4096 Jan 3 19:38 test4
-rw-r--r-- 1 root root 0 Jan 3 19:59 text.txt
7 cat命令:查看文件内容
cat命令是“concatenate”的缩写。
语法:cat Linux路径
cat命令同样没有选项,参数必填,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用。
8 more命令:分页查看文件内容(内容过多时支持翻页展示)
more命令同样可以查看文件内容,同cat不同的是: cat是直接将内容全部显示出来,more支持翻页,如果文件内容过多,可以一页页的展示。
语法:more Linux路径
more同样没有选项,参数必填,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用。
Linux系统内置有一个文件,路径为:/etc/services,可以使用more命令查看
more /etc/services
在查看的过程中,通过空格翻页
通过按q 即可退出查看
9 -r(recursive)和-f(force)代表什么?
9.1 -r 来自英文单词recursive:递归的。
在Linux命令中,`-r`选项用于:递归地处理目录及其内容。在Linux操作系统中,cp复制和rm删除文件夹时需要使用`-r`(递归)选项,这是因为这些操作不仅涉及到文件夹本身,还涉及到其包含的所有子文件夹和文件。
9.2 -f 来自英文单词force:强制。
在使用`rm`命令删除文件或目录时,加上`-f`(force)选项可以强制删除文件或目录,不会提示确认。这对于批量删除文件非常有用,经常与`-r`(递归)选项一起使用,特别是在删除非空目录时。
10 cp命令(copy):复制文件、加-r复制文件夹
cp命令来自英文单词:copy
语法: cp -r 参数1 参数2 --复制文件夹,必须使用-r选项,否则不会生效
- -r选项,可选,用于复制文件夹使用,表示递归。
- 参数1,Linux路径,表示被复制的文件或文件夹。
- 参数2,Linux路径,表示要复制到哪里。
***复制文件:
[root@VM-8-12-centos ~]# pwd
/root
[root@VM-8-12-centos ~]# ls -lh --当前路径下有哪些文件、文件夹
total 24K
drwxr-xr-x 2 root root 4.0K Jan 4 10:00 test0
drwxr-xr-x 5 root root 4.0K Jan 3 19:29 test1
drwxr-xr-x 2 root root 4.0K Jan 3 19:27 test2
drwxr-xr-x 2 root root 4.0K Jan 3 19:18 test20250103
drwxr-xr-x 2 root root 4.0K Jan 3 19:31 test3
drwxr-xr-x 3 root root 4.0K Jan 3 19:38 test4
-rw-r--r-- 1 root root 0 Jan 4 09:59 text0
-rw-r--r-- 1 root root 0 Jan 3 19:59 text.txt
[root@VM-8-12-centos ~]# cp text.txt text1.txt --复制text.txt为当前路径下的text1.txt
[root@VM-8-12-centos ~]# cp text.txt ./text2.txt --复制text.txt为当前路径下的text2.txt
[root@VM-8-12-centos ~]# cp text.txt /root/text3.txt --复制text.txt为当前路径下的text3.txt
[root@VM-8-12-centos ~]# ls -l --以上三个操作后当前路径下有哪些文件、文件夹
total 24
drwxr-xr-x 2 root root 4096 Jan 4 10:00 test0
drwxr-xr-x 5 root root 4096 Jan 3 19:29 test1
drwxr-xr-x 2 root root 4096 Jan 3 19:27 test2
drwxr-xr-x 2 root root 4096 Jan 3 19:18 test20250103
drwxr-xr-x 2 root root 4096 Jan 3 19:31 test3
drwxr-xr-x 3 root root 4096 Jan 3 19:38 test4
-rw-r--r-- 1 root root 0 Jan 4 09:59 text0
-rw-r--r-- 1 root root 0 Jan 4 10:03 text1.txt
-rw-r--r-- 1 root root 0 Jan 4 10:03 text2.txt
-rw-r--r-- 1 root root 0 Jan 4 10:05 text3.txt
-rw-r--r-- 1 root root 0 Jan 3 19:59 text.txt
***复制文件夹加选项-r
[root@VM-8-12-centos ~]# ls --当前路径下有哪些文件、文件夹
study02.txt test0 test2 test3 text0 text2.txt text.txt
studytest test1 test20250103 test4 text1.txt text3.txt
[root@VM-8-12-centos ~]# cp studytest studytest1 --复制文件夹不加-r报错
cp: omitting directory ‘studytest’
[root@VM-8-12-centos ~]# cp -r studytest studytest1 --复制studytest为当前路径下studytest1
[root@VM-8-12-centos ~]# cp -r studytest /root/test0/studytest2
--复制studytest为/root/test0/路径下studytest1
[root@VM-8-12-centos ~]# ls ----以上两个文件夹复制完成后,当前路径下有哪些文件、文件夹
study02.txt studytest1 test1 test20250103 test4 text1.txt text3.txt
studytest test0 test2 test3 text0 text2.txt text.txt
11 mv命令(move):移动文件或文件夹+重命名文件夹
mv命令来自英文单词:move
语法:mv 参数1 参数2
参数1,Linux路径,表示被移动的文件或文件夹。
参数2,Linux路径,表示要移到哪里,如果目标不存在,则进行改名,确保目标存在。
***mv 移动
[root@VM-8-12-centos ~]# ls --移动之前,当前路径下有哪些文件、文件夹
study02.txt studytest1 test1 test20250103 test4 text1.txt text3.txt
studytest test0 test2 test3 text0 text2.txt text.txt
[root@VM-8-12-centos ~]# mv studytest1 test1 --把studytest1文件夹移动到test1路径下
[root@VM-8-12-centos ~]# mv text.txt ./test1 --把text.txt文件移动到test1路径下
[root@VM-8-12-centos ~]# mv text1.txt ./test1 --把text1.txt文件移动到test1路径下
[root@VM-8-12-centos ~]# ls --移动之后,当前路径下有哪些文件、文件夹
study02.txt test0 test2 test3 text0 text3.txt
studytest test1 test20250103 test4 text2.txt
***mv 改名
[root@VM-8-12-centos ~]# ls --移动之前,当前路径下有哪些文件、文件夹
study02.txt test0 test2 test3 text0 text3.txt
studytest test1 test20250103 test4 text2.txt
[root@VM-8-12-centos ~]# mv text0 text1
--text1目标不存在,但是为了确保移动成功,把text0改名成text1
[root@VM-8-12-centos ~]# ls --移动之后,当前路径下有哪些文件、文件夹
study02.txt test0 test2 test3 text1 text3.txt
studytest test1 test20250103 test4 text2.txt
12 rm命令(remove):删除文件、加-r删除文件夹 ;-f表示强制删除
12.1 rm命令温馨提示:rm是一个危险的命令,特别是在处于root(超级管理员)用户的时候, 请谨慎使用。如下命令,请千万千万不要在root管理员用户下执行: rm -rf /和 rm -rf /*,效果等同于在Windows上执行C盘格式化。
12.2 rm命令来自英文单词:remove
语法: rm [ -r -f] 参数1 参数2 ……参数n
同cp命令一样,-r(递归的)选项用于删除文件夹。
-f表示force,强制删除(不会弹出提示确认信息)普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示,所以一般普通用户用不到-f选项。
参数1、参数2、......、参数N 表示要删除的文件或文件夹路径,按照空格隔开。
[root@VM-8-12-centos ~]# pwd
/root
[root@VM-8-12-centos ~]# ls --查看当前路径下有哪些文件、文件夹
study02.txt test0 test2 test3 text1 text3.txt
studytest test1 test20250103 test4 text2.txt
[root@VM-8-12-centos ~]# rm study02.txt --删除study02.txt文件
rm: remove regular empty file ‘study02.txt’? y --确认删除
[root@VM-8-12-centos ~]# rm studytest --删除studytest文件夹
rm: cannot remove ‘studytest’: Is a directory --报错“studytest是一个目录”
[root@VM-8-12-centos ~]# rm -r studytest --加-r删除studytest文件夹
rm: remove directory ‘studytest’? y --确认删除
[root@VM-8-12-centos ~]# ls --查看以上两个删除操作后,当前路径下有哪些文件、文件夹
test0 test2 test3 text1 text3.txt
test1 test20250103 test4 text2.txt
[root@VM-8-12-centos ~]# ls
test0 test2 test3 text1 text3.txt
test1 test20250103 test4 text2.txt
[root@VM-8-12-centos ~]# rm text1 text2.txt
rm: remove regular empty file ‘text1’? y
rm: remove regular empty file ‘text2.txt’? y
[root@VM-8-12-centos ~]# rm -r test20250103 test4
rm: remove directory ‘test20250103’? y
rm: descend into directory ‘test4’? y
rm: descend into directory ‘test4/good’? y
rm: remove directory ‘test4/good/nb666’? y
rm: remove directory ‘test4/good’? y
rm: remove directory ‘test4’? y
[root@VM-8-12-centos ~]# ls
test0 test1 test2 test3 text3.txt
[root@VM-8-12-centos ~]# rm -f text3.txt
[root@VM-8-12-centos ~]# ls
test0 test1 test2 test3
13 通配符 *:模糊匹配任意内容包含空(搭配rm和find命令使用)
符号* 表示通配符,即匹配任意内容(包含空)。示例:
- test*,表示匹配任何以test开头的内容。
- *test,表示匹配任何以test结尾的内容。
- *test*,表示匹配任何包含test的内容。
***rm 配合通配符*的使用(*相当于模糊匹配)
[root@VM-8-12-centos ~]# ls
test0 test1 test2 test3
[root@VM-8-12-centos ~]# ls test1 -lh --查询test1下有哪些文件、文件夹
total 16K
drwxr-xr-x 2 root root 4.0K Jan 4 10:16 studytest1
drwxr-xr-x 2 root root 4.0K Jan 3 19:21 test1.1
drwxr-xr-x 2 root root 4.0K Jan 3 19:28 test1.2
drwxr-xr-x 2 root root 4.0K Jan 3 19:29 test1.3
-rw-r--r-- 1 root root 0 Jan 4 10:03 text1.txt
-rw-r--r-- 1 root root 0 Jan 3 19:59 text.txt
[root@VM-8-12-centos ~]# cd test1 --切换到test1目录
[root@VM-8-12-centos test1]# pwd --查看当前目录
/root/test1
[root@VM-8-12-centos test1]# rm text* --删除当前目录下以text开头的文件
rm: remove regular empty file ‘text1.txt’? y
rm: remove regular empty file ‘text.txt’? y
[root@VM-8-12-centos test1]# rm -r study* --删除当前目录下以study开头的文件夹
rm: remove directory ‘studytest1’? y
[root@VM-8-12-centos test1]# ls -lh --以上两个模糊删除之后,查询test1下有哪些文件、文件夹
total 12K
drwxr-xr-x 2 root root 4.0K Jan 3 19:21 test1.1
drwxr-xr-x 2 root root 4.0K Jan 3 19:28 test1.2
drwxr-xr-x 2 root root 4.0K Jan 3 19:29 test1.3
14 which命令(查找命令):查找各命令的程序文件存放在哪个路径
我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。 和Windows系统中的.exe文件,是一个意思。
我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里。
语法:which 要查找的命令
- 无需选项,只需要参数表示要查找哪个命令
[root@VM-8-12-centos ~]# ls
test0 test1 test2 test3
[root@VM-8-12-centos ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@VM-8-12-centos ~]# which cd
/usr/bin/cd
[root@VM-8-12-centos ~]# which pwd
/usr/bin/pwd
[root@VM-8-12-centos ~]# which mkdir
/usr/bin/mkdir
[root@VM-8-12-centos ~]# which touch
/usr/bin/touch
[root@VM-8-12-centos ~]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@VM-8-12-centos ~]# which mv
alias mv='mv -i'
/usr/bin/mv
[root@VM-8-12-centos ~]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@VM-8-12-centos ~]# which cat
/usr/bin/cat
[root@VM-8-12-centos ~]# which more
/usr/bin/more
[root@VM-8-12-centos ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias
/usr/bin/which
15 find命令(查找文件):按文件名/文件大小,查找该文件存放在哪个路径
如下图:在windows图形化中,我们可以方便的通过系统提供的搜索功能,搜索指定的文件。
同样,在Linux系统中,我们可以通过find命令去搜索指定的文件。
语法:find 起始路径 -name "被查找的文件名"
15.1 find命令 - 按文件名查找文件
查找文件名叫做:test的文件,从根目录开始搜索,基于语法,可以有命令:
[root@VM-8-12-centos ~]# find / -name "test"
--从根目录/开始查找文件名称为test的所在路径
/usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/kernel/drivers/ntb/test
/usr/local/qcloud/YunJing/bin/test
/usr/local/qcloud/python/lib/python3.7/tkinter/test
/usr/local/qcloud/python/lib/python3.7/unittest/test
/usr/local/qcloud/python/lib/python3.7/ctypes/test
/usr/local/qcloud/python/lib/python3.7/test
/usr/local/qcloud/python/lib/python3.7/sqlite3/test
/usr/bin/test
/usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/lib/raid6/test
/usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/drivers/ntb/test
/usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/include/config/test
/usr/lib64/python3.6/test
/usr/lib64/python2.7/unittest/test
/usr/lib64/python2.7/test
/test
15.2 find命令 - 通配符*
根据【语法:find 起始路径 -name "被查找的文件名"】,语法中"被查找文件名",支持使用通配符 * 来做模糊查询。
符号* 表示通配符,即匹配任意内容(包含空),示例:
① test*,表示匹配任何以test开头的内容。
② *test,表示匹配任何以test结尾的内容 。
③ *test*,表示匹配任何包含test的内容。
基于通配符的含义,可以结合find命令做文件的模糊查询。
15.3 find命令 - 按文件大小查找文件
语法:find 起始路径 -size +|- n[KMG]
解释:
① +、-表示 大于和小于。
② n表示 大小数字。
③ kMG表示 大小单位,k(小写字母)表示kb,M表示MB,G表示GB。
15.3 find命令 - 按文件大小查找文件
语法:find 起始路径 -size +|- n[KMG]
示例:
从根目录/开始查找小于10KB的文件: find / -size -10k
从根目录/开始查找大于100MB的文件:find / -size +100M
从根目录/开始查找大于1GB的文件:find / -size +1G
16 grep命令(筛选内容):从文件中筛选出带有关键字的行及行号
grep是“Globally search a Regular Expression and Print”的缩写。
语法:grep [-n] "关键字" 文件路径
解释:
- 选项-n:可选,表示在结果中显示匹配的行的行号。
- 关键字:必填,表示过滤的关键字,带有空格或其它特殊符号,使用" "将关键字包围起来。
- 文件路径:参数,表示要过滤内容的文件路径,可作为管道符的输入。
ubuntu@VM-8-12-ubuntu:~$ whoami ubuntu ubuntu@VM-8-12-ubuntu:~$ pwd /home/ubuntu ubuntu@VM-8-12-ubuntu:~$ ls studylinux0.txt ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt 此文件用于练习grep命令! 此文件用于练习grep1命令! 此文件用于练习grep2命令! 此文件用于练习grep3命令! 此文件用于练习grep4命令! hello linux hello ubuntu ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt 此文件用于练习grep命令! 此文件用于练习grep1命令! 此文件用于练习grep2命令! 此文件用于练习grep3命令! 此文件用于练习grep4命令! hello linux hello ubuntu ubuntu@VM-8-12-ubuntu:~$ grep "hello" studylinux0.txt hello linux hello ubuntu ubuntu@VM-8-12-ubuntu:~$ grep "linux" studylinux0.txt hello linux ubuntu@VM-8-12-ubuntu:~$ grep -n "hello" studylinux0.txt 6:hello linux 7:hello ubuntu
17 wc命令(Word Count):统计行数、单词数量、字节数
可以通过wc(Word Count)命令统计文件的行数、单词数量等。
语法:wc [-c -m -l -w] 文件路径
语法解释:
- 选项-c:统计bytes数量。
- 选项-m:统计字符数量。
- 选项-l:统计行数。
- 选项-w:统计单词数量。
- 参数文件路径:被统计的文件,可作为管道符的输入。
ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
此文件用于练习grep命令!
此文件用于练习grep1命令!
此文件用于练习grep2命令!
此文件用于练习grep3命令!
此文件用于练习grep4命令!
hello linux hello ubuntu
ubuntu@VM-8-12-ubuntu:~$ wc studylinux0.txt
6 9 209 studylinux0.txt
ubuntu@VM-8-12-ubuntu:~$ wc -cmlw studylinux0.txt
6 9 109 209 studylinux0.txt
ubuntu@VM-8-12-ubuntu:~$ wc -c studylinux0.txt
209 studylinux0.txt
ubuntu@VM-8-12-ubuntu:~$ wc -m studylinux0.txt
109 studylinux0.txt
ubuntu@VM-8-12-ubuntu:~$ wc -l studylinux0.txt
6 studylinux0.txt
ubuntu@VM-8-12-ubuntu:~$ wc -w studylinux0.txt
9 studylinux0.txt
18 管道符 | :将管道符左边命令的结果,作为右边命令的输入。
管道符(可以嵌套使用)作用是:将管道符左边命令的结果,作为右边命令的输入。
管道符 | 的作用是:将管道符左边命令的结果,作为右边命令的输入。
ubuntu@VM-8-12-ubuntu:~$ ls
studylinux0.txt
ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
此文件用于练习grep命令!
此文件用于练习grep1命令!
此文件用于练习grep2命令!
此文件用于练习grep3命令!
此文件用于练习grep4命令!
hello linux
hello ubuntu
ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt | grep "grep*"
此文件用于练习grep命令!
此文件用于练习grep1命令!
此文件用于练习grep2命令!
此文件用于练习grep3命令!
此文件用于练习grep4命令!
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc
6 9 209
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -l
6
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -m
109
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -c
209
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -w
9
19 echo命令(输出内容):在命令行内输出指定内容
语法:echo 要输出的内容
语法解释:
- 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用" "双引号包围。
20 反引号` `:被``包围的内容,会被作为命令执行,而非普通字符
(`和~是一个键,在英文状态下输入``)我们可以通过将命令用双反引号``将其包围,被``包围的内容,会被作为命令执行,而非普通字符。
21 >和>>重定向符:将左边结果覆盖/追加写入到右边文件中
- > 将左侧命令的结果,覆盖(等价于替换内容)写入到符号右侧指定的文件中。
- >> 将左侧命令的结果,追加(等价于新增内容)写入到符号右侧指定的文件中。
ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt 此文件用于练习grep命令! 此文件用于练习grep1命令! 此文件用于练习grep2命令! 此文件用于练习grep3命令! 此文件用于练习grep4命令! hello linux hello ubuntu ubuntu@VM-8-12-ubuntu:~$ echo "hello,2025" >>studylinux0.txt ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt 此文件用于练习grep命令! 此文件用于练习grep1命令! 此文件用于练习grep2命令! 此文件用于练习grep3命令! 此文件用于练习grep4命令! hello linux hello ubuntuhello,2025
22 tail命令:查看文件尾部内容,跟踪文件的最新更改
语法:tail [-f -num] Linux路径
语法解释:
- 选项,-f表示:持续跟踪(立马检测到文件的更改)。
- 选项, -num(具体的数值)表示:查看尾部多少行,默认10行。
- 参数,Linux路径表示:被跟踪的文件路径。
练习1:请使用echo并配合反引号,输出内容:我当前的工作目录是:`具体的工作目录路径` ubuntu@VM-8-12-ubuntu:~$ echo "我当前的工作目录是:`pwd`" 我当前的工作目录是:/home/ubuntu 练习2:并结合重定向符,将输出结果追加写入stulinux.txt文件中 ubuntu@VM-8-12-ubuntu:~$ echo "我当前的工作目录是:`pwd`" >> stulinux.txt 练习3:查看是否追加成功? ubuntu@VM-8-12-ubuntu:~$ tail -8 stulinux.txt swap.img sys tmp usr var 2025身体健康万事如意 2025祝您行大运发大财 我当前的工作目录是:/home/ubuntu
23 vim 文件路径:vim是Linux中最经典的文本编辑器
- vi、vim是visual interface的简称, 是Linux中最经典的文本编辑器。
- 同图形化界面中的文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。
- vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
23.1 vim编辑器的三种工作模式
- 命令模式(Command mode)在命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。 此模型下,不能自由进行文本编辑。
- 输入模式(Insert mode)也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。
- 底线命令模式(Last line mode)以:开始,通常用于文件的保存、退出。
通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口就是:命令模式窗口。命令模式是vi编辑器的入口和出口,如上图
- 进入vi编辑器会进入命令模式。
- 通过命令模式输入键盘指令,可以进入输入模式(编辑模式、插入模式)。
- 输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式 。
23.2 vim 文件路径:进入命令模式(进入中转站)
语法命令:vim Linux文件路径
- 如果文件路径表示的文件不存在,那么此命令会用于新建一个新文件并编辑内容。
- 如果文件路径表示的文件存在,那么此命令用于打开文件编辑内容。
vim兼容全部的vi功能,所以我们全部使用vim命令。
23.3 快速体验:vim 路径进入,i进入编辑,esc返回,:wq进入底线保存退出
快速体验vim编辑器:
1、使用:vim testvim.txt,创建新文件testvim.txt并打开编辑,执行后进入的是命令模式。
2、在命令模式内,按键盘 i ,进入输入(编辑、插入模式)模式。
3、在输入模式内输入任意内容。比如输入hello,linux vim。
4、输入完成后,按esc回退到命令模式。
5、在命令模式内,按键盘 : ,进入底线命令模式。
6、在底线命令内输入:wq,按回车,保存文件并退出vim编辑器。
7、退出编辑器,通过命令查看文件以及输入的内容是否存在?
23.4 命令模式快捷键

23.5 底线命令模式快捷键
- 编辑模式没有什么特殊的,进入编辑模式后,任何快捷键都没有作用,就是正常输入文本而已。
- 唯一大家需要记住的,就是:通过esc,可以退回到命令模式。
- 在命令模式内,输入:,即可进入底线命令模式,支持如下命令:
24 补充说明
24.1 通过--help选项,查看命令帮助(例如:ls --help)
我们学习的一系列Linux命令,它们所拥有的选项都是非常多的。 比如,简单的ls命令就有: -a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1 等选项,可以发现选项是极其多的。 文章中只对常见的选项进行整理, 足够满足绝大多数的学习、工作场景。如果想要对命令的其它选项进行查阅,可以通过如下方式:
24.2 通过man命令,查看命令详细手册(例如:man ls)
如果想要查看命令的详细手册,可以通过man(manual, 手册)命令查看 比如:
大多数手册都是全英文的,如果阅读吃力,可以通过重定向符:man ls > ls.txt,输出手册到文件,然后通过翻译软件翻译内容查看。
七 Linux用户和权限
1 root用户(超级管理员):拥有最大权限
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员),而普通用户在许多地方的权限是受限的。
- 普通用户的权限,一般在其HOME目录内是不受限的。
- 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
普通用户的权限,一般在其HOME目录内是不受限的。 ubuntu@VM-8-12-ubuntu:~$ mkdir test3 ubuntu@VM-8-12-ubuntu:~$ ls ls.txt stulinux.txt test1 test2 test3 testvim.txt 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。 ubuntu@VM-8-12-ubuntu:/$ whoami --查看当前登录的用户 ubuntu ubuntu@VM-8-12-ubuntu:/$ pwd --查看当前的工作目录 / ubuntu@VM-8-12-ubuntu:/$ mkdir test --创建新文件夹 mkdir: cannot create directory ‘test’: Permission denied --权限被拒绝,没有访问文件的权限。权限不足,不能创建
2 su命令(Switch User):切换用户;exit命令:退回上一个用户
来源英文单词:Switch User
语法:su - [用户名]
语法解释:
- - 符号是可选的,表示是否在切换用户后加载环境变量,建议带上。
- 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root。
- 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d。
- 使用普通用户,切换到其它用户需要输入密码,如切换到root用户。
- 使用root用户切换到其它用户,无需密码,可以直接切换。
root@VM-8-12-ubuntu:~# su - ubuntu --从root切换ubuntu用户,无需输入密码 ubuntu@VM-8-12-ubuntu:~$ whoami --查看当前用户 ubuntu ubuntu@VM-8-12-ubuntu:~$ su - --切换时不带用户名,默认切换到root用户 Password: --输入root密码 root@VM-8-12-ubuntu:~# whoami --查看当前用户 root root@VM-8-12-ubuntu:~# exit --退出当前用户,返回到上一个用户 logout ubuntu@VM-8-12-ubuntu:~$ whoami --查看当前用户 ubuntu ubuntu@VM-8-12-ubuntu:~$ ubuntu@VM-8-12-ubuntu:/$ su - root Password: root@VM-8-12-ubuntu:~# pwd /root root@VM-8-12-ubuntu:~# mkdir test 利用root用户创建成功,因为root拥有最大权限 root@VM-8-12-ubuntu:~# ls test
3 sudo命令:临时赋予root授权(可以让一条普通命令带有root权限)
在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。但是不建议长期使用root用户进行操作,避免带来系统损坏。可以使用sudo命令,为普通的命令授权,临时以root身份执行。
语法:sudo 其它命令
语法解释:
- 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。
- 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证。
ubuntu@VM-8-12-ubuntu:~$ whoami --查看当前用户 ubuntu ubuntu@VM-8-12-ubuntu:~$ cd / --跳出home目录,切换到根目录/ ubuntu@VM-8-12-ubuntu:/$ mkdir test2 --创建test2文件夹 mkdir: cannot create directory ‘test2’: Permission denied --权限不足,无法创建 ubuntu@VM-8-12-ubuntu:/$ sudo mkdir test2 --开头带上sudo,获得临时的root的权限,创建成功
4 vi /etc/sudoers命令:为普通用户配置sudo认证
- 第一步:切换到root用户,执行vi /etc/sudoers命令,会自动通过vi编辑器打开:/etc/sudoers
- 第二步:在文件的最后添加 用户名 ALL=(ALL:ALL) NOPASSWD: ALL
表示该用户可以使用sudo命令,无需输入密码,最后通过 :wq 保存。 - 第三步:切换回普通用户,执行的sudo命令,就可以以临时root身份运行。
5 用户、用户组
Linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组中
Linux中关于权限的管控级别有2个级别,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。 所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。
6 用户组管理
以下命令需root用户执行。
6.1 创建用户组:groupadd 用户组名
ubuntu@VM-8-12-ubuntu:~$ whoami
ubuntu
ubuntu@VM-8-12-ubuntu:~$ su -
Password:
root@VM-8-12-ubuntu:~# whoami
root
root@VM-8-12-ubuntu:~# groupadd group1
root@VM-8-12-ubuntu:~# groupadd group666
6.2 删除用户组:groupdel 用户组名
root@VM-8-12-ubuntu:~# groupdel group1
7 用户管理
以下命令需root用户执行。
7.1 创建用户:useradd [-g -d] 用户名
- 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d指定用户HOME路径。不指定,HOME目录默认在:/home/用户名
useradd admin -g:指定这个新用户属于哪个用户组;-d 指定这个新用户的home目录 root@VM-8-12-ubuntu:/# useradd admin1 -g group666 -d /home/usertest root@VM-8-12-ubuntu:/# su - admin1 $ pwd /home/usertest
7.2 删除用户:userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
root@VM-8-12-ubuntu:/# userdel admin
root@VM-8-12-ubuntu:/# uerdel -r admin1
7.3 查看用户所属组: id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
root@VM-8-12-ubuntu:/# id
uid=0(root) gid=0(root) groups=0(root)
root@VM-8-12-ubuntu:/# useradd yangyunlong -g group666
root@VM-8-12-ubuntu:/# id yangyunlong
uid=1005(yangyunlong) gid=1002(group666) groups=1002(group666)
root@VM-8-12-ubuntu:/# su - yangyunlong
$ id
uid=1005(yangyunlong) gid=1002(group666) groups=1002(group666)
7.4 修改用户所属组:usermod -aG 用户组 用户名
- 将指定用户加入指定用户组
root@VM-8-12-ubuntu:/# groupadd group888
root@VM-8-12-ubuntu:/# usermod -aG group888 yangyunlong
root@VM-8-12-ubuntu:/# id yangyunlong
uid=1005(yangyunlong) gid=1002(group666) groups=1002(group666),1005(group888)
8 getent命令:查看当前系统中有哪些用户、有哪些用户组
8.1 getent passwd :可以查看当前系统中有哪些用户
8.2 getent group:可以查看当前系统中有哪些用户组
9 查看权限控制
9.1 认识权限信息
- 序号1,表示文件、文件夹的权限控制信息
- 序号2,表示文件、文件夹所属用户
- 序号3,表示文件、文件夹所属用户组
让我们来解析一下序号1的权限细节,权限细节总共分为10个槽位。
举例:drwxr-xr-x表示:
- 这是一个文件夹,首字母d表示
- 所属用户(右上角图序号2)的权限是:有r有w有x,rwx
- 所属用户组(右上角图序号3)的权限是:有r无w有x,r-x (-表示无此权限)
- 其它用户的权限是:有r无w有x,r-x
9.2 r:读权限,w:写权限,x:执行权限
- r 表示读权限(read)
- w 表示写权限(write)
- x 表示执行权限(execute)
针对文件、文件夹的不同,rwx的含义有细微差别:
- r,针对文件可以查看文件内容
- r,针对文件夹,可以查看文件夹内容,如ls命令
- w,针对文件表示可以修改此文件
- w,针对文件夹,可以在文件夹内:创建、删除、改名等操作
- x,针对文件表示可以将文件作为程序执行
- x,针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
10 chmod命令:修改文件、文件夹权限信息
10.1 chmod命令
注意,只有文件、文件夹的所属用户或root用户可以修改。
语法:chmod [-R] 权限 文件或文件夹
选项:-R,对文件夹内的全部内容应用同样的操作。
示例:
chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为:rwxr-x--x
其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x
除此之外,还有快捷写法:chmod 751 hello.txt 将hello.txt的权限修改为751 那么问题来了,751表示什么意思呢?
10.2 权限的数字序号:r记为4,w记为2,x记为1
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
数字的细节如下:r记为4,w记为2,x记为1,可以有:
- 0:无任何权限 即 ---
- 1:仅有x权限 即 --x
- 2:仅有w权限 即 -w-
- 3:有w和x权限 即 -wx
- 4:仅有r权限 即 r--
- 5:有r和x权限 即 r-x
- 6:有r和w权限 即 rw-
- 7:有全部权限 即 rwx
11 chown命令:修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行。
语法:chown [-R] [用户] [:] [用户组] 文件或文件夹
语法解释:
- 选项,-R,同chmod,对文件夹内全部内容应用相同规则
- 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
- :用于分隔用户和用户组
示例:
- chown root hello.txt,将hello.txt所属用户修改为root
- chown :root hello.txt,将hello.txt所属用户组修改为root
- chown root:itheima hello.txt,将hello.txt所属用户修改为root,用户组修改为itheima
- chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则
八 Linux实用操作
1 实用快捷键
1.1 ctrl + c:强制停止
Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl + c 命令输入错误,也可以通过快捷键ctrl + c,退出当前输入,重新输入。
1.2 ctrl + d:退出(或通过命令exit得到同样效果)
可以通过快捷键:ctrl + d,退出账户的登录。或者退出某些特定程序的专属页面。
ps:不能用于退出vi/vim。
1.3 history:搜索历史输入过的命令
可以通过history命令,查看历史输入过的命令。
1.4 history | grep 关键字:通过关键字去过滤某些特定的命令
1.5 光标移动快捷键
- ctrl + a,跳到命令开头
- ctrl + e,跳到命令结尾
- ctrl + 键盘左键,向左跳一个单词
- ctrl + 键盘右键,向右跳一个单词
1.6 ctrl + l:清屏(或通过命令clear得到同样效果)
1.7 !命令前缀:自动执行上一次匹配前缀的命令
1.8 ctrl + r:输入内容去匹配历史命令
如果搜索到的内容是你需要的,那么: 回车键可以直接执行。键盘左右键,可以通过复制得到此命令(不执行)。
2 软件安装、卸载、搜索
以下命令需要root权限哦,可以su切换到root,或使用sudo提权。并且需要联网。
操作系统安装软件有许多种方式,一般分为:
- 下载安装包自行安装
如win系统使用exe文件、msi文件等
如mac系统使用dmg文件、pkg文件等
- 系统的应用商店内安装
如win系统有Microsoft Store商店
如mac系统有AppStore商店
- Linux系统同样支持这两种方式,我们首先,先来学习使用:Linux命令行内的”应用商店”,yum命令安装软件:
前面学习的各类Linux命令,都是通用的。 但是软件安装,CentOS系统和Ubuntu是使用不同的包管理器。 CentOS使用yum管理器,Ubuntu使用apt管理器。
实例:Ubuntu使用apt管理器搜索、安装、卸载wget
apt search wget,通过yum命令,搜索是否有wget安装包
apt -y install wget, 通过此命令安装wget程序
apt -y remove wget,通过此命令卸载wget命令
3 systemctl命令:控制软件的启动和关闭
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启 能够被systemctl管理的软件,一般也称之为:服务。系统内置的服务比较多,比如: NetworkManager,主网络服务 network,副网络服务 firewalld,防火墙服务 sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)。现在可以使用systemctl去尝试一下,控制这些服务的启动、关闭、自启动啦。
语法:systemctl start | stop | status | enable | disable 服务名
- start 启动
- stop 关闭
- status 查看状态
- enable 开启开机自启
- disable 关闭开机自启
可以控制软件(服务)的启动、关闭、开机自启动。
- linux系统内置服务均可被systemctl控制
- 第三方软件,如果自动注册了可以被systemctl控制
- 第三方软件,如果没有自动注册,可以手动注册(后续学习)
4 ln命令:创建软连接 (类似于快捷方式)
在系统中创建软链接,可以将文件、文件夹链接到其它位置。 类似Windows系统中的《快捷方式》。
语法:ln -s 参数1~参数2
语法解释:
- -s选项,创建软连接
- 参数1:被链接的文件或文件夹
- 参数2:要链接去的目的地
5 日期、时区
5.1 date命令:查看日期时间
语法:date [-d] [+格式化字符串]
- -d 按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
%Y 年
%y 年份后两位数字 (00..99)
%m 月份 (01..12)
%d 日 (01..31)
%H 小时 (00..23)
%M 分钟 (00..59) %S 秒 (00..60)
%s 自 1970-01-01 00:00:00 UTC 到现在的秒数
ubuntu@VM-8-12-ubuntu:~$ date
Thu Jan 9 06:48:31 PM CST 2025
ubuntu@VM-8-12-ubuntu:~$ date +%Y-%m-%d
2025-01-09
ubuntu@VM-8-12-ubuntu:~$ date "+%Y-%m-%d %H:%M:%S"
2025-01-09 18:50:16
5.2 修改Linux系统的时区
系统默认时区非中国的东八区。 使用root权限,执行如下命令,修改时区为东八区时区,将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可。
ubuntu@VM-8-12-ubuntu:~$ sudo su - root
root@VM-8-12-ubuntu:~# rm -f /ect/localtime
root@VM-8-12-ubuntu:~# ln -s /usr/share/zoneinfo/Asia/shanghai~/etc/localtime
--修改为亚洲上海的时区
root@VM-8-12-ubuntu:~# date
Thu Jan 9 07:00:48 PM CST 2025
5.3 使用ntp程序自动校准系统时间(需要联网)
安装ntp:apt -y install ntp
启动并设置开机自启:
systemctl start ntpd
systemctl enable ntpd
当ntpd启动后会定期的帮助我们联网校准系统的时间。
也可以手动校准(需root权限):ntpdate -u ntp.aliyun.com
通过阿里云提供的服务网址配合ntpdate(安装ntp后会附带这个命令)命令自动校准。
6 IP地址、主机名
6.1 ifconfig:查看IP地址
每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯 IP地址主要有2个版本,V4版本和V6版本(V6很少用,课程暂不涉及) IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192.168.88.101就是一个标准的IP地址。可以通过命令:ifconfig,查看本机的ip地址,如无法使用ifconfig命令,可以安装:apt -y install net-tools。
ubuntu@VM-8-12-ubuntu:~$ sudo su - root
root@VM-8-12-ubuntu:~# apt -y install net-tools
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
net-tools is already the newest version (2.10-0.1ubuntu4).
The following packages were automatically installed and are no longer required:
eatmydata libeatmydata1 python3-json-pointer python3-jsonpatch
python3-jsonschema python3-pyrsistent tzdata-legacy
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 213 not upgraded.
root@VM-8-12-ubuntu:~# ifconfig
eth0: flags=4163 mtu 1500
inet 10.2.8.12 netmask 255.255.252.0 broadcast 10.2.11.255
inet6 fe80::5054:ff:fef9:da45 prefixlen 64 scopeid 0x20
ether 52:54:00:f9:da:45 txqueuelen 1000 (Ethernet)
RX packets 3192678 bytes 991769640 (991.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2940681 bytes 469840734 (469.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 48042 bytes 4137128 (4.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 48042 bytes 4137128 (4.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
除了标准的IP地址以外,还有几个特殊的IP地址需要我们了解:
127.0.0.1,这个IP地址用于指代本机。
0.0.0.0,特殊IP地址: 可以用于指代本机,可以在端口绑定中用来确定绑定关系(后续讲解),在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问。
6.2 hostname:查看主机名
每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名。无论是Windows或Linux系统,都可以给系统设置主机名。
ubuntu@VM-8-12-ubuntu:~$ hostname
VM-8-12-ubuntu
6.3 hostnamectl set-hostname 主机名:修改主机名(需root)
ubuntu@VM-8-12-ubuntu:~$ hostname
VM-8-12-ubuntu
ubuntu@VM-8-12-ubuntu:~$ sudo su - root
root@VM-8-12-ubuntu:~# hostnamectl set-hostname studylinux
root@VM-8-12-ubuntu:~# hostname
studylinux
6.4 什么是DNS域名解析(主机名映射)
域名解析原理(相当于电话薄)https://blog.csdn.net/weixin_45806267/article/details/143451905
- 先查看本机的hosts记录(私人地址本)
Windows看:C:WindowsSystem32driversetchosts
Linux看:/etc/hosts
- 再联网去DNS服务器(如114.114.114.114,8.8.8.8等)询问
6.5 配置主机名映射
比如,我们Xshell、FinalShell、mobaXterm是通过IP地址连接到的Linux服务器,那有没有可能通过域名(主机名)连接呢? 可以,我们只需要在Windows系统的:C:WindowsSystem32driversetchosts
文件中配置记录即可。

6.6 如何在VMware Workstation中配置Linux系统的固定IP地址(用于Windows系统)
配置固定IP需要2个大步骤:
第一步:在VMware Workstation(或Fusion)中配置IP地址网关和网段(IP地址的范围)。
第二步:在Linux系统中手动修改配置文件,固定IP 首先让我们,先进行第一步,跟随图片进行操作。现在进行第二步,在Linux系统中修改固定IP 使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,填入如下内容 执行:systemctl restart network 重启网卡,执行ifconfig即可看到ip地址固定为192.168.88.130了。
7 ping命令:检查指定的网络服务器是否是可联通状态
语法:ping [-c num] ip或主机名
语法解释:
选项:-c,检查的次数,不使用-c选项,将无限次数持续检查。
参数:ip或主机名,被检查的服务器的ip地址或主机名地址。
8 wget命令:可以进行网络文件下载
语法:wget [-b] url
语法解释:
选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件。
参数:url,下载链接。
注意:无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。
示例:
下载apache-hadoop 3.3.0版本:wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
在后台下载:wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
通过tail命令可以监控后台下载进度:tail -f wget-log
9 curl命令:可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-0] url
语法解释:
选项:-0,用于下载文件,当url是下载链接时,可以使用此选项保存文件。
参数:url,要发起请求的网络地址。
实例:通过curl下载hadoop-3.3.0安装包:curl -0 http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
10 端口:通过端口可以锁定计算机上具体的程序
10.1 端口的概念以及划分
计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。
通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通。
MAC地址相当于我们每个人的身份证。IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址。
Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:
- 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口 非特殊需要,不要占用这个范围的端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序服务
- 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。
举例:如上图中,计算机A的微信连接计算机B的微信,A使用的50001即动态端口,临时找一个端口作为出口 计算机B的微信使用端口5678,即注册端口,长期绑定此端口等待别人连接。
10.2 nmap IP地址:查看指定IP的对外暴露端口
可以通过Linux命令去查看端口的占用情况使用nmap命令,安装nmap:apt -y install nmap
ubuntu@studylinux:~$ apt -y install nmap
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
ubuntu@studylinux:~$ sudo su - root
root@studylinux:~# apt -y install nmap
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
eatmydata libeatmydata1 python3-json-pointer python3-jsonpatch
python3-jsonschema python3-pyrsistent tzdata-legacy
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
libblas3 liblinear4 liblua5.4-0 libssh2-1t64 nmap-common
Suggested packages:
liblinear-tools liblinear-dev ncat ndiff zenmap
The following NEW packages will be installed:
libblas3 liblinear4 liblua5.4-0 libssh2-1t64 nmap nmap-common
0 upgraded, 6 newly installed, 0 to remove and 213 not upgraded.
Need to get 6,452 kB of archives.
语法:nmap 被查看的IP地址
root@studylinux:~# nmap 127.0.0.1
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-13 12:21 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
可以看到,本机(127.0.0.1)上有1个端口现在被程序占用了。 22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口。
10.3 netstat -anp | grep 端口号:查看指定端口的占用情况
安装netstat:apt -y install net-tools
语法:netstat -anp | grep 端口号
如图,可以看到当前系统6000端口被程序(进程号7174)占用了 其中,0.0.0.0:6000,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问。
11 进程管理
程序运行在操作系统中,是被操作系统所管理的。 为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程。并会为每一个进程都分配一个独有的:进程ID(进程号)。
11.1 ps命令:查看Linux系统中的进程信息
语法:ps [-e -f]
语法解释:
选项:-e,显示出全部的进程。
选项:-f,以完全格式化的形式展示信息(展示全部信息)。
我们可以使用管道符配合grep来进行过滤,如: ps -ef | grep tail,即可准确的找到tail命令的信息。 过滤不仅仅过滤名称,进程号,用户ID等等,都可以被grep过滤哦 如:ps -ef | grep 30001,过滤带有30001关键字的进程信息(一般指代过滤30001进程号)。
11.2 kill [-9] 进程ID:关闭进程
语法:kill [-9] 进程ID 选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
12 top命令:查看系统资源占用
可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器 默认每5秒刷新一次,语法:直接输入top即可,按q或ctrl + c退出。
第一行: top:命令名称,14:39:58:当前系统时间,up 6 min:启动了6分钟,2 users:2个用户登录,load:1、5、15分钟负载
第二行: Tasks:175个进程,1 running:1个进程子在运行,174 sleeping:174个进程睡眠,0个停止进程,0个僵尸进程
第三行: %Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率
第四、五行: Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用 KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
13 df -h: 查看硬盘的使用情况
语法:df [-h]
选项:-h,以更加人性化的单位显示。
14 iostat命令:查看CPU、磁盘的相关信息
语法:iostat [-x] [num1] [num2]
选项:-x,显示更多信息
num1:数字,刷新间隔
num2:数字,刷新几次
15 sar命令:查看网络的相关统计
语法:sar -n DEV num1 num2
选项:-n,查看网络,DEV表示查看网络接口
num1:刷新间隔(不填就查看一次结束)
num2:查看次数(不填无限次数)
16 环境变量
在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。 比如,cd命令的本体就是:/usr/bin/cd 这个程序文件。我们是否会有疑问,为何无论当前工作目录在哪里,都能执行:/usr/bin/cd这个程序呢? 这就是环境变量的作用啦。环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。
16.1 env命令:查看当前系统中记录的环境变量
16.2 什么是PATH,作用是?
环境变量PATH会记录一组目录,目录之间用:隔开。
这里记录的是命令的搜索路径,当执行命令会从记录中记录的目录中挨个搜索要执行的命令并执行。
可以通过修改这个项目的值,加入自定义的命令搜索路径。 如export PATH=$PATH:自定义路径。
16.3 $符号:可以取出环境变量的
16.4 自行设置环境变量
Linux环境变量可以用户自行设置,其中分为:
- 临时设置,语法:export 变量名=变量值
- 永久生效
- 针对当前用户生效,配置在当前用户的: ~/.bashrc文件中,通过vi ~/.bashrc编辑
- 针对所有用户生效,配置在系统的: /etc/profile文件中,通过vi /etc/profile编辑
- 并通过语法:source /etc/profile,进行立刻生效,或重新登录FinalShell生效
环境变量PATH这个项目里面记录了系统执行命令的搜索路径。 这些搜索路径我们也可以自行添加到PATH中去。
测试:
在当前HOME目录内创建文件夹,myenv,在文件夹内创建文件mkhaha
通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行
修改PATH的值
临时修改PATH:export PATH=$PATH:/home/itheima/myenv,再次执行mkhaha,无论在哪里都能执行了
或将export PATH=$PATH:/home/itheima/myenv,填入用户环境变量文件或系统环境变量文件中去
17 文件上传、下载
17.1 方法一:通过第三方SSH工具上传、下载
我们可以通过第三方SSH工具,例如Xshell、FinalShell、mobaxterm等,方便的和虚拟机进行数据交换。 这些软件提供了Linux的文件系统视图,可以方便的:
- 浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
- 浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到Linux中
17.2 方法二:通过rz、sz命令进行文件传输
rz、sz命令需要安装,可以通过:apt -y install lrzsz,即可安装。注意,rz、sz命令需要终端软件支持才可正常运行 FinalShell、SecureCRT、XShell等常用终端软件均支持此操作。
- rz命令,进行上传,语法:直接输入rz即可,选择对应文件上传
- sz命令进行下载,语法:sz 要下载的文件,文件会自动下载到桌面的:fsdownload文件夹中。
18 压缩、解压
市面上有非常多的压缩格式
zip格式:Linux、Windows、MacOS,常用
7zip:Windows系统常用 rar:Windows系统常用
tar:Linux、MacOS常用
gzip:Linux、MacOS常用
如何在Linux系统中操作:tar、gzip、zip这三种压缩格式完成文件的压缩、解压操作。
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
- .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装。
- .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积。
- 针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作。
语法:tar [-c -v -x -f -z -C] 参数1 参数2 ...参数n
语法解释:
- -c,创建压缩文件,用于压缩模式
- -v,显示压缩、解压过程,用于查看进度
- -x,解压模式
- -f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
- -z,gzip模式,不使用-z就是普通的tarball格式。-z选项如果使用的话,一般处于选项位第一个
- -C,选择解压的目的地,用于解压模式
18.1 tar 命令压缩
tar的常用组合为:
- tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar文件内
- tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式
注意:
- -z选项如果使用的话,一般处于选项位第一个
- -f选项,必须在选项位最后一个
18.2 tar 命令解压
常用的tar解压组合有
tar -xvf test.tar
解压test.tar,将文件解压至当前目录
tar -xvf test.tar -C /home/itheima
解压test.tar,将文件解压至指定目录(/home/itheima)
tar -zxvf test.tar.gz -C /home/itheima
以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
注意:
- -f选项,必须在选项组合体的最后一位
- -z选项,建议在开头位置
- -C选项单独使用,和解压所需的其它参数分开
18.3 zip 命令压缩文件
语法:zip [-r] 参数1 参数2 ... 参数n
-r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致。
示例:
zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
18.4 unzip 命令解压文件
使用unzip命令,可以方便的解压zip压缩包
语法:unzip [-d] 参数
- -d,指定要解压去的位置,同tar的-C选项
- 参数,被解压的zip压缩包文件
示例:
unzip test.zip,将test.zip解压到当前目录
unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)
常用基础命令到此结束,后续会更新实际工作中遇到的问题~