从零开始,成为Linux世界公民
从零开始,成为Linux世界公民 🐧

一、开篇:为何我们的数字生活离不开 Linux
你可能没亲手用过 Linux,但你每天都在和它打交道:你刷短视频的云服务器、家里的 WiFi 路由器、手里的安卓手机、玩的网游服务器、训练 AI 的超算集群,甚至高铁的调度系统、空间站的核心控制单元,跑的全是 Linux。
学 Linux 不是让你成为黑客,而是让你从数字世界的 “乘客”,变成能自己握方向盘的 “司机”。它不是遥不可及的天书,而是一套简单、透明、稳定的数字世界运行规则,学会它,你能真正掌控自己的设备,解锁服务器、开发、树莓派等无限可能。
二、三分钟构建 Linux 世界观
在动手之前,我们先用 3 句话搞懂 Linux 的核心架构,就像先看懂地图再出发:
- 内核:Linux 的核心,是直接和电脑硬件对话的 “地基”,管着 CPU、内存、硬盘所有资源,所有程序都要通过它和硬件打交道。
- 发行版:基于 Linux 内核打包好的完整系统,就像装修好的房子,带了桌面、软件、工具,不用你自己从零搭建。我们常说的 Ubuntu、Debian、CentOS、树莓派系统,都是发行版。
- Shell:你和内核对话的 “翻译官”。你输入的命令,由 Shell 翻译给内核执行,再把结果返回给你。
- 终端:就是你眼前的这个 “黑框框”,是你输入命令、看到结果的 “窗口”—— 很多新手会把终端和 Shell 搞混,简单说:终端是外壳,Shell 是里面真正干活的翻译官。
新手第一关:看懂终端提示符
打开终端后,我们会看到一行类似这样的文字,这就是提示符:
ubuntu@my-pc:~$
拆解:
ubuntu:当前登录的用户名my-pc:电脑的主机名~:当前所在的目录(~ 是当前用户家目录的简写,绝对路径是 /home/ubuntu)$:核心标识!$ 代表当前是普通用户,# 代表当前是 root 超级管理员用户(日常不要用 # 提示符操作)
记住:所有命令,都要在 $ 符号的后面输入,输完按回车执行。
立刻动手 1:看看你的翻译官是谁
在提示符后输入下面的命令,按回车:
echo $SHELL # 打印当前你正在使用的Shell程序
预期输出:大概率是/bin/bash 或者/bin/zsh 。这表示我们当前的命令翻译官是 Bash 或者 Zsh,它们是最主流的两款 Shell。
立刻动手 2:认识你的发行版
接着输入这条命令,看看目前正在用的系统信息:
cat /etc/os-release # 读取并打印系统发行版的配置文件
预期输出:会显示我们的系统名称(比如 Ubuntu)、版本号、ID 等信息。
立刻动手 3:Tab 补全
这是 Linux 的快捷便利操作,能帮我们避免绝大多数的拼写错误。现在输入cat /etc/os-re,不要输完,直接按Tab 键,你会发现系统自动帮我们补全了/etc/os-release的完整文件名。
记住这个习惯:任何命令、文件名、路径,输入前几个字母,按 Tab 键,系统会自动补全;按两次 Tab,会列出所有匹配的选项,减少一个字母一个字母敲,提高效率的同时避免敲错。
三、七大核心概念深度教学
接下来的七个概念,是 Linux 世界的底层逻辑。
概念 1:倒置的树 ——Linux 文件系统
核心比喻
Windows 的文件系统是好几片独立的小树林(C 盘、D 盘、E 盘),而 Linux 的文件系统,是一棵倒置的大树。所有的文件、文件夹、设备,都是这棵树的枝杈,而唯一的树根,就是/ (我们叫它 “根目录”),所有内容都从这里生长出来。
Linux 最核心的设计哲学:一切皆文件。不管是普通文档、文件夹、键盘鼠标、甚至正在运行的程序、网络接口,都被抽象成了文件,你可以用同一套读、写、管理的逻辑去操作它们,这就是 Linux 简洁、强大的核心原因。
这是这棵大树的核心主干,我们需要记牢,每一个目录都有它固定的用途,绝对不能乱改:
/ (根目录,整个大树的起点)
├── home # 用户的家,每个普通用户都有一个以自己用户名命名的文件夹,比如/home/ubuntu,只有自己能操作
├── etc # 系统和软件的配置文件所在地,所有系统级的设置都存在这里
├── var # 动态变化的文件,比如系统日志、网站数据、数据库文件
├── tmp # 临时文件,系统重启后会自动清空,不要放重要文件
├── usr # 系统软件、用户安装的软件都在这里,相当于Windows的Program Files
├── dev # 设备文件,你的硬盘、键盘、鼠标都在这里,比如/dev/sda就是你的第一块硬盘
├── proc # 虚拟文件系统,存放当前系统运行的进程、内核信息,都是实时生成的,关机就消失
└── sys # 虚拟文件系统,和硬件设备直接相关的内核信息,同样是实时生成的
核心命令组
1. 我在哪?—— pwd
pwd # 打印当前工作目录的绝对路径
预期输出:比如/home/ubuntu ,这就是你当前的位置,默认打开终端,你都会在自己的家目录里。
2. 这里有什么?—— ls
ls 是 Linux 里最常用的命令,相当于你打开文件夹,看看里面有什么东西,我们用多个变体演示它的用法:
ls / # 查看根目录的内容
ls -l # 以列表形式,显示文件/文件夹的详细信息(权限、所有者、大小、修改时间)
ls -a # 显示所有文件,包括以.开头的隐藏文件(Linux里,文件名开头加.就是隐藏文件)
ls -lh # -h参数把文件大小转换成人类可读的格式(KB/MB/GB),不用看一大串数字
ls -lhtr # 组合参数:按修改时间倒序排列,最新的文件在最下面,找日志、新文件超好用
3. 移动位置 —— cd
cd 就是 Change Directory,相当于你在大树的枝杈之间移动,从一个文件夹进入另一个。这里我们讲解下绝对路径和相对路径:
- 绝对路径:从根目录 / 开始的完整路径,比如
/home/ubuntu,不管你当前在哪,用绝对路径都能精准到达 - 相对路径:基于你当前所在目录的路径,比如你在 /home 目录,输入
cd ubuntu就能进入 /home/ubuntu,不用写完整路径

