Linux学习(一)
一、初步进入Linux世界
系统的认识
一般我们常见的个人 PC系统是Windows系统,该系统能实现:鼠标能点、键盘能输入内容、阅读、看电影、安装软件等等功能,实现人机交互。
世界上目前流行的电脑系统:
Windows -> 微软
Linux
Unix
Linux概述
Linux是一种自由和开放源码的类UNIX操作系统。Linux内核是由林纳斯·托瓦兹于1991年10月5日首次发布。(起因是林纳斯认对他使用的一个类 UNIX 操作系统 MINIX 十分不满,因为当时 MINIX 仅可用于教育但不允许任何商业用途。于是他在他的大学时期编写并发布了自己的操作系统,也就是后来所谓的 “Linux 内核”,成为了如今各类 Linux 发行版的基础。并将源码公布于网络,将Linux 开源,供大家免费使用。)
Android系统是基于Linus系统而开发出来的,而Android系统也是开源的,所以各大手机厂商都可以根据Android源码做出更改和扩展,做出属于自己的东西,如小米的MIUI、VIVO的OriginOS、OPPO的ColorOS等。
类似地,基于Linux内核开发出的各种Linux系统,称为Linux发行版。如:Debian、Ubuntu、RedHat、fedora、CentOS、ArchLinux等等。
二、Linux发行版的安装和使用
基本说明:学习Linux需要一个环境,所以我们需要安装Linux系统。有三种方式可以选择
创建虚拟机,在虚拟机上安装Linux系统(VMware Workstation Pro安装CentOS 7教程)
购买云服务器并安装Linux系统来进行学习
在实体机上安装Linux系统
虚拟机网络连接的三种模式

