一文入门 Linux 操作系统:从零基础到实战应用

本文适合刚接触 Linux 的新手阅读,从操作系统基础概念到常用命令、Shell 脚本、权限管理、软件安装,一篇带你打通 Linux 入门全链路。


一、为什么要学 Linux

Linux 是后端开发、运维、云计算等领域的"标配操作系统"。全球超过 90% 的服务器运行 Linux,Android 系统内核也是 Linux,可以说你每天的上网行为背后都有 Linux 的身影。

学习 Linux 的三大理由:

  1. 求职刚需 — 后端、运维、测试、大数据岗位几乎都要求掌握 Linux
  2. 生态强大 — 开源免费、稳定安全、社区活跃,服务器领域的绝对王者
  3. 底层理解 — 掌握 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预装安全工具渗透测试、网络安全

新手推荐从 UbuntuCentOS 入手。


三、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位
文件类型所有者权限所属组权限其他用户权限
- 普通文件rrr
d 目录www
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

十二、学习路线建议

  1. 第一阶段:基础操作 — 掌握文件、目录、权限、Vim 等基础命令
  2. 第二阶段:Shell 脚本 — 学会写简单的自动化脚本
  3. 第三阶段:服务管理 — Nginx、MySQL、Redis 等常用服务的部署
  4. 第四阶段:运维进阶 — 监控、自动化部署、容器化(Docker)

推荐练习方式: 装一台虚拟机,每天用 Linux,坚持命令行操作,两周就能上手。


写在最后:Linux 的学习曲线前期稍陡,但一旦跨过基础门槛,你会发现它的设计哲学简洁而强大。不要试图一次记住所有命令,遇到问题查文档、多动手,慢慢就熟练了。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