cd /home # 用绝对路径,进入根目录下的home文件夹
cd ubuntu # 用相对路径,进入当前目录下的ubuntu文件夹
cd ~ # 一键回到你的家目录,~就是家目录的简写
cd .. # 回到上一级目录,..就代表上一级文件夹,.代表当前目录
cd - # 回到你上一次所在的目录,相当于“返回上一页”,切换两个目录超方便
💡 冷知识:Linux 的 cd 命令,是少数不会输出任何内容的命令 —— 没有消息就是好消息,只要没报错,就说明你移动成功了,记得用 pwd 随时验证你的位置。
4. 这是什么文件?—— file
Linux 不靠后缀名判断文件类型,哪怕你把一张图片改成.txt 后缀,它还是一张图片。file 命令能告诉你一个文件的真实身份,不会被后缀名骗到:
file /etc/os-release # 查看这个文件的真实类型
预期输出:会告诉你这是一个 ASCII 文本文件,而不是靠后缀名判断。
5. 通配符
通配符是 Linux 命令行的效率神器,能帮你批量匹配文件,最常用的有两个:
*:匹配任意多个字符(包括 0 个)?:匹配单个字符
ls *.txt # 列出当前目录下所有.txt结尾的文件
ls test?.* # 列出test开头、后面跟1个字符的所有文件,比如test1.txt、test2.jpg
6. “一切皆文件” 实操验证
# 1. 向空设备/dev/null写入内容,它会直接丢弃所有写入的数据,相当于系统的“垃圾桶”
echo "测试内容" > /dev/null # 不会有任何输出,内容被直接丢弃
# 2. 从随机数设备/dev/urandom读取随机数据,生成10个随机字符
head -c 10 /dev/urandom | base64
你看键盘、硬盘、随机数生成器,都被抽象成了文件,用同一套读写逻辑就能操作,这就是 Linux 的强大之处。
概念 2:对话的艺术 —— 终端日常命令与组合技
核心比喻
终端就是我们和系统的对话窗口,命令就是我们所说的句子,命令的标准结构是:命令 + 选项 + 参数,选项就是句子里的修饰语,参数就是我们要操作的对象。比如 ls是 “给我看看这里的东西”,ls -l /home 就是 “给我看看 /home 目录里,所有东西的详细清单”。
这一节,我们将学习日常多数场景都会用到的命令。
核心命令组
1. 前置须知:自助求生命令
# man:查看命令的官方手册,man是manual的缩写,最全、最权威,正所谓“有问题找那个男人 → man”
man ls # 查看ls命令的完整手册,按q退出,/关键词搜索内容
man 7 chmod # 查看chmod的详细原理文档,数字权限的完整说明
# --help:几乎所有命令都自带的帮助参数,快速查看常用参数,不用翻完整手册
ls --help
# whatis:快速查看一个命令是干什么的,一句话说明,不用看长篇大论
whatis grep
whatis find
2. 文件与文件夹操作
# mkdir:创建文件夹,-p参数递归创建多层目录,不会因为中间目录不存在而报错
mkdir test.txt
mkdir -p project/src/utils # 一次性创建project,以及里面的src、utils文件夹
# touch:创建空文件,或者修改已有文件的修改时间
touch README.md # 创建一个空的README.md文件
# cp:复制文件/文件夹,复制文件夹必须加-r(递归),保留文件属性加-a
cp README.md README_backup.md # 复制文件,做备份
cp -r project project_backup # 复制整个文件夹,包括里面的所有内容
cp -a project project_backup # 归档复制,保留文件的权限、所有者、修改时间,备份首选
# mv:移动文件/文件夹,也可以用来重命名(Linux没有专门的重命名命令,mv就是标准用法)
mv README.md project/ # 把README.md移动到project文件夹里
mv old_name.txt new_name.txt # 给文件重命名
# ln:创建链接,分为软链接和硬链接
# 软链接(-s):相当于Windows的快捷方式,指向原文件,原文件删了,软链接就失效了
ln -s /home/ubuntu/project/README.md ~/README快捷方式 # 创建软链接到桌面
# 硬链接:给原文件创建一个新的入口,相当于同一个文件有多个名字,原文件删了,硬链接依然能访问
ln README.md README_hardlink # 创建硬链接
⚠️ 警示‼️:rm 命令是 Linux 里最危险的命令,没有之一!!!Linux 没有回收站,用 rm 删除的文件,几乎找不回来,没有后悔药。
# rm:删除文件/文件夹
rm -i test.txt # -i参数,删除前会让你确认(y/n),新手一定要养成加-i的习惯
rm -r project # -r参数,递归删除文件夹以及里面的所有内容
rm -ir project # 递归删除文件夹,每个文件都要确认
# 绝对禁止执行:sudo rm -rf / !!!这条命令会删除你硬盘上的所有文件,系统直接报废
# 新手避坑:永远不要在不确定路径的时候执行sudo rm -rf,尤其是路径里带/的
💡 冷知识:前期新手可以安装 trash-cli 工具,用 trash 命令替代 rm,它会把文件放到系统回收站,删错了还能恢复,安装命令:
sudo apt install trash-cli,用法:trash test.txt,恢复用restore-trash。
3. 查看文件内容
# cat:读取并打印文件的全部内容,适合小文件,大文件会直接刷屏
cat README.md
cat -n README.md # -n参数,显示行号
# less:分页查看大文件,不会一次性把整个文件加载到内存,打开GB级的日志也不卡
less /var/log/syslog # 查看系统日志文件
# less核心操作:上下箭头翻行,空格翻页,b往回翻页,/关键词 搜索内容,n跳转到下一个匹配项,q退出
# head:查看文件的前N行,默认10行,用-n指定行数
head /var/log/syslog
head -n 20 /var/log/syslog # 查看前20行
# tail:查看文件的最后N行,默认10行,最常用的是-f参数,实时监控文件的新增内容
tail /var/log/syslog
tail -n 20 /var/log/syslog # 查看最后20行
tail -f /var/log/syslog # 实时刷新文件的新内容,按Ctrl+C退出,看日志、调试程序神器
4. 查找与过滤
# find:查找文件/文件夹,功能极其强大,按名称、类型、大小、时间查找
find ~ -name "*.md" # 在家目录里,查找所有后缀是.md的文件,-name区分大小写,-iname不区分
find project -type d # 在project文件夹里,只查找目录(文件夹),-type f只查找普通文件
find ~ -type f -size +100M # 在家目录里,查找大于100M的文件,-100M就是小于100M
find ~ -type f -mtime -7 # 在家目录里,查找7天内修改过的文件
# grep:在文件里搜索指定的文本内容,Linux里最常用的文本过滤工具
grep "Linux" README.md # 在README.md里搜索包含"Linux"的行
grep -i "linux" README.md # -i忽略大小写,Linux/linux都能搜到
grep -r "test" project/ # -r递归搜索,在project文件夹的所有文件里搜索"test"
grep -n "Linux" README.md # -n显示匹配行的行号
grep -v "注释" README.md # -v反向匹配,只显示不包含"注释"的行
5. 思维进阶:管道与重定向
这是 Linux 最核心的设计之一,学会后可不再局限于单个命令的简单功能,能自由拼接组合各类命令实现复杂操作、完成批量自动化任务:
- 管道
|:把前一个命令的标准输出,当成后一个命令的标准输入,就像工厂的流水线,一步一步处理数据,前一步的结果,直接给后一步加工。 - 重定向
> / >>:把命令的输出,写入到文件里,而不是打印在屏幕上。>是覆盖写入(会清空文件原来的内容),>>是追加写入(不会清空原来的内容,而是在末尾添加)。
组合示例:
# 管道:把ls -l的输出,传给grep,只筛选出.txt结尾的文件
ls -l | grep "\.txt$" # \.txt$是正则表达式,只匹配文件名结尾的.txt,不会匹配到其他位置的txt
# 管道:查看你最近执行的10条命令
history | tail -10
# 管道:统计家目录里有多少个.md文件
find ~ -name "*.md" | wc -l
# 重定向:把"Hello Linux"写入test.txt文件,文件不存在就创建,存在就覆盖
echo "Hello Linux" > test.txt
# 重定向:把"第二行内容"追加到test.txt的末尾,不会覆盖原来的内容
echo "第二行内容" >> test.txt
# 终极组合:查找家目录里所有的.md文件,筛选出包含"Linux"的行,统计行数,写入结果文件
find ~ -name "*.md" -type f | xargs grep -i "linux" | wc -l > linux_note_count.txt
6. 必备快捷键
| 快捷键 | 核心功能 |
|---|---|
| Ctrl+C | 中断当前终端正在运行的命令 |
| Ctrl+L | 清屏,相当于 clear 命令,屏幕满了一键清空,光标回到顶部 |
| Ctrl+A | 跳到当前命令行的开头,输错了不用一直按左箭头 |
| Ctrl+E | 跳到当前命令行的结尾 |
| Ctrl+U | 清空光标前面的所有内容,一键重输命令 |
| 上箭头 / 下箭头 | 调用之前执行过的历史命令,不用重复敲 |
| !! | 重复执行上一条命令,比如上一条命令忘加 sudo,直接输入 sudo !! 就能补全 |
概念 3:你家和我家 —— 用户、组与权限
核心比喻
Linux 是一个多人合租的公寓,每个用户都有自己的独立房间(家目录),有自己的钥匙,不能随便进别人的房间;公共区域有严格的门禁规则,不是谁都能改。这套规则,就是 Linux 的权限系统,也是它比 Windows 更安全的核心原因。
这里有三个核心角色,我们必须记牢,绝不能搞混:
- 普通用户:就是你,只能操作自己家目录里的文件、公共区域的可读文件,不能修改系统配置,不能动其他用户的东西,安全系数拉满,日常只用这个用户。
- root 用户:公寓的超级管理员,有全公寓所有房间的钥匙,能修改任何文件、执行任何操作,权力无限,风险也无限。
- sudo:临时借管理员的钥匙用一次,执行完命令就归还。只有被系统加入 sudo 组的用户,才能使用 sudo,日常需要管理员权限的操作,就可用它。
⚠️ 注意:日常使用绝对不要登录 root 用户!99% 的操作,普通用户都能完成,必须要管理员权限的时候,用 sudo 就够了。手滑在 root 下执行错误命令,很可能直接毁掉整个系统,没有挽回的余地。
核心命令组
1. 我是谁?—— whoami /id
whoami # 打印当前登录的用户名,忘记自己是谁的时候敲它
id # 打印你的用户ID(UID)、组ID(GID),以及你所属的所有用户组
核心知识点:UID=0 的用户就是 root,普通用户的 UID 一般从 1000 开始,系统用户的 UID 在 1000 以内。
2. 权限到底是什么?—— ls -l 详解
我们之前用过 ls -l,现在我们把它的每一列拆解开:
先执行命令,拿到典型输出:
ls -l /etc/os-release
典型输出:
lrwxr--r-- 1 root root 1318 5月 13 10:08 /etc/os-release
我们从左到右,一列一列讲:
| 列序号 | 内容示例 | 核心含义 |
|---|---|---|
| 第 1 位 | l | 文件类型:- = 普通文件,d = 目录,l = 软链接(快捷方式),c = 字符设备,b = 块设备 |
| 第 2-10 位 | rwxr–r– | 9 个权限位,3 个一组,分为「所有者、用户组、其他人」三部分,每一组都是 rwx 三个权限的组合 |
| 第 2 列 | 1 | 文件的硬链接数 |
| 第 3 列 | root | 文件的所有者(谁建的这个文件) |
| 第 4 列 | root | 文件的所属用户组(哪个组的用户能拥有对应权限) |
| 第 5 列 | 1318 | 文件大小(默认字节,加 - h 会转成人类可读格式) |
| 第 6-8 列 | 5 月 13 10:08 | 文件最后修改的时间 |
| 第 9 列 | /etc/os-release | 文件名 |
必懂关键点:rwx 对文件和目录的含义,完全不一样,我们用表格分别讲解:
| 权限 | 对普通文件的含义 | 对目录(文件夹)的含义 |
|---|---|---|
| r(读) | 可以读取文件的内容 | 可以列出目录里的文件列表(ls) |
| w(写) | 可以修改、删除文件的内容 | 可以在目录里创建、删除、重命名文件 |
| x(执行) | 可以把文件当成程序执行(脚本、软件) | 可以 cd 进入这个目录(这是核心!没有 x 权限,永远进不去这个目录) |
3. 修改权限 —— chmod
chmod 就是修改文件的权限,有两种用法:符号法和数字法。
符号法
用u代表所有者(user)、g 代表用户组(group)、o代表其他人(other)、a 代表所有人;用+添加权限,-移除权限,=直接覆盖设置权限。
chmod u+x test.sh # 给文件的所有者,添加执行(x)权限
chmod g-w test.txt # 给文件的所属组,去掉写(w)权限
chmod o=r test.txt # 给其他用户,设置只读(r)权限,其他权限全部去掉
chmod a+r test.txt # 给所有人,添加读(r)权限
数字法
核心规则:r=4,w=2,x=1,没有权限 = 0,每一组权限,就是三个数字的和。
- 7 = 4+2+1 = rwx(可读可写可执行)
- 6 = 4+2 = rw-(可读可写)
- 5 = 4+1 = r-x(可读可执行)
- 4 = r–(只读)
- 0 = —(无任何权限)
三个数字,从左到右,分别对应所有者、用户组、其他人的权限,下面列举些常用的标准权限:
chmod 755 test.sh # 所有者rwx,组和其他人r-x,最常用的脚本/可执行文件权限
chmod 644 test.txt # 所有者rw-,组和其他人r--,最常用的普通文件权限
chmod 600 test.txt # 只有所有者能读写rw-,其他人完全不能碰---,适合私密文件、密钥文件
chmod 700 ~/ # 家目录标准权限,只有你自己能进入、读写,其他人完全无法访问