使用桥接模式:我们创建的虚拟机会实际拥有一个和实体机同一个网段的公网IP地址。这时候虚拟机可以和同一个网段内的实体机进行通信。例如,若实体机公网IP网关为192.168.10.0,主机IP为192.168.10.20,我们所创建的虚拟机也会随机分配一个同网关的IP,如192.168.10.22。
使用NAT模式:VMware的DHCP服务器分配给虚拟机一个内网IP地址(与实体机不是同一个网段),同时也会分配给实体机一个和虚拟机同网段的虚拟IP,用于实体机和虚拟机之间的通信。这时虚拟机可以访问外网,但是外网无法直接访问虚拟机。
仅主机模式:虚拟机只能和实体机通信,无法访问外网。
桥接模式(Bridged)
🌟 特点
- 虚拟机与物理机处于同一网络(局域网),相当于直接连接到物理网络。
- 虚拟机可以获取与物理机相同网段的 IP 地址(由路由器或 DHCP 服务器分配)。
- 虚拟机与外网、局域网中的其他设备可以互相访问,与一台真实电脑无异。
- 需要物理机的网络正常工作,虚拟机才能联网。
📌 适用场景
✅ 需要让虚拟机像一台独立的计算机,可被局域网内其他设备访问,例如:
- 在虚拟机上搭建 Web 服务器、数据库服务器等,需要被局域网或互联网访问。
- 需要让虚拟机使用与物理机相同的网关和 IP 分配方式(DHCP 或静态 IP)。
- 在公司/学校的局域网中,希望虚拟机能像普通电脑一样访问内部资源。
NAT 模式(Network Address Translation,网络地址转换)
🌟 特点
- 虚拟机可以访问外网,但外网无法直接访问虚拟机(VMware 充当 NAT 路由器)。
- 虚拟机的 IP 由 VMware 自己的 DHCP 服务器分配,通常是
192.168.XXX.XXX,与物理机不同网段。 - 所有虚拟机共享物理机的 IP 地址访问外网,就像一台设备连接路由器一样。
📌 适用场景
✅ 适用于只需要访问外网,但不希望虚拟机被外部访问的情况,例如:
- 在虚拟机上安装和测试软件,需要联网但不需要其他设备访问它。
- 适用于公司/学校等有严格网络限制的环境,防止虚拟机暴露在局域网中。
仅主机模式(Host-Only)
🌟 特点
- 虚拟机只能与物理机通信,无法访问外网。
- 虚拟机 IP 由 VMware 的 DHCP 服务器分配,通常在
192.168.56.XXX(VMnet1)。 - 与物理机建立一个“私有局域网”,其他外部设备无法访问虚拟机。
- 适用于封闭式环境,如软件开发和测试。
📌 适用场景
✅ 适用于不需要互联网,只需要与物理机通信的情况,例如:
- 测试本地网络服务,如数据库、Web 服务器等。
- 多台虚拟机 之间需要通信,但不希望它们访问互联网。
- 搭建离线环境(如模拟内部企业网络)。
安装vmtools
- 介绍
- vmtools可以让我们在windos下更好地管理VMware虚拟机
- 可以设置windows和centOS的共享文件夹,即让实体机和虚拟机可以访问相同的文件夹。
- 安装步骤
安装VMware Tools需要有gcc。我们在安装虚拟机时若选择了安装“开发工具”就会有gcc,如果没选择就需要先自行安装gcc。
- 打开VMware,进入centOS,点击VMware上方菜单栏中的”虚拟机(M)“选项,点击”重新安装VMware Tools“。
1.1 此处如果”重新安装VMware Tools“按钮是灰色的,无法点击。则先关闭虚拟机,然后点击””编辑虚拟机设置”。
日常不需要使用虚拟机时,可以选择“挂起客户机”,而不用关机,下次开启虚拟机时会和挂起前的虚拟机状态一样
1.2 在虚拟机设置中选择CD/DVD(IDE)选项,然后选择“使用物理驱动器”。重新启动虚拟机,使用root用户进行登录,重新安装VMware Tools。
- 重新安装VMware Tools后,出现下面的光盘。
- 双击打开该光盘后,会得到下面的几个文件。
- 将图片中第三个,以.tar.gz结尾的文件右击复制,然后粘贴到桌面。
- 在桌面上单击鼠标右键,点击“Open Terminal”,打开一个终端。
- 然后依次输入以下命令(没输入一条命令就按一次回车)。我们移动到Desktop文件夹下,可以看到我们刚刚复制到桌面的文件。
1 | [root@ryan ~]# ls |
[root@ryan ~]# 解析:
root:用户名
ryan:计算机名
~:表示当前在home目录下,即该位置放的是目录名
#:输入命令提示符,即在#号后面,是用户输入的命令行
Linux 命令行(Command Line Interface,CLI)是用户与 Linux 操作系统交互的重要方式,主要通过 终端(Terminal) 或 Shell 运行命令来管理系统、处理文件、执行程序等。
命令ls:显示当前目录下有哪些文件夹或文件
命令cd:进入到指定的文件夹中
- 输入以下命令解压缩该文件。
1 | [root@ryan Desktop]# tar zxvf VMwareTools-10.3.23-16594550.tar.gz |
文件名很长,我们可以先输入
VM两个字母,然后按tab键,就会自动补全文件名。
- 解压缩后输入
ls,可以发现多了一个文件夹。
1 | [root@ryan Desktop]# ls |
- 使用cd命令进入该文件夹,文件名补全方式如之前的操作一致。
1 | [root@ryan Desktop]# cd vmware-tools-distrib/ |
- 执行
vmware-install.pl这个文件(使用了root用户登录可使用下面的命令进行执行)
1 | [root@ryan vmware-tools-distrib]# ./vmware-install.pl |
没有使用root用户登录的可使用下面的命令进行执行:
1 | [root@ryan vmware-tools-distrib]# sudo ./vmware-install.pl |
使用sudo代表使用管理员权限进行操作,回车后会需要输入密码,直接在键盘上输入密码即可,密码在终端上是不显示的,输入完密码后点击回车即可。
- 输入完命令后,下面所有操作都直接回车,直到出现最后一个选项
Would you like to recover the wasted disk space by uninstalling VMware Tools at this time? (yes/no) [yes],这里要输入NO,然后回车。(下面截取的是执行成功后的一小部分片段)
1 | VMware Tools installed on top of open-vm-tools has not added anything of |
出现
--the VMware team,就表示安装成功了
- 安装成功后,刚才桌面上的两个文件就可以删掉了。
设置共享文件夹
先在实体机创建一个文件夹。在该文件夹中随便创建一个文件。
回到VMware,鼠标右键虚拟机,点击设置。
- 进入设置选项卡后点击上方的“选项”。进入“选项”卡界面,点击“共享文件夹”,选择“总是启用”,然后在下方的“文件夹”选项中点击添加,将刚才在实体机创建的文件夹添加进来,最后点击确定。
- 在虚拟机中查看该文件夹。进入虚拟机,打开文件管理器。点击“Other Locations”后,点击”Computer”。
- 进入后,点击”mnt”文件夹,进入后点击”hgfs”文件夹,进入后就能看到我们共享的文件夹了。
windows和虚拟机centOS可以通过创建共享文件夹来实现文件共享,但是在实际开发中,文件的上传下载是需要使用远程方式来实现的。
三、Linux的目录结构
- 基本介绍
Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录
"/",然后在此目录下再创建其他的目录。Linux中经典的一句话:在Linux中,一切皆文件。
Linux文件系统层次结构图:

