一文入门Linux操作系统
一文入门 Linux 操作系统:从零基础到实战应用
本文适合刚接触 Linux 的新手阅读,从操作系统基础概念到常用命令、Shell 脚本、权限管理、软件安装,一篇带你打通 Linux 入门全链路。
一、为什么要学 Linux
Linux 是后端开发、运维、云计算等领域的"标配操作系统"。全球超过 90% 的服务器运行 Linux,Android 系统内核也是 Linux,可以说你每天的上网行为背后都有 Linux 的身影。
学习 Linux 的三大理由:
- 求职刚需 — 后端、运维、测试、大数据岗位几乎都要求掌握 Linux
- 生态强大 — 开源免费、稳定安全、社区活跃,服务器领域的绝对王者
- 底层理解 — 掌握 Linux 能帮你更深入地理解操作系统原理
二、Linux 简介与发行版
2.1 什么是 Linux
Linux 是一套自由开放源代码的类 Unix 操作系统内核,由 Linus Torvalds 在 1991 年首次发布。严格来说,Linux 指的是操作系统内核(Kernel),而我们常说的 Linux 系统其实是"Linux 内核 + GNU 工具集"组成的完整操作系统。
2.2 常见发行版
Linux 有众多发行版(Distribution),它们基于同一个内核,但预装的软件和配置不同:
| 发行版 | 特点 | 适用场景 |
|---|---|---|
| Ubuntu | 易用、社区活跃、软件包丰富 | 桌面用户、新手入门 |
| CentOS / Rocky Linux | 稳定、免费、企业级 | 服务器、生产环境 |
| Debian | 极其稳定、软件包众多 | 服务器、嵌入式 |
| RedHat (RHEL) | 企业级、商业支持 | 大型企业生产环境 |
| Arch Linux | 滚动更新、高度可定制 | 进阶玩家 |
| Kali Linux | 预装安全工具 | 渗透测试、网络安全 |
新手推荐从 Ubuntu 或 CentOS 入手。
三、Linux 文件系统结构
Linux 的文件系统是一棵倒悬的树,所有文件都从 /(根目录)开始。
/
├── bin/ # 基础命令(二进制程序)
├── boot/ # 启动相关文件(内核、引导加载器)
├── dev/ # 设备文件(一切皆文件)
├── etc/ # 系统配置文件
├── home/ # 普通用户家目录
├── lib/ # 系统库文件
├── media/ # 可移动设备挂载点
├── mnt/ # 临时挂载点
├── opt/ # 可选软件包
├── proc/ # 进程信息(虚拟文件系统)
├── root/ # root 用户家目录
├── sbin/ # 系统管理命令(superuser bin)
├── srv/ # 服务相关数据
├── sys/ # 系统硬件信息(虚拟文件系统)
├── tmp/ # 临时文件
├── usr/ # 用户程序和数据
│ ├── bin/ # 用户命令
│ ├── sbin/ # 系统管理命令
│ ├── lib/ # 库文件
│ └── local/ # 本地安装的软件
└── var/ # 可变数据(日志、缓存等)
├── log/ # 日志文件
└── www/ # Web 服务数据
核心目录记忆口诀:
etc— 配置文件的大本营home— 普通用户的地盘root— 超级管理员的家var/log— 日志文件都在这
四、基础命令(必须掌握)
4.1 目录操作
pwd # 显示当前所在目录(print working directory)
cd /path # 切换目录(change directory)
cd ~ # 回到当前用户家目录
cd - # 回到上一次所在目录
cd .. # 回到上一级目录
ls # 列出当前目录内容
ls -l # 以详细列表形式显示
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 人性化显示文件大小(K/M/G)
mkdir dirname # 创建目录
mkdir -p a/b/c # 递归创建多级目录
rmdir dirname # 删除空目录
4.2 文件操作
touch filename # 创建空文件或修改时间戳
cat filename # 查看文件全部内容
more filename # 分页查看文件(向下翻)
less filename # 分页查看文件(上下翻,推荐)
head -n 20 filename # 查看文件前 20 行
tail -n 20 filename # 查看文件后 20 行
tail -f filename # 实时追踪文件新增内容(看日志必备)
cp src dest # 复制文件
cp -r src_dir dest_dir # 递归复制目录
mv src dest # 移动或重命名文件
rm filename # 删除文件
rm -r dirname # 删除目录及其内容
rm -rf dirname # 强制删除(危险!慎用)
find /path -name "*.txt" # 按名称查找文件
grep "keyword" file # 在文件中搜索关键字
wc -l file # 统计文件行数
4.3 压缩与解压
# tar 包(最常用)
tar -cvf archive.tar files # 打包(不压缩)
tar -xvf archive.tar # 解包
tar -czvf archive.tar.gz files # 打包并 gzip 压缩
tar -xzvf archive.tar.gz # 解压 gzip 包
tar -cjvf archive.tar.bz2 files # 打包并 bzip2 压缩
tar -xjvf archive.tar.bz2 # 解压 bzip2 包
# zip
zip archive.zip files # 压缩为 zip
unzip archive.zip # 解压 zip
4.4 系统信息
uname -a # 查看内核信息
hostname # 查看主机名
cat /etc/os-release # 查看系统发行版信息
date # 查看当前时间
uptime # 查看系统运行时间
free -h # 查看内存使用情况
df -h # 查看磁盘使用情况
du -sh /path # 查看目录占用大小
top # 实时查看进程和资源占用
ps aux # 查看所有进程
ps aux | grep nginx # 查找特定进程
kill PID # 结束进程
kill -9 PID # 强制结束进程
五、用户与权限管理
5.1 用户管理
Linux 是多用户操作系统,每个用户有独立的家目录和权限。
whoami # 查看当前用户名
su - username # 切换用户
sudo command # 以管理员身份执行命令
useradd username # 添加用户
passwd username # 设置/修改用户密码
userdel username # 删除用户
id username # 查看用户 UID、GID
5.2 用户组
groupadd groupname # 创建用户组
groupdel groupname # 删除用户组
usermod -g group user # 修改用户主组
usermod -aG group user # 将用户加入附加组
groups username # 查看用户所属组
5.3 权限详解
使用 ls -l 可以看到文件的权限信息:
-rw-r--r-- 1 root root 4096 Sep 1 10:00 test.txt
drwxr-xr-x 2 root root 4096 Sep 1 10:00 mydir
权限位解析(10 位):
| 第1位 | 第2-4位 | 第5-7位 | 第8-10位 |
|---|---|---|---|
| 文件类型 | 所有者权限 | 所属组权限 | 其他用户权限 |
- 普通文件 | r 读 | r 读 | r 读 |
d 目录 | w 写 | w 写 | w 写 |
l 链接 | x 执行 | x 执行 | x 执行 |
数字权限表示(r=4, w=2, x=1):
chmod 755 file # rwxr-xr-x(所有者全部权限,组和其他读+执行)
chmod 644 file # rw-r--r--(所有者读写,其他只读)
chmod +x file # 给所有用户添加执行权限
chmod u+x file # 只给所有者添加执行权限
chmod g-w file # 去掉组的写权限
chown user:group file # 修改文件所有者和所属组
chown -R user dir # 递归修改目录所有者
目录的 x 权限 表示能否进入该目录(
cd进去),所以目录一般都有 x 权限。
六、Vim 编辑器
Vim 是 Linux 上最强大的文本编辑器,虽然上手有一定门槛,但一旦熟练效率极高。
6.1 三种模式
命令模式(默认)
├── i / a / o → 插入模式
└── : → 底行模式
6.2 常用操作
命令模式 → 插入模式:
i— 在光标前插入a— 在光标后追加o— 在下方新开一行I— 行首插入A— 行尾插入O— 在上方新开一行
命令模式下的操作:
yy # 复制当前行
3yy # 复制 3 行
p # 粘贴
dd # 删除(剪切)当前行
3dd # 删除 3 行
u # 撤销
Ctrl + r # 重做
gg # 跳转到文件开头
G # 跳转到文件末尾
10G # 跳转到第 10 行
/keyword # 向下搜索关键字
?keyword # 向上搜索关键字
n # 下一个匹配
N # 上一个匹配
底行模式(按 : 进入):
:w # 保存
:q # 退出
:wq # 保存并退出
:x # 保存并退出(等同 wq)
:q! # 强制退出不保存
:set nu # 显示行号
:set nonu # 取消行号
:%s/old/new/g # 全局替换 old 为 new
:10,20s/old/new/g # 第10-20行替换
七、软件包管理
不同发行版使用不同的包管理器。
7.1 Debian / Ubuntu(apt)
sudo apt update # 更新软件源列表
sudo apt upgrade # 升级所有已安装软件
sudo apt install package # 安装软件
sudo apt remove package # 卸载软件(保留配置)
sudo apt purge package # 彻底卸载(删除配置)
sudo apt autoremove # 清理无用依赖
apt search keyword # 搜索软件包
apt show package # 查看软件包信息
7.2 CentOS / RHEL(yum / dnf)
sudo yum install package # 安装软件
sudo yum remove package # 卸载
sudo yum update # 升级所有软件
yum search keyword # 搜索
yum list installed # 列出已安装的包
yum info package # 查看详情
7.3 源码编译安装
# 三步曲
./configure # 配置(指定安装路径等)
make # 编译
make install # 安装
八、Shell 脚本入门
Shell 脚本就是把多条命令写在一个文件里批量执行,后缀名一般是 .sh。
8.1 第一个脚本
#!/bin/bash
# 这是注释,#! 叫 shebang,指定解释器
echo "Hello, Linux!"
echo "当前日期是:$(date)"
运行方式:
chmod +x test.sh # 添加执行权限
./test.sh # 执行
# 或者
bash test.sh # 用 bash 解释器运行
8.2 变量
#!/bin/bash
# 定义变量(等号两边不能有空格!)
name="张三"
age=20
# 使用变量($变量名 或 ${变量名})
echo "姓名:$name"
echo "年龄:${age}岁"
# 只读变量
readonly PI=3.14
# 删除变量
unset age
# 特殊变量
echo "脚本名:$0"
echo "第一个参数:$1"
echo "参数个数:$#"
echo "所有参数:$@"
echo "上一条命令退出状态:$?"
8.3 条件判断
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 90 ]; then
echo "优秀"
elif [ $score -ge 80 ]; then
echo "良好"
elif [ $score -ge 60 ]; then
echo "及格"
else
echo "不及格"
fi
# 常见比较运算符:
# -eq 等于 -ne 不等于 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于
# 字符串:= 等于 != 不等于 -z 空串 -n 非空
# 文件:-f 是文件 -d 是目录 -e 存在 -r 可读 -w 可写 -x 可执行
8.4 循环
#!/bin/bash
# for 循环
for i in 1 2 3 4 5; do
echo "数字:$i"
done
# C 语言风格 for 循环
for ((i=1; i<=10; i++)); do
echo $i
done
# while 循环
n=1
while [ $n -le 5 ]; do
echo "第 $n 次"
n=$((n + 1))
done
# case 分支
read -p "请输入选项(1-3):" opt
case $opt in
1)
echo "你选了1"
;;
2)
echo "你选了2"
;;
3)
echo "你选了3"
;;
*)
echo "无效选项"
;;
esac
8.5 函数
#!/bin/bash
# 定义函数
greet() {
echo "你好,$1!"
return 0 # 返回值只能是 0-255
}
# 调用函数
greet "世界"
# 带返回值的函数
add() {
sum=$(( $1 + $2 ))
echo $sum
}
result=$(add 3 5)
echo "3 + 5 = $result"
九、网络与服务管理
9.1 网络命令
ip addr # 查看网络接口和 IP
ifconfig # 旧版查看 IP(需安装 net-tools)
ping baidu.com # 测试网络连通性
curl https://baidu.com # 发送 HTTP 请求
wget https://xxx.com/file.zip # 下载文件
netstat -tlnp # 查看端口监听(旧版)
ss -tlnp # 查看端口监听(新版)
telnet host port # 测试端口连通性
ssh user@host # 远程登录
scp file user@host:/path # 远程拷贝文件
9.2 服务管理(systemd)
现代 Linux 大多使用 systemd 管理服务:
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl status nginx # 查看服务状态
systemctl enable nginx # 设置开机自启
systemctl disable nginx # 取消开机自启
systemctl is-active nginx # 查看服务是否运行
9.3 防火墙
# CentOS (firewalld)
firewall-cmd --state # 查看防火墙状态
firewall-cmd --list-ports # 查看已开放端口
firewall-cmd --add-port=8080/tcp --permanent # 永久开放端口
firewall-cmd --reload # 重新加载规则
firewall-cmd --remove-port=8080/tcp --permanent
# Ubuntu (ufw)
ufw status
ufw allow 8080
ufw deny 8080
ufw enable
ufw disable
十、进程与日志
10.1 进程管理
ps aux # 查看所有进程
ps -ef | grep nginx # 查找 nginx 进程
top # 实时监控进程(按 q 退出)
htop # 增强版 top(需安装)
kill PID # 发送终止信号
kill -9 PID # 强制终止
pkill nginx # 按名称杀死进程
jobs # 查看后台任务
nohup command & # 后台运行,忽略挂起信号
10.2 日志管理
常见日志文件位置:
/var/log/messages # 系统日志(CentOS)
/var/log/syslog # 系统日志(Ubuntu)
/var/log/secure # 安全日志(登录、认证)
/var/log/auth.log # 认证日志(Ubuntu)
/var/log/dmesg # 内核启动日志
/var/log/nginx/ # Nginx 日志
/var/log/mysql/ # MySQL 日志
用 journalctl 查看 systemd 管理的服务日志:
journalctl -u nginx # 查看 nginx 服务日志
journalctl -u nginx -f # 实时跟踪
journalctl --since "1 hour ago" # 看最近一小时
十一、实战:部署一个简单的 Web 服务
用 Nginx 部署一个静态页面,走一遍完整流程:
# 1. 安装 Nginx
sudo apt install nginx # Ubuntu
# 或 sudo yum install nginx # CentOS
# 2. 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 3. 查看状态
sudo systemctl status nginx
# 4. 创建一个静态页面
sudo mkdir -p /var/www/mysite
echo "<h1>Hello, Linux!</h1>" | sudo tee /var/www/mysite/index.html
# 5. 配置 Nginx
sudo vim /etc/nginx/conf.d/mysite.conf
# 写入:
# server {
# listen 8080;
# root /var/www/mysite;
# index index.html;
# }
# 6. 检查配置并重载
sudo nginx -t
sudo systemctl reload nginx
# 7. 开放防火墙端口
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
# 8. 测试访问
curl http://localhost:8080
十二、学习路线建议
- 第一阶段:基础操作 — 掌握文件、目录、权限、Vim 等基础命令
- 第二阶段:Shell 脚本 — 学会写简单的自动化脚本
- 第三阶段:服务管理 — Nginx、MySQL、Redis 等常用服务的部署
- 第四阶段:运维进阶 — 监控、自动化部署、容器化(Docker)
推荐练习方式: 装一台虚拟机,每天用 Linux,坚持命令行操作,两周就能上手。
写在最后:Linux 的学习曲线前期稍陡,但一旦跨过基础门槛,你会发现它的设计哲学简洁而强大。不要试图一次记住所有命令,遇到问题查文档、多动手,慢慢就熟练了。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)