4. 临时管理员权限 —— sudo
sudo 是super user do的简称,中文翻译为「超级用户执行」,它用于临时提升权限,执行完命令,权限就归还了。
cat /etc/shadow # 普通用户直接执行,权限拒绝
sudo cat /etc/shadow # 使用 sudo 临时提升权限,执行成功
# 1. 普通用户直接向系统保护目录写入文件:权限拒绝
echo "测试内容" >> /usr/local/sudo_demo.txt
# 2. (踩坑点)错误写法:加了 sudo 依然权限拒绝
# 核心原因:>> 重定向由普通用户 shell 执行,不受 sudo 提权影响
sudo echo "测试内容" >> /usr/local/sudo_demo.txt
# 3. 正确写法一:管道 + tee -a 追加写入
echo "测试内容" | sudo tee -a /usr/local/sudo_demo.txt
# 4. 正确写法二:sudo 拉起新 Shell,整句命令包含重定向一起提权执行
sudo sh -c 'echo "测试内容2" >> /usr/local/sudo_demo.txt'
# 5. 查看文件内容,验证是否写入成功
sudo cat /usr/local/sudo_demo.txt
第一次用 sudo,会提示你输入当前用户的密码,输入的时候屏幕不会显示任何内容,这是 Linux 的安全设计,完回车就行。
⚠️ 注意:永远不要用 sudo 执行你不了解的命令,避免使用 sudo su 或 sudo -i 长时间保持 root 会话,不要随意修改 /etc/ 目录下的系统配置文件,除非你明确知道后果。
5. 用户-全生命周期管理
Linux 所有用户信息存在 /etc/passwd,用户密码哈希存在 /etc/shadow,创建、删除、修改用户都需要管理员权限,使用sudo。
# 1. 创建新用户 adduser / useradd
# adduser 创建用户(全自动一步到位)
sudo adduser user1
执行后会出现交互式提示(按需求填写):
[sudo] password for xxx: 输入你当前用户的密码
Enter new UNIX password: 输入 user1 的密码(输入时屏幕不会显示)
Retype new UNIX password: 确认密码
Full name []: 直接回车(按需不填,不填直接回车)
Room number []: 直接回车
Work phone []: 直接回车
Home phone []: 直接回车
Other [ ]: 直接回车
Is the information correct? [Y/n] 输入 Y 回车
# useradd 创建用户(需手动配置)
# -m:自动创建家目录 /home/用户名;-s:指定默认shell为bash;-G:加入附加组
sudo useradd -m -s /bin/bash testuser
# 查看添加的新用户
cat /etc/passwd
# 2. 设置/修改用户密码 passwd
sudo passwd testuser # 给testuser设置密码,交互式输入,屏幕不显示
# 普通用户修改自己的密码(不用sudo,只能改自己的)
passwd
# 3. 修改用户属性(usermod = user modify)
# -d:指定新家目录 -m:移动原有家目录文件(两个参数配套用)
sudo usermod -d /home/new_user -m testuser # 迁移家目录到/home/new_user并移动文件
# -l:修改登录用户名(把 testuser 改名为 newuser1)
sudo usermod -l newuser1 testuser
# -s:修改用户默认Shell(改为zsh,默认是/bin/bash)
sudo usermod -s /bin/zsh newuser1
# 4. 删除用户(userdel = user delete)
# 仅删除用户,保留家目录和文件(安全)
sudo userdel newuser1
# -r:递归删除(彻底删除,谨慎使用)= 删除用户 + 家目录 + 所有相关文件
sudo userdel -r newuser1
6. 用户组-全生命周期管理
多个用户加入同一个组,可实现批量授权,比如开发组共用项目文件夹权限;组信息存放在 /etc/group。
# 1. 创建用户组
sudo groupadd dev # 创建 dev 开发组
# 查看添加的新用户组
cat /etc/group
# 2. 修改组名 groupmod
# -n = new name(新组名) 格式:sudo groupmod -n 新名字 旧名字
sudo groupmod -n developer dev # 把组名dev改为developer
# 3. 删除用户组 groupdel
# 仅能删除【空组】(组里没有用户时才能删)
sudo groupdel developer
# --- 重新创建组,演示用户加入/退出 ---
sudo groupadd dev
# 4. 将用户加入组(两种方法)
# 方法1:usermod 追加用户到组
# -a = append(追加,必加!不加会清空用户原有所有组)
# -G = 附加组(次要组)
sudo usermod -aG dev user1
# 方法2:gpasswd(专门管理组成员,更简单直观)
# -a = add(添加用户到组)
sudo gpasswd -a user1 dev
# -d = delete(从组中删除用户)
sudo gpasswd -d user1 dev
# 5. 查看用户所属的所有组(最常用)
groups user1
# 查看用户完整UID/GID信息(更详细)
id user1
7. 用户切换、登录与退出操作
日常多用户环境下,频繁切换账号执行操作,分为普通切换和完整环境切换两种用法,需要区分。
# 1. 普通切换用户
# 命令:su 用户名
# 作用:仅切换用户身份,不切换目录、不加载完整环境
# 场景:几乎不用,容易导致权限/环境错乱
su user1
# 2. 完整环境切换
# 命令:su - 用户名
# 作用:【完整模拟重新登录】
# - 自动进入目标用户的家目录(/home/xxx)
# - 加载该用户全部环境变量、权限、配置
# - 完全独立的运行环境
# 场景:测试sudo权限、切换用户办公、配置账户环境
su - user1
# 3. 退出当前用户,回到上一级用户
exit # 通用退出命令,所有终端都支持(最常用)
logout # 等效退出,仅登录式shell可用(su - 切换后可用)
# 重要规则:
# 切换了几层用户,就执行几次 exit,逐层退回,直到关闭终端
# 五、查看系统当前【所有在线登录用户】
who # 简洁版:只显示 用户名、终端、登录时间/地址
w # 详细版:显示用户 + 负载 + 正在执行的命令
实操要点:
- 从普通用户切其他普通用户 /root,都需要输入目标用户密码;
- root 用户切换任意普通用户,无需输入密码,权限无限制;
- 切换用户后所有操作权限跟随当前登录账号,退出即恢复原本账号权限。
8. 给普通用户开放 sudo 管理员权限
Ubuntu 默认sudo组拥有管理员权限,CentOS 是wheel组,把用户加入对应组即可:
# Ubuntu/Debian:加入sudo组
sudo usermod -aG sudo user1
# CentOS/RHEL:加入wheel组
sudo usermod -aG wheel user1
# 验证:切换用户后测试sudo
su - user1
sudo ls /root
⚠️ 生效条件:用户必须重新登录(注销重登 / 新开终端),权限才会加载。
9. 修改文件归属 —— chown / chgrp
chown 就是 change owner,修改文件的所有者和所属组,修改归属必须用 sudo 权限,因为这涉及到系统级的用户管理:
# 格式:sudo chown 所有者:所属组 文件名
sudo chown ubuntu:ubuntu test.txt # 把test.txt的所有者和所属组都改成ubuntu
sudo chown -R ubuntu:ubuntu project/ # -r递归修改,把project文件夹里所有内容的归属都改掉
chgrp 就是 change group,只修改所属组,比 chown 更直观,专门用来修改组:
# 修改文件的所属组为group1
sudo chgrp group1 test.txt
# 递归修改
sudo chgrp -R group1 project/
概念 4:应用商店与快递员 —— 软件包管理
核心比喻
Linux 的软件管理,你不用去网上找安装包、不用担心下到病毒、不需要手动点下一步安装,软件源就是官方认证的应用商店,里面有打包好的软件;包管理器就是快递员 ,帮你一键找软件、下载、安装、升级,还会自动帮你解决依赖(装这个软件必须先装的其他组件),全程仅靠命令搞定。
/etc/apt/sources.list 是你的软件源地址列表,相当于你用哪个应用商店,国内使用可以换成清华、阿里的镜像源,下载速度更快,不用修改也能正常用,但你要知道它的存在。下列讲解我们以 Debian/Ubuntu 系列的 apt 包管理器为例(CentOS系列则是 yum 包管理器)。
核心命令组
# 第一步:刷新应用商店的商品列表,安装/升级软件前必须先做!不然安装的是旧版本软件
sudo apt update
# 第二步:升级所有已安装的软件,到最新的稳定版本
sudo apt upgrade -y # -y参数自动确认,不用手动输y
# 搜索软件:找你想装的软件,不知道完整包名的时候用
apt search neofetch # 搜索名字里带neofetch的软件
# 查看软件详情:看软件的介绍、版本、依赖、大小,安装前先了解
apt show neofetch
# 安装软件:一键安装,自动解决所有依赖
sudo apt install neofetch -y
# 同时安装多个软件,空格隔开就行
sudo apt install neofetch cmatrix htop -y
# 卸载软件:只删除软件,保留配置文件,以后重装还能沿用配置
sudo apt remove neofetch
# 彻底卸载:删除软件+所有配置文件,完全清理干净
sudo apt purge neofetch
# 清理无用的软件包、安装缓存,释放硬盘空间
sudo apt autoremove -y # 删除不再需要的依赖包
sudo apt clean # 清空下载的安装包缓存
成就感实操:一键安装炫酷工具
我们来装两个有趣的工具,让你立刻感受到 Linux 的乐趣,瞬间有那味了:
- neofetch:一键显示你的系统信息 + 发行版 logo,截图、晒配置神器
sudo apt update && sudo apt install neofetch -y
neofetch
执行后,你就能看到炫酷的系统信息面板,包含系统版本、内核、CPU、内存、主题等所有信息。
- cmatrix:黑客帝国的代码雨效果,装 X 用的
sudo apt install cmatrix -y
cmatrix
执行后,终端就会出现滚动的绿色代码雨,按 q 退出,加-b参数可以显示加粗的字符。
💡 冷知识:apt 包管理器的全称是 Advanced Package Tool,诞生于 1998 年,比 Windows 的应用商店早了整整 14 年,这也是 Linux 用户从来不用 “找安装包、关捆绑软件” 的核心原因。
概念 5:文件快递员 —— 打包与压缩
核心比喻
打包压缩就像把一堆零散的文件,装进一个快递箱里,再用胶带封好、压缩体积,方便传输和备份。Linux 里最常用的工具是tar,它既能打包,也能配合不同的压缩算法进行压缩,就像一个万能的快递打包机。
Linux 里常见的压缩格式有三种,压缩率和速度各有不同:
.tar.gz:最常用的格式,压缩速度快,压缩率中等,兼容性最好.tar.bz2:压缩率比 gz 高,速度慢一点.tar.xz:压缩率最高,速度最慢,适合大文件压缩.zip:和 Windows 系统兼容的格式,方便跨系统传输
核心命令组
tar 命令的参数看起来多,但其实非常有规律,记住以下几个核心参数,基本就能搞定绝大多数打包压缩场景:
c:create,创建新的打包文件x:extract,解压打包文件v:verbose,显示详细过程,能看到正在打包 / 解压哪些文件f:file,指定打包 / 解压的文件名,这个参数必须放在最后,后面紧跟文件名z:使用 gzip 压缩算法(.tar.gz)j:使用 bzip2 压缩算法(.tar.bz2)J:使用 xz 压缩算法(.tar.xz)C:指定解压到哪个目录