Linux目录结构详解
- /bin (/ust/bin、/usr/local/bin):是binary的缩写,这个目录存放着最常用的命令。
- /sbin(/usr/sbin、/usr/local/sbin):s就是super user,这个目录存放的是系统管理员使用的系统管理程序。
- /home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号名命名的。如下,进入到home目录下使用
ls命令进行查看,其中ryantwo就是我安装centOS时配置的普通用户的用户名。
1 | [root@ryan home]# ls |
/root:该目录为系统管理员,也称为超级权限者的用户主目录。
/lib:系统开机所需要的最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:(这个在上方的图片中没有,因为这个是一个隐藏文件,在Linux中的根目录下是存在的)这个目录一般情况下是空的,当系统非法关机时,这里就存放了一些文件。
/etc:所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库,my.conf会存放在该目录下
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。
/boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc:这个目录是一个虚拟目录,它是系统内存的映射,访问这个目录来获取系统信息(不要随意尝试更改该目录中的内容)
/srv:service缩写,该目录存放一些服务启动后需要提取的数据。(不要随意尝试更改该目录中的内容)
/sys:这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统
sysfs。(不要随意尝试更改该目录中的内容)/tmp:这个目录用来存放一些临时文件
/dev:类似于Windows的设备管理器,把所有的硬件用文件的形式存储
/media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别到后,Linux会把识别到的设备挂载到该目录下。
例如在安装有Windows系统的的电脑上插入一个U盘,我们可以在文件资源管理器中发现多了一个该U盘的盘符,而不是将该U盘放到已有的盘符如C盘、D盘中。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看其中的内容了。如之前创建的共享文件夹:E:\VM\share。
/opt:这是给主机额外安装软件所存放的目录。如要安装oracle数据库,可以先把安装包放到该目录下,然后再进行安装操作(这一般是约定俗成的操作)。默认为空。
/usr/local:这个是另一个给主机额外安装软件时该软件程序文件存放的目录。一般是通过编译源码方式安装的程序。
/var:这个目录中存放着再不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
/selinux:security-enhanced linux,(这个目录需要启用才能看到)SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作方式,可以自行设置。
四、Linux命令行概念
Linux 命令行(Command Line Interface,CLI) 是一种通过文本输入命令来操作系统的方式。相比图形界面(GUI),命令行提供了更强大的控制能力,适用于 服务器管理、自动化任务、开发、运维 等工作。
Linux命令大全(手册):Linux命令是非常多的,我们需要使用时可以进行查询
终端(Terminal)与 Shell
在 Linux 中,命令行是通过 终端(Terminal) 访问的,而 Shell 是解析用户命令的程序,常见的 Shell 包括:
- Bash(默认 Shell):大多数 Linux 发行版默认使用的 Shell。
- Zsh:功能强大的 Shell,支持自动补全、插件等。
- Fish:更易用的交互式 Shell。
- Sh:最基本的 Shell,功能较少。
你可以通过以下命令查看当前使用的 Shell:
1 | echo $SHELL |
如果返回:
1 | /bin/bash |
说明当前使用的是 Bash。
使用命令行要特别注意各参数之间的空格
五、远程登录到Linux服务器
为什么需要远程登录服务器
- 在实际开发中,Linux服务器是开发小组共享的
- 正式上线的项目是运行在公网的
- 因此程序员需要远程登录到Linux进行项目管理和开发
- 远程登录客户端有Xshell、Xftp等
使用Xshell远程连接Linux
- 在虚拟机中打开一个终端Terminal,然后输入
ifconfig来获取虚拟机的IP地址。
- 安装好Xshell并打开。
- 点击左上角的”文件“,然后点击”新建“。
- 填写名称,协议选择
SSH,主机就填写刚才得到的虚拟机的IP地址,端口号选择22,最后点击连接。
- 在弹出的SSH安全警告中选择”接受并保存“,接下来就输入登录账户名密码即可。
远程上传下载文件 - Xftp
- 介绍
Xftp是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用了Xftp以后,Windows用户能安全地在UNIX/Linux和Windows之间传输文件。
安装并运行Xftp。
点击左上角的”新建”,填写名称,主机填写虚拟机的IP地址,协议选择SFTP,端口号依旧是22,然后点击连接。
- 然后输入要登录的用户名和密码即可。
- 传输文件,右边Linux系统用鼠标点击进入要保存传输文件的目录下,然后在左边Windows中找到要传输的文件,鼠标右键该文件,点击第一个“传输”即可。
- 细节讨论:如何处理Xftp中文乱码问题。
- 打开Xftp,点击上方菜单栏中的“属性”。
- 在打开的属性弹窗中点击上方菜单栏的“选项”,将“编码”选项更改为“Unicode(UTF-8)”,最后点击”确定”即可。
六、 Vim 基本介绍
🔹 什么是 Vim?
Vim(Vi IMproved) 是 Vi 编辑器的增强版,(vi是所有Linux发行版默认的文本编辑器)是 Linux 和 macOS 上常用的 文本编辑器。它功能强大,支持 语法高亮、查找替换、多级撤销、插件扩展 等,适用于程序员和系统管理员。
1️⃣ Vim 的三种模式
Vim 主要有 三种模式:
| 模式 | 作用 | 进入方法 |
|---|---|---|
| 普通模式(Normal Mode) | 用于 浏览 和 操作文本 | 启动 Vim 或按 Esc |
| 插入模式(Insert Mode) | 用于 输入文本 | i / a / o |
| 命令模式(Command Mode) | 用于 保存、查找、替换等 | 在普通模式下按 : |
2️⃣ Vim 的基本操作
📌 启动 Vim
1 | [root@ryan home]# vim 文件名 |
- 如果文件已存在,Vim 会打开文件
- 如果文件不存在,Vim 会新建一个文件
📌 进入插入模式(编辑文本)
按以下键之一:
| 按键 | 作用 |
|---|---|
i |
在光标前插入 |
a |
在光标后插入 |
o |
在下一行插入新行 |
I |
在当前行行首插入 |
A |
在当前行行尾插入 |
📌 退出 Vim
| 命令 | 作用 |
|---|---|
:q |
退出(如果文件未修改) |
:q! |
强制退出(不保存) |
:w |
只保存,不退出 |
:wq 或 ZZ |
保存并退出 |
:x |
保存并退出(仅在修改过内容时保存) |
📌 在普通模式下移动光标
| 按键 | 作用 |
|---|---|
h |
左移 |
l |
右移 |
j |
下移 |
k |
上移 |
gg |
移动到文件首行 |
G |
移动到文件末行 |
nG |
移动到第 n 行 |
0 |
移动到行首 |
^ |
移动到行首(跳过空格) |
$ |
移动到行尾 |
📌 复制、粘贴、删除
| 按键 | 作用 |
|---|---|
yy |
复制当前行 |
p |
粘贴到光标后 |
dd |
删除当前行 |
x |
删除当前字符 |
dw |
删除一个单词 |
u |
撤销 |
Ctrl + r |
反撤销 |
📌 搜索与替换
| 命令 | 作用 |
|---|---|
/关键字 |
向下搜索 |
?关键字 |
向上搜索 |
n |
跳到下一个匹配项 |
N |
跳到上一个匹配项 |
:%s/旧/新/g |
替换文件中所有 旧 为 新 |
:n,m s/旧/新/g |
替换 n 到 m 行的 旧 为 新 |
3️⃣ Vim 配置(举例)
可以在 ~/.vimrc 中添加个性化配置:
1 | bash复制编辑set number " 显示行号 |
七、Linux开机、重启和用户登录注销
关机&重启命令
| 命令 | 执行结果 |
|---|---|
| shutdown -h now | 立刻进行关机 |
| shutdown -h 1 | 提示1分钟后关机 |
| shutdown -r now | 立刻重启计算机 |
| halt | 立刻进行关机 |
| reboot | 立刻重启计算机 |
| sync | 把内存的数据同步到磁盘 |
- 注意细节:
- 不管是重启系统还是关机,首先要运行sync命令,把内存中的数据写到磁盘中
- 目前的shutdown/reboot/halt等命令均在底层实现在关机前默认执行sync命令。(但小心驶得万年船,最好自己先执行一次)
用户登录和注销
- 基本介绍
- 登录时尽量少用root账户进行登录,因为它是系统管理员,拥有最高权限,避免操作失误。可以利用普通用户登录,登录后在用
su - 用户名命令来切换成系统管理员身份。 - 在终端下输入logout即可注销用户
- 使用细节
- logout注销指令在图形运行级别(即安装了图像界面的Linux)无效,在运行级别3(无图形界面)下有效。
- 运行级别的概念在之后进行介绍。
1 | [ryantwo@ryan ~]$ su - root // ryantwo普通用户-> 切换到root用户 |
这里有个小细节:普通用户输入命令前面的符号是
$,root用户输入命令前面的符号是#。
八、用户管理
基本介绍
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
添加用户
- 基本语法
1 | useradd 用户名 |
- 细节说明
- 当创建用户成功后,会自动的创建和用户名同名的家目录,默认放在/home/下。
- 也可以通过一下命令,给新创建的用户指定home目录。
- 创建用户后,用户的文件都放在其家目录下
1 | useradd -d 指定目录 新用户名 |
1 | [root@ryan home]# ls |
补充一条命令:pwd。显示当前目录的绝对路径。
指定或修改密码
- 基本语法
1 | passwd 用户名 |
1 | [root@ryan home]# passwd ryanthree // 给ryanthree用户指定密码 |
删除用户
- 基本语法(删除用户是需要root权限的)
1 | (1) userdel 用户名 // 表示删除指定的用户,但保留用户的家目录。(虽然保留了家目录,但是该用户已经不能在登录了) |
举例:
1 | [root@ryan home]# ls |
- 细节说明:是否应该保留家目录?
一般情况下,建议保留。毕竟在不确定该用户的工作内容是否依旧有用的情况下,最好保留下来。
查询用户信息指令
- 基本语法
1 | id 用户名 |
当用户不存在时,返回无此用户。
1 | [root@ryan home]# id root |
uid:表示user id,即用户id
gid:表示组groups id,即组id
groups:表示组,用户组
切换用户
- 介绍
在Linux中,如果当前用户的权限不足,可以通过su - 指令,切换到高权限用户,比如root用户。
- 基本语法
1 | su - 所要切换的用户名 |
1 | [root@ryan home]# ls |
- 细节说明
从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
当需要返回到原来用户时,使用
exit或者logout指令即可。
查看当前用户/登录用户
1 | (1) whoami:显示当前操作的用户名 |
1 | [root@ryan home]# whoami |
九、用户组
- 介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理。在 Linux 中,用户组(Group) 是用于组织和管理用户权限的一个重要机制。每个用户(User)可以属于一个或多个组(Group),用户组用于控制 文件权限、资源访问和管理多个用户 的权限。
新增组/添加组
1 | groupadd 组名 |
1 | [root@ryan home]# groupadd group01 |
删除组
1 | groupdel 组名 |
1 | [root@ryan home]# groupdel group01 |
增加用户时直接加上组
1 | useradd -g 用户组 用户名 |
1 | [root@ryan home]# groupadd group02 |
创建新用户时若没有指定用户组,那么系统会自动创建一个和用户名相同的用户组,并将该用户划分到该用户组中。
1 | [root@ryan home]# useradd ryanfour |
修改用户的组
1 | usermod -g 用户组 用户名 |
1 | [root@ryan home]# groupadd group01 |
用户和组相关文件
查看文件内容或编辑文件内容的命令在之后进行学习,目前可以通过图形界面下的Linux中的文件资源管理器进行查看。
- /etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- /etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group 文件
- 组(group)的配置文件,记录Linux包含的组的信息
- 每行的含义:组名:口令:组标识号:组内用户列表
十、Linux实用指令
指定运行级别
- 基本介绍:运行级别(Runlevel) 是 Linux 系统启动后进入的不同模式,控制系统的 服务、进程 和 多用户功能。不同的运行级别决定了系统是以 命令行模式、图形界面模式 还是 维护模式 启动。
| 运行级别 | 说明 |
|---|---|
| 0 | 关机 |
| 1 | 单用户模式【维护模式,可以帮助找回丢失密码,仅 root 可用】 |
| 2 | 多用户状态没有网络服务 |
| 3 | 命令行模式(CLI),多用户状态有网络服务 |
| 4 | 预留,通常未使用 |
| 5 | 图形界面模式(GUI) |
| 6 | 系统重启 |
常用运行级别是3和5,也可以指定默认运行级别
如何查看当前运行级别
不同的 Linux 发行版使用不同的命令:
🔹 在 SysVinit(CentOS 6 及更早版本)
1 | [root@ryan home]# runlevel |
示例输出:
1 | N 3 |
表示当前运行级别是 3(命令行模式)。
🔹 在 systemd(CentOS 7+、Ubuntu 16+)
1 | [root@ryan home]# systemctl get-default |
示例输出:
1 | multi-user.target |
表示当前是 **
multi-user.target**(相当于3)。表示当前是 **
graphical.target**(相当于5)。
修改运行级别
🔹 临时修改运行级别
(仅对当前会话有效,重启后恢复原状态)
在 SysVinit 系统
1 | [root@ryan home]# init 5 # 切换到图形模式 |
在 systemd 系统
1 | [root@ryan home]# systemctl isolate graphical.target # 切换到图形界面(GUI) |
🔹 永久修改运行级别
(修改后 重启生效)
在 SysVinit 系统
编辑 /etc/inittab 文件:
1 | [root@ryan home]# vim /etc/inittab |
找到类似以下内容:
1 | id:3:initdefault: |
修改 3 为 5(如果要进入 GUI)。
然后重启:
1 | [root@ryan home]# reboot |
在 systemd 系统
1 | [root@ryan home]# systemctl set-default graphical.target # 设置默认 GUI 模式 |
然后重启:
1 | [root@ryan home]# reboot |
十一、找回root密码
- 首先,启动系统,进入到开机界面,在界面中按”e“进入编辑界面。
- 进入编辑界面,使用键盘上的上下方向键,把光标向下移动,找到以”Linux16”开头内容所在的行,然后按左右方向键,将光标移动到该行的末尾,在该行的最后面输入:
init=/bin/sh(init前面要有一个空格)。
- 输入完成后,按快捷键:
Ctrl + x进入单用户模式。 - 然后在光标闪烁的位置输入:
mount -o remount,rw /(注意单词间的空格),输入后按回车。