1. 打包压缩
# 1. 最常用:打包并压缩成.tar.gz格式
tar -zcvf 输出文件名.tar.gz 要打包的文件/文件夹
# 示例:把test.txt文件打包成test.txt.tar.gz
tar -zcvf test.txt.tar.gz test.txt
# 2. 更高压缩率:打包成.tar.bz2格式
tar -jcvf test.txt.tar.bz2 test.txt
# 3. 最高压缩率:打包成.tar.xz格式
tar -Jcvf test.txt.tar.xz test.txt
# 4. 只打包不压缩:生成.tar文件
tar -cvf test.txt.tar test.txt
# 5. 打包多个文件/文件夹,空格隔开
tar -zcvf backup.tar.gz project/ test.txt
2. 解压文件
不管是什么格式的 tar 压缩包,用下面这条命令都能解压,不用记不同的参数:
tar -xvf 压缩包文件名
# 示例:解压test.txt.tar.gz
tar -xvf test.txt.tar.gz
# 同样适用于.tar.bz2、.tar.xz、.tar格式
tar -xvf my_note.tar.bz2
tar -xvf my_note.tar.xz
tar -xvf my_note.tar
3. 解压到指定目录
默认解压到当前目录,用-C参数可以指定解压到其他目录:
# 把test.txt.tar.gz解压到/tmp目录下
tar -xvf my_note.tar.gz -C /tmp/
4. 查看压缩包内容(不解压)
想看看压缩包里有什么文件,不用解压,直接用-t参数:
tar -tvf my_note.tar.gz
5. zip 格式(和 Windows 兼容)
如果需要和 Windows 用户传输文件,用 zip 格式最方便:
# 安装zip/unzip工具
sudo apt install zip unzip -y
# 压缩成zip格式
zip -r project.zip project/ # -r递归压缩文件夹
# 解压zip文件
unzip project.zip
# 解压到指定目录
unzip project.zip -d /tmp/
# 查看zip包内容
unzip -l project.zip
⚠️ 注意:tar 命令默认会保留文件的权限、所有者、修改时间等所有属性,这是它比 zip 更适合 Linux 系统备份的核心原因。zip 格式会丢失 Linux 的权限信息,只适合跨系统传输普通文件。
💡 冷知识:tar 命令的全称是 Tape Archive(磁带归档),最早是用来把文件备份到磁带上的,现在已经成为了 Linux 世界的标准打包工具,沿用了几十年。
概念 6:编写一个配置文件 —— 文本编辑
核心比喻
Linux 里,几乎所有软件、系统的设置,都存在纯文本的配置文件里。配置文件就像软件的 “喜好设置清单”,学会编辑文本文件,你就拿到了系统的定制权,不用再点图形界面的各种按钮,也能远程修改服务器的配置。
我们先学习简单易操作的 nano 编辑器,它没有复杂的模式,打开就能编辑,底部还有所有快捷键提示。同时,我们也要学习你 vim 的基本操作,因为绝大多数服务器只有 vim 编辑器。
核心操作教学
1. nano 编辑器
# 打开/创建一个文件,文件不存在就会自动创建
nano my_first_config.conf
打开后,我们就可以直接编辑内容了,底部的^ 就是 Ctrl 键,以下是核心快捷键:
| 快捷键 | 核心功能 |
|---|---|
| Ctrl+O | 保存文件(Write Out),按回车确认文件名 |
| Ctrl+X | 退出编辑器,没保存会提示你是否保存 |
| Ctrl+K | 剪切当前整行 |
| Ctrl+U | 粘贴刚才剪切的内容 |
| Ctrl+W | 搜索内容 |
| Ctrl+\ | 查找并替换 |
亲手完成任务:
- 执行
nano ~/.myapprc,打开你的第一个配置文件(.开头的是隐藏配置文件,放在家目录里) - 写入两行配置:
# 我的第一个Linux配置文件
name=Linux001
version=1.0
enable=yes
- 按
Ctrl+O,回车确认保存,再按Ctrl+X退出 - 执行
cat ~/.myapprc,查看你写的配置文件,这就是 Linux 系统的核心操作 —— 编辑配置文件,后续修改任何软件的配置,都是这个逻辑。
2. vim 编辑器
# 打开/创建文件
vim test.txt
vim 有两种核心模式:
- 命令模式:打开 vim 默认进入的模式,不能打字编辑,只能执行命令、保存、退出
- 插入模式:可以正常打字编辑内容的模式
生存级 4 步操作,基本步骤逻辑:
- 打开 vim 后,按
i键,进入插入模式,底部会显示-- INSERT --,这时你就可以正常打字编辑了。 - 编辑完后,按
Esc键,回到命令模式,底部的-- INSERT --会消失。 - 在命令模式下,输入
:wq,按回车,就是保存并退出(w=write 写入,q=quit 退出)。 - 如果编辑错了,不想保存,输入
:q!,按回车,就是强制不保存退出,不会修改原文件。
退出 / 保存命令(命令行模式,先按 :):
| 命令 | 作用 |
|---|---|
:q |
正常退出(文件没改动才能退) |
:q! |
强制退出,不保存(改了内容也直接放弃) |
:w |
只保存,不退出 |
:wq |
保存并退出(最常用) |
:x |
保存并退出,和 wq 一样 |
常用功能按键:
| 按键 | 功能 | 详细说明 |
|---|---|---|
x |
删除光标所在单个字符 | 按一次删一个,相当于删除键 |
dd |
删除光标所在整行 | 最常用,删一整行 |
ndd |
向下删除 n 行 | 例:3dd 删除当前行 + 下面 2 行,共 3 行 |
yy |
复制光标所在整行 | 复制一整行到剪贴板 |
nyy |
向下复制 n 行 | 例:2yy 复制当前行 + 下一行 |
p |
粘贴到光标下一行 | 小写 p,最常用 |
P |
粘贴到光标上一行 | 大写 P |
后续想深入学习,终端输入vimtutor ,就能打开官方的 vim 教程,你可以跟着学习使用 vim 的进阶功能。
概念 7:看门狗与任务管理器 —— 进程初识
核心比喻
每个运行的程序,都是一个进程,就像你安排的一个个工作任务。每个进程都有唯一的身份证号 ——PID,系统靠 PID 管理所有进程,哪怕两个程序名字一模一样,PID 也是唯一的。top 就是实时监控所有进程的看板,能看到谁占了太多 CPU 和内存,谁在休息,谁卡死了。
核心命令组
# ps aux:列出系统当前所有运行的进程,最常用的进程查看命令,工业界标准用法
ps aux
# 核心列说明:USER=运行进程的用户,PID=进程号,%CPU=CPU占用率,%MEM=内存占用率,COMMAND=进程名
# 常用组合:ps aux | grep 进程名,筛选你要找的进程
ps aux | grep neofetch
# top:实时监控进程的资源占用,相当于Linux的任务管理器
top
# 核心操作:按M按内存占用排序,按P按CPU占用排序,按1显示所有CPU核心的占用情况,按q退出
# 更友好的替代是htop,界面更直观,支持鼠标操作,安装命令:sudo apt install htop -y
# kill:结束进程,先温柔结束,不行再强制结束,绝对不要一上来就用-9
kill 1234 # 结束PID为1234的进程,温柔终止,会让程序保存数据、清理资源后再退出
kill -9 1234 # 强制结束进程,相当于直接拔电源,只有程序卡死、温柔终止无效的时候才用
# 按进程名结束进程,不用记PID
pkill sleep # 结束所有名字里带sleep的进程
killall sleep # 结束所有名为sleep的进程
# 前台与后台操作,新手必懂的免死金牌
Ctrl+C # 中断当前终端正在运行的命令,不管什么情况,按这个都能停掉
sleep 100 & # &符号,让命令在后台运行,不占用你的终端,你可以继续输入其他命令
jobs # 查看当前终端后台运行的所有任务,会显示任务号(比如[1])、运行状态、命令
kill %1 # 结束任务号为1的后台进程,不用记PID,%+任务号就能操作
fg %1 # 把后台任务号为1的进程,拉回前台运行
bg %1 # 把前台暂停的进程,放到后台继续运行
亲手演示一遍,彻底搞懂前后台:
# 1. 让系统后台休眠100秒
sleep 100 &
# 2. 查看后台任务,会显示[1]+ 运行中 sleep 100 &
jobs
# 3. 结束这个后台任务
kill %1
# 4. 再查看,任务已经结束了,会显示[1]+ 已终止 sleep 100
jobs
四、你的独立冒险 —— 综合任务挑战
恭喜你,已经学完了 Linux 的全部核心概念。现在,我们用一个 10 步的连贯任务,把所有知识融合起来,完成你的第一次独立 Linux 冒险。
任务目标:在家目录搭建一个完整的个人笔记项目,完成目录创建、内容编写、权限设置、日志监控、内容检索、打包备份全流程,把你学到的所有命令都用一遍。
| 步骤 | 操作命令(带注释) | 预期结果与验证方法 |
|---|---|---|
| 1 | pwd |
确认当前在家目录,输出/home/你的用户名,如果不在,执行cd ~回到家目录 |
| 2 | mkdir -p my_note/{src,docs,log,config,backup} |
一次性创建 my_note 文件夹,以及 5 个子文件夹,用ls my_note验证,能看到 5 个子文件夹 |
| 3 | cd my_note && ls |
进入项目目录,确认 5 个子文件夹都存在,没有报错,用pwd验证当前路径是/home/你的用户名/my_note |
| 4 | nano docs/first_note.md |
打开编辑器,写入你的 Linux 学习笔记,比如 “今天我学会了 Linux 的文件系统、权限、管道命令”,Ctrl+O 保存,Ctrl+X 退出 |
| 5 | ls -l docs/first_note.md |
查看笔记文件的详细信息,确认所有者是你,权限默认是 664 |
| 6 | touch log/run.log && tail -f log/run.log |
创建日志文件,实时监控日志内容;新开一个终端,输入echo "xxxx-xx-xx 笔记创建完成" >> ~/my_note/log/run.log ,就能看到原终端实时刷新内容,按 Ctrl+C 退出 |
| 7 | grep -i "linux" docs/first_note.md |
搜索笔记里所有包含 Linux 的行,验证你的内容,能看到你写的笔记内容 |
| 8 | chmod 600 docs/first_note.md |
给笔记设置私密权限,只有你能读写,用 ls -l docs/first_note.md 验证,权限变成-rw------- |
| 9 | neofetch > README.md && cat README.md |
把系统信息写入项目 README 文件,查看内容是否正确,能看到完整的系统信息 |
| 10 | tar -zcvf backup/my_note_backup.tar.gz ./* |
把整个项目打包压缩,放到 backup 文件夹,完成备份;用ls backup/验证,能看到压缩包文件 |
五、求生指南 —— 高频错误与解救
1. 命令未找到:command not found
原因:① 命令拼写错了(Linux 大小写敏感,Ls 和 ls 是两个完全不同的命令);② 这个软件没安装;③ 命令所在的路径不在系统的环境变量 PATH 里。
解决方法:
- 先检查拼写,善用 Tab 键补全命令,不要一个字母一个字母的敲;
- 如果是第三方命令,用
apt search 命令名搜索对应的软件包,安装后再用; - 用
echo $PATH查看系统的命令路径,确认你的命令所在的目录在 PATH 里,临时添加用export PATH=$PATH:/你的命令路径。
2. 权限拒绝:Permission denied
错误做法:一看到权限拒绝,就直接加 sudo,这是新手最容易踩的坑,会留下巨大的安全隐患!
正确解决方法:
- 先执行
ls -l 文件名,看清楚权限:是你没有读 / 写 / 执行权限,还是文件的所有者不是你; - 如果是执行脚本提示拒绝,先给文件加执行权限
chmod u+x 文件名,而不是直接 sudo; - 如果是文件所有者不对,用 sudo chown 修改归属,而不是直接 sudo;
- 只有修改系统文件、安装软件这种必须管理员权限的操作,才用 sudo。
3. 没有这个文件或目录:No such file or directory
原因:① 文件名 / 路径拼写错了;② 你当前所在的目录不对,用了相对路径;③ 你要操作的文件真的不存在。
解决方法:
- 敲命令前,先
pwd确认自己在哪,再ls看当前目录里有没有你要操作的文件; - 善用 Tab 键补全路径,输入文件名的前几个字母,按 Tab,系统会自动帮你补全,不会打错;
- 不确定路径的时候,用绝对路径(从 / 开头的完整路径)。
4. 不小心删错了文件
核心前提:Linux 默认没有回收站,rm 删除的文件,几乎无法恢复,没有后悔药。
预防与解决:
- 养成用
rm -i的习惯,每次删除前都会让你确认,避免手滑; - 绝对不要用
sudo rm -rf加任何不确定的路径,尤其是带/的路径; - 新手建议用 trash-cli 替代 rm,把文件放到回收站,删错了能恢复;
- 重要文件一定要先备份,再操作,这是 Linux 用户的生存法则。
5. 在错误的目录执行了危险命令
典型场景:你想删项目里的 tmp 文件夹,结果在根目录执行了rm -rf tmp ,直接删掉了系统的临时目录,系统出问题。
解决方法:
- 敲任何带
rm、mv、chmod -R的危险命令前,先敲pwd确认自己在哪,再ls看一下要操作的文件 / 目录对不对; - 养成 “先看路径,再敲命令” 的习惯,不要复制网上的命令直接执行,先看懂每一个参数的含义;
- 绝对不要在根目录 / 下执行任何递归删除、递归修改权限的命令。
6. 被困在 vim 里,不知道怎么退出
新手高频噩梦:不小心打开了 vim,怎么打字都没反应,也不知道怎么退出,只能关掉终端。
解决方法:
- 按
Esc键,确保回到命令模式; - 输入
:q!,按回车,强制不保存退出,就能出来; - 如果想保存退出,输入
:wq,按回车。
7. 终端卡死了,输入什么都没反应
原因:可能不小心按了 Ctrl+S,触发了终端的流量控制,锁定了屏幕输出,不是真的卡死了。
解决方法:按Ctrl+Q ,就能解锁终端,恢复正常,不用关掉终端重开。
8. 命令执行了一半,想停下来,不知道怎么办
两大免死金牌:
- 不管什么时候,慌了、不知道当前命令在干嘛、程序卡死了,按Ctrl+C ,中断当前所有操作;
- 遇到不会的命令,先man 命令名或者命令 --help ,查看官方文档。
六、你已经是一名 Linux 新手冒险家了
跟着教程,亲手敲试所用命令,从认识 Linux 的世界观开始,我们学会了文件系统的树形结构,看懂了权限规则,能操作文件、编辑配置、安装软件、管理进程,更重要的是,建立起 Linux 的核心心智模型,学会了用管道和重定向组合命令,学会了自己查文档解决问题。走到这里,你就已经掌握了 Linux 日常的基本操作,自此入门圆满,以此为基石,便可从容应对后续更深层次的 Linux 学习与实战探索。
下一步进阶路径
-
交互式闯关学习:OverTheWire Bandit 游戏
专门为新手设计的 SSH 闯关游戏,用你学到的 Linux 命令一关一关破解密码,边玩边学,完全免费。第一关直接在终端输入
ssh bandit0@bandit.labs.overthewire.org -p 2220,密码是bandit0,就能开始你的冒险。 -
学习资源:
-
必读的Linux系统与红帽RHCE认证免费自学书籍:《Linux就该这么学》,网址:https://www.linuxprobe.com/
-
免费分模块的 Linux 教程,从入门到进阶,覆盖所有核心知识点,网址:https://linuxjourney.com/
-
-
深入学习:Shell 脚本编程
当你熟练掌握基础命令后,可以学习 Shell 脚本,把重复的操作写成脚本,一键执行,实现自动化运维,这是 Linux 进阶的必经之路。
最后寄语:命令行从来不是冰冷的黑箱,而是你与机器之间,最直接、最真诚的对话方式。 愿你我在 Linux 的世界里,永远保持好奇,永远敢于探索。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)