- 在新的一行最后面输入:
passwd,完成后按回车。输入密码,然后再次确认密码即可。(密码长度最好在8位以上),密码修改成功后,会显示passwd......successfully的样式,说明密码修改成功。

- 接着在光标闪烁位置(最后一行中)输入:
touch /.autorelabel(注意touch后面有一个空格),输入后按回车。

- 接着在光标闪烁位置,输入:
exec /sbin/init(注意:exec后面有一个空格),输入完后按回车,等待系统自动修改密码(该过程时间会比较长,耐心等待即可),完成后系统会自动重启,新的密码就生效了。

- 重启后就可以使用新的密码进行登录,然后可以用之前学过的命令重新更改成别的密码。
1 | [root@ryan ~]# passwd root |
十二、帮助指令
man 指令
1 | man 命令或配置文件 |
man(manual)命令 是 Linux 的帮助文档系统,用于 查看 Linux 命令的详细说明,类似于一本 电子版手册。
1 | [root@ryan ~]# man ls |
输入
man ls后会进入到帮助文档里,按空格键可以向下翻一页,按q键退出文档。![]()
man常见快捷键
按键 作用 ↑ / ↓上下滚动 PageUp / PageDown上下翻页 Home / End跳到开头/结尾 /关键字向下搜索关键字 ?关键字向上搜索关键字 n跳到下一个搜索结果 N跳到上一个搜索结果 q退出 man
help 指令
1 | help 命令 // 获得shell内置命令的帮助信息 |
help是 Bash 内置命令,用于 查看 shell 内置命令(Built-in Commands)的帮助信息。它不像man那样适用于所有命令,而是 专门针对 shell 内置命令(如cd、echo、exit等)。
1 | [root@ryan ~]# help cd |
help和man的区别
| 特性 | help | man |
|---|---|---|
| 适用范围 | Bash 内置命令 | 所有 Linux 命令 |
| 使用方式 | help 命令名 |
man 命令名 |
| 文档类型 | 简要说明 | 完整手册 |
| 示例 | help exit |
man ls |
🔹 **如果命令是 shell 内置的,就用 help,否则用 man**。
🔹 如果不确定命令是否是内置的,可以用:
1 | type 命令名 |
示例:
1 | [root@ryan ~]# type cd |
输出:
1 | cd is a shell builtin |
表示 cd 是 shell 内置命令,可以用 help cd 查看帮助。
- 也可以使用第四章中提供的Linux命令大全进行查看。
十三、绝对路径和相对路径
在 Linux 文件系统中,路径用于指向文件或目录。路径有两种类型:
- 绝对路径(Absolute Path)
- 相对路径(Relative Path)
绝对路径(Absolute Path)
概念
绝对路径是 从根目录 / 开始 的完整路径,始终指向同一个文件或目录 无论当前在哪个位置。
特点
- 以
/开头 - 不受当前目录影响
- 始终指向唯一的文件/目录
示例
1 | [root@ryan ~]# cd /home/ryan/Documents # 切换到 /home/ryan/Documents |
上面 /home/ryan/Documents 和 /etc/passwd 都是绝对路径。
相对路径(Relative Path)
概念
相对路径是 相对于当前目录(pwd 命令显示的目录) 计算的路径。
特点
- 不以
/开头 - 依赖于当前目录
- 更简短,适合在脚本和命令行中使用
示例
假设当前目录是 /home/ryan:
1 | [root@ryan ~]# cd Documents # 进入 /home/ryan/Documents |
相对路径依赖于当前目录示例:
1 | [root@ryan ~]# ls |
其中:
Documents相当于/home/ryan/Documents./test.txt表示当前目录中的test.txt../file.txt表示上一级目录中的file.txt
. 和 .. 目录
在相对路径中,两个特殊符号:
.代表 当前目录..代表 上一级目录
示例
1 | [root@ryan ~]# ls . # 列出当前目录内容 |
十四、文件目录类
接下来使用的都是root用户!
pwd指令
- 功能:显示当前工作目录的绝对路径
- 语法:
1 | pwd |
- 应用案例:
1 | [root@ryan Documents]# pwd |
ls指令
- 功能:显示当前工作目录中的目录和文件
- 语法
1 | ls [选项] [目录或文件] |
- 常用选项
-a : 显示当前目录所有的文件和目录,包括隐藏的目录和文件
-l : 以列表的方式显示详细信息
- 应用实例:
1 | [root@ryan ~]# ls |
在Linux中,隐藏文件是以
.开头的,选项可以组合使用,如ls -al /root,表示按列详细显示/root目录下的文件和文件夹(包括隐藏文件)。快捷指令
ll:相当于ls -l,但在Ubuntu中ll:相当于ls -al
cd指令
- 功能:切换到指定的目录
- 语法:
1 | cd 绝对路径或相对路径 |
- 补充:
1 | [root@ryan ~]# cd ~ // 切换到当前用户的家目录下 |
- 应用案例:
1 | [root@ryan ~]# cd /mnt/hgfs/ |
mkdir指令
- 功能:用于创建目录
- 语法
1 | mkdir [选项] 目录名 |
- 常用选项
-p : 创建多级目录
- 应用案例:
1 | [root@ryan Documents]# ls // 当前目录下没有demo目录 |
rmdir指令
- 功能:删除空目录
- 语法
1 | rmdir [选项] 要删除的空目录名 |
补充:
rmdir删除的是空目录,如果该目录下有内容则无法删除。(那么该如何删除有内容的目录呢?接着往下学……)应用案例:
1 | [root@ryan Documents]# ls |
touch指令
- 功能:当不存在指定的文件时,创建空文件;当存在指定的文件时,更新该文件的创建或修改时间。
- 语法
1 | touch 文件名 // 创建单个文件 |
- 应用案例:
1 | [root@ryan Documents]# touch hello.txt |
cp指令
- 功能:将指定文件或目录复制到指定的目录下
- 语法
1 | cp [选项] 源文件 目标目录或目标文件 |
复制源文件到另一个目标文件时,若目标文件存在,则直接将源文件的内容复制到目标文件中,并且会使用源文件中的内容覆盖掉目标文件中的内容,覆盖后同样会更新文件的修改时间为当前系统时间;若目标文件不存在,则会默认先创建目标文件,再将源文件的内容复制到目标文件中。
- 常用选项
-i : 复制或者覆盖目标文件之前先询问用户(因为cp的特殊性,所以一般强制要求使用-i选项)
-r : 递归复制整个文件夹
- 应用案例:(起初的Downloads文件夹下没有任何文件)
1 | [root@ryan Documents]# ls |
rm指令
- 功能:删除指定文件或目录(删除后就无法还原了,Linux不存在回收站的概念)
- 语法
1 | rm [选项] 文件或目录 |
- 常用选项
-r : 递归删除整个文件夹
-i : 删除文件前先询问用户是否确定删除(因为rm的特殊性,所以一般强制要求使用-i选项)
-f : 强制删除指定文件或目录,不询问不提示
- 应用案例
1 | [root@ryan Downloads]# ls |
- 重要部分
Linux最危险的指令之一。**sudo rm -rf /:是一个极其危险*的命令,它会 删除 Linux 系统上的所有文件,可能导致系统彻底崩溃,无法恢复。
参数解析
1 | sudo rm -rf /* |
sudo(superuser do)提升权限,使普通用户可以执行 管理员权限 命令。rm(remove):用于删除文件或目录。-r(recursive):递归删除目录及其中的所有文件(即删除整个文件夹)。-f(force):强制删除,无需确认(即使文件有写保护)。/*/:Linux 的根目录,所有系统文件都在这个目录下(如/bin、/etc、/home)。*:匹配根目录下的所有文件和文件夹。
执行效果
- 如果以
root用户执行:- 整个系统所有文件都会被删除(包括
/bin、/etc、/home、usr等)。 - 系统核心文件被删除后,Linux 会彻底崩溃,无法开机。
- 除非有备份,否则无法恢复,甚至连
rm命令本身都会被删除。
- 整个系统所有文件都会被删除(包括
- 如果是普通用户执行:
- 只能删除当前用户有权限删除的文件,系统的核心文件可能无法删除。
🚨 千万不要随便尝试 sudo rm -rf /*! 🚨
mv指令
- 功能:移动文件/文件夹或者重命名文件/文件夹
- 语法
1 | mv 旧文件/文件夹名 新文件/文件夹名 // 重命名 |
- 应用案例
1 | [root@ryan test]# ls |
cat指令
- 功能:用于 显示文件内容,但无法翻页,适合查看短文件。
- 语法
1 | cat [选项] 文件名 |
1 | cat file1.txt file2.txt ... // 连接并显示多个文件 |
- 常用选项
-n : 显示行号
- 应用案例
1 | [ryan@ryan Documents]$ cat test1.txt |
- 使用细节:cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | command。
Linux管道命令
|管道(
|) 是 Linux Shell 中的一个强大特性,它用于 连接多个命令,让一个命令的输出成为另一个命令的输入。基本语法
1 command1 | command2 | command3 ...
command1产生输出
command2处理command1的输出
command3进一步处理…
more指令
功能: 支持分页查看文件内容,适用于大文件。
语法:
1 | more file.txt |
逐页显示
file.txt,如果文件很长,你可以滚动查看
主要操作
| 按键 | 作用 |
|---|---|
Space空格键 |
翻到下一页 |
Enter |
向下滚动一行 |
b |
返回上一页 |
| Ctrl + F | 向下滚动一页 |
q |
退出 more |
- 应用案例:
1 | [ryan@ryan Documents]$ more test1.txt |
less指令
功能:是
more的增强版,支持上下滚动,功能更强大。语法
1 | less file.txt |
主要操作
| 按键 | 作用 |
|---|---|
Space |
下一页 |
b |
上一页 |
↑ / ↓ |
向上/向下滚动 |
/关键字 |
搜索 关键字(按 n 跳到下一个匹配项) |
q |
退出 less |
cat vs more vs less
| 命令 | 适用场景 | 是否支持翻页 | 是否支持回滚 |
|---|---|---|---|
cat |
短文件 | ❌ 不能翻页 | ❌ 不能回滚 |
more |
中等大小文件 | ✅ 能翻页 | ❌ 不能回滚 |
less |
大文件 | ✅ 能翻页 | ✅ 能回滚 |
echo指令
功能:用于在终端打印字符串、变量值,或者格式化输出。
语法
1 | echo [选项] 输出的内容 |
- 应用案例:
(1)输出环境变量。如$PATH $HOSTNAME
1 | [ryan@ryan Documents]$ echo $PATH |
(2)输出指定的内容
1 | [ryan@ryan Documents]$ echo Hello,world |
head指令
- 功能:用于显示文件的开头部分,默认显示前 10 行。
- 语法
1 | head [选项] 文件名 |
- 常用选项
-n <行数> : 指定显示的行数
-c <字节数> : 指定显示的字节数
- 应用案例
(1)显示文件的前 10 行(默认行为):
1 | head filename.txt |
(2)显示文件的前 5 行:
1 | head -n 5 filename.txt |
(3)显示文件的前 100 个字节:
1 | head -c 100 filename.txt |
(4)结合管道使用,显示命令输出的前 10 行:
1 | ls -l | head |
tail指令
- 功能:用于显示文件的结尾部分,默认显示最后 10 行。
- 语法
1 | tail [选项] 文件名 |
- 常用选项
-n <行数>:指定显示的行数。-c <字节数>:指定显示的字节数。-f:实时跟踪文件内容的变化(常用于查看日志文件)。-F:与-f类似,但会重新打开文件(适合文件被轮转的情况)。
- 应用案例
(1)显示文件的最后 10 行(默认行为):
1 | tail filename.txt |
(2)显示文件的最后 5 行:
1 | tail -n 5 filename.txt |
(3)显示文件的最后 100 个字节:
1 | tail -c 100 filename.txt |
(4)实时跟踪文件内容的变化(常用于查看日志):
1 | tail -f /var/log/syslog |
(5)结合管道使用,显示命令输出的最后 10 行:
1 | ls -l | tail |
>指令 和 >>指令
>:输出重定向。覆盖文件(清空原内容后写入)
>>:追加。追加到文件(保留原内容,在末尾添加)
示例:>
(1)写入文件
1 | echo "Hello,world!" > file.txt |
原文件file.txt若不存在,则会先创建再重定向。
(2)覆盖原文件
1 | echo "New Content" > file.txt |
(3)将ls输出写入文件
1 | ls > list.txt |
示例:>>
(1)追加文本
1 | echo "First Line" > file.txt |
(2)追加ls命令的输出
1 | ls >> list.txt |
> vs >> 对比
| 符号 | 作用 | 是否清空文件 |
|---|---|---|
> |
覆盖 写入文件 | ✅ 是,先清空 |
>> |
追加 到文件 | ❌ 否,保留原内容 |
ln指令
- 功能:
ln命令用于 创建链接文件,链接分为:
(1)硬链接(Hard Link)
(2)符号链接(Symbolic Link,也叫软链接 Soft Link),类似于windows里的快捷方式,主要存放了链接其他文件的路径。
- 语法
1 | ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接) |
- 应用案例
1 | [ryan@ryan ~]$ ln -s / myroot |
myroot指向根目录
/,所以cd myroot,相当于cd / ,即进入根目录下。
删除软链接
1 | [ryan@ryan ~]$ ls |
history指令
- 功能:查看已经执行过的历史命令,也可以执行历史命令
- 语法
1 | history (功能描述:查看已经执行过的历史命令) |
3.应用案例
(1)显示所有的历史命令
1 | [ryan@ryan ~]$ history |
(2)显示最近使用过的5个指令
1 | [ryan@ryan ~]$ history 5 |
(3)执行历史编号为5的指令
1 | [ryan@ryan ~]$ !5 |
十五、使用组合命令
语法:
1 | 命令1 && 命令2 && ...... |
示例:
1 | cd ../Documents && ls -al // 进入到上一级目录下的Documents目录中并显示其中的内容 |
1 | [root@ryan Documents]# cd /root/Downloads/ && touch test.txt && ls -al |
十六、通配符
通配符用于匹配文件名或目录名,通常和 ls、cp、rm 等命令一起使用,能高效地操作多个文件。
\*(匹配任意多个字符)
* 代表 0 个或多个字符,可以匹配任意文件名。
示例
1 | ls *.txt |
匹配当前目录下所有 .txt 文件(如 file1.txt、test.txt)。
1 | ls demo* |
匹配以 demo 开头的所有文件(如 demo1.txt、demo_test.c)。
1 | rm * # 小心!删除所有文件 |
2. ?(匹配单个字符)
? 只匹配 任意 1 个字符。
示例
1 | ls file?.txt |
匹配 file1.txt、fileA.txt,但不匹配 file12.txt。
1 | ls ?.txt |
匹配单字符文件名(如 a.txt,但不匹配 ab.txt)。
3. [](匹配指定范围的字符)
[] 匹配 一组字符中的任意一个。
示例
1 | ls file[123].txt |
匹配 file1.txt、file2.txt、file3.txt,但不匹配 file4.txt。
1 | ls file[a-c].txt |
匹配 filea.txt、fileb.txt、filec.txt。
1 | ls file[!2].txt |
匹配 file1.txt、file3.txt,但不匹配 file2.txt(! 取反)。
4. {}(匹配多个字符串)
{} 用于匹配 多个特定的文件名模式,逗号 , 分隔。
示例
1 | ls file{1,3,5}.txt |
匹配 file1.txt、file3.txt、file5.txt。
1 | mv {file1,file2}.txt backup/ |
移动 file1.txt 和 file2.txt 到 backup/ 目录。
1 | touch {a,b,c}{1,2,3}.txt |
创建 a1.txt、a2.txt、a3.txt、b1.txt… c3.txt(共 9 个文件)。
5. ~(用户目录)
~ 代表当前用户的 home 目录(通常 /home/用户名)。
示例
1 | cd ~ |
回到用户的 home 目录(等同于 cd /home/yourname)。
1 | ls ~/Documents |
列出 Documents 目录下的文件。
6. . 和 ..(当前目录和上级目录)
.代表 当前目录..代表 上一级目录
示例
1 | cd . |
保持在当前目录(无变化)。
1 | cd .. |
进入上一级目录。
1 | mv file.txt ../ |
移动 file.txt 到上一级目录。
通配符总结
| 通配符 | 作用 | 示例 | 匹配 |
|---|---|---|---|
* |
0 个或多个字符 | ls *.txt |
所有 .txt 文件 |
? |
单个字符 | ls file?.txt |
file1.txt 但不匹配 file12.txt |
[] |
指定范围字符 | ls file[1-3].txt |
file1.txt、file2.txt |
{} |
多个匹配模式 | ls file{1,3,5}.txt |
file1.txt、file3.txt |
~ |
用户 home 目录 | cd ~/Downloads |
进入 Downloads 目录 |
. |
当前目录 | cd . |
仍在当前目录 |
.. |
上级目录 | cd .. |
进入上一级 |
实战技巧
批量删除
1 | rm *.log |
删除所有 .log 日志文件。
批量移动
1 | mv report[1-3].pdf backup/ |
移动 report1.pdf 到 report3.pdf 进 backup/ 目录。
查找特定类型文件
1 | ls *.{jpg,png,gif} |
列出所有图片文件。

