Linux基础操作完全指南 ------ 从入门到日常使用
一、前言
Linux 是每个开发者绕不开的操作系统。无论是服务器部署、嵌入式开发,还是日常使用的 Ubuntu/Debian 桌面,掌握 Linux 基础操作已经成为技术人员的必备技能。
本文从零开始,梳理 Linux 最核心、最常用的操作,涵盖文件管理、文本编辑、权限控制、进程管理、网络操作等常见场景,帮你建立起 Linux 命令行操作的基础体系。
适合人群:Linux 初学者、刚接触命令行的开发者、想要系统梳理基础知识的同学。
二、文件与目录操作
2.1 目录导航
bash
pwd # 查看当前工作目录
ls # 列出当前目录的文件
ls -l # 详细列表(权限、大小、时间)
ls -a # 显示隐藏文件(以 . 开头的文件)
ls -lh # 人性化显示文件大小(KB/MB)
ls -lt # 按修改时间排序
tree # 以树形结构显示目录(需安装 tree)
cd /path/to/dir # 切换到指定目录
cd ~ # 回到家目录
cd - # 回到上一个目录
cd .. # 上一级目录
cd ../.. # 上两级目录
2.2 文件操作
bash
# 创建
touch file.txt # 创建空文件或更新文件时间戳
mkdir dir # 创建目录
mkdir -p a/b/c # 递归创建多级目录
# 查看
cat file.txt # 查看完整文件内容
less file.txt # 分页查看(空格翻页,q 退出)
head -n 20 file.txt # 查看前 20 行
tail -n 30 file.txt # 查看后 30 行
tail -f app.log # 实时跟踪日志输出(Ctrl+C 退出)
wc -l file.txt # 统计行数
# 复制/移动/删除
cp src.txt dst.txt # 复制文件
cp -r dir1 dir2 # 递归复制目录
mv old.txt new.txt # 重命名或移动
rm file.txt # 删除文件(谨慎!不可恢复)
rm -rf dir # 强制递归删除目录(极其危险!)
⚠️ 安全提醒 :
rm -rf /会删光整个系统,永远不要运行这条命令 。日常建议使用trash代替rm来保护自己。
2.3 文件查找
bash
find /path -name "*.py" # 按文件名查找
find . -type f -size +10M # 查找大于 10MB 的文件
locate nginx.conf # 从数据库快速查找(需要 sudo updatedb 更新)
grep "error" app.log # 在文件中搜索关键词
grep -r "TODO" ./src/ # 递归搜索目录下所有文件
grep -n "function" main.py # 显示行号
2.4 压缩与解压
bash
# tar(最常用)
tar -czf archive.tar.gz dir/ # 打包并压缩为 .tar.gz
tar -xzf archive.tar.gz # 解压 .tar.gz
tar -cjf archive.tar.bz2 dir/ # 打包为 .tar.bz2
tar -xjf archive.tar.bz2 # 解压 .tar.bz2
# zip
zip -r archive.zip dir/ # 压缩为 .zip
unzip archive.zip # 解压 .zip
三、文件权限与用户管理
3.1 权限基础
Linux 的文件权限分为三组:所有者(User) 、所属组(Group) 、其他人(Others)。
bash
ls -l file.txt
# 输出示例:-rwxr-xr-- 1 user group 1024 Jun 18 10:00 file.txt
# ^^^^ ^^^^ ^^^
# U G O
权限位的含义:
| 权限 | 文件 | 目录 |
|---|---|---|
r (4) |
读取文件内容 | 列出目录下的文件名 |
w (2) |
修改文件内容 | 创建/删除目录中的文件 |
x (1) |
执行文件 | 进入目录(cd) |
3.2 修改权限
bash
# 符号模式
chmod u+x script.sh # 给所有者添加执行权限
chmod g-w file.txt # 移除所属组的写权限
chmod o+r file.txt # 给其他人添加读权限
chmod a+x script.sh # 给所有人(ugo)添加执行权限
# 数字模式(最常用)
chmod 755 script.sh # rwxr-xr-x --- 所有者可读写执行,其他人只能读/执行
chmod 644 file.txt # rw-r--r-- --- 所有者可读写,其他人只能读
chmod 600 secret.key # rw------- --- 仅所有者可读写
chmod 700 private_dir/ # rwx------ --- 仅所有者完全控制
💡 数字模式解码 :
r=4, w=2, x=1,三者相加即为数字。7=4+2+1,5=4+1,6=4+2。
3.3 常见权限场景
bash
# SSH 私钥必须严格为 600
chmod 600 ~/.ssh/id_rsa
# 脚本需要执行权限
chmod +x deploy.sh
# 目录必须有执行权限才能 cd 进去
chmod 755 myapp/
3.4 用户管理
bash
whoami # 当前用户名
id # 显示用户 ID、组 ID
sudo useradd -m tom # 创建用户并创建家目录
sudo passwd tom # 设置/修改密码
sudo usermod -aG sudo tom # 将用户加入 sudo 组
sudo deluser tom # 删除用户
四、文本编辑器:Vim 基础
Vim 无处不在,学会基本操作能大幅提升效率。即使平时用 VS Code,SSH 到服务器时你只有 Vim。
4.1 三种模式
┌─────────────┐ i / a / o ┌─────────────┐
│ Normal 模式│ ──────────────> │ Insert 模式 │
│ (浏览/操作) │ <────────────── │ (输入文本)│
└─────────────┘ Esc 键 └─────────────┘
│ │
v v
┌─────────────┐ (通过 Esc 回到
│ Visual 模式 │ Normal 模式)
│ (选择文本) │
└─────────────┘
4.2 最小可行操作集
vim
# 打开文件
vim file.txt
# 插入文本(Normal 模式下按以下键)
i " 在当前光标处插入(insert)
a " 在当前光标后插入(append)
o " 在下一行插入新行
O " 在上一行插入新行
# 保存退出
:w " 保存
:q " 退出
:wq " 保存并退出
:q! " 不保存强制退出
ZZ " 保存并退出(快捷方式)
# 移动光标
h j k l " 左 下 上 右
w " 跳到下一个单词开头
b " 跳到上一个单词开头
0 " 跳到行首
$ " 跳到行尾
gg " 跳到文件开头
G " 跳到文件末尾
# 常用操作
x " 删除光标处字符
dd " 删除整行
yy " 复制整行(yank)
p " 粘贴
u " 撤销
Ctrl+r " 重做
/keyword " 搜索关键词,n 跳到下一个,N 跳到上一个
🎯 初学者建议 :先记住
i进入插入、Esc退回、:wq保存退出、dd删行、u撤销,这 5 个操作就能应付 80% 的场景。
五、进程管理
bash
# 查看进程
ps aux # 查看所有进程
ps aux | grep nginx # 查找特定进程
top # 实时进程监控(按 q 退出)
htop # 更友好的 top(需安装)
# 进程信号
kill 1234 # 终止进程 ID 为 1234 的进程(SIGTERM)
kill -9 1234 # 强制杀死(SIGKILL,谨慎使用)
kill -15 1234 # 优雅终止(默认信号)
pkill -f "process_name" # 按名字杀进程
# 后台运行
command & # 在后台运行命令
nohup command & # 退出终端后继续运行
Ctrl+Z # 暂停当前前台进程
jobs # 查看后台任务
fg %1 # 将后台任务 1 切回前台
bg %1 # 在后台继续运行暂停的任务
六、网络操作
bash
# 连接测试
ping 8.8.8.8 # 测试网络连通性(Ctrl+C 停止)
curl https://example.com # HTTP 请求(最常用的网络调试工具)
curl -I https://example.com # 只查看响应头
wget https://example.com/file.zip # 下载文件
# 网络诊断
ip addr # 查看 IP 地址(新版,推荐)
ifconfig # 查看 IP 地址(旧版,可能需安装)
ss -tlnp # 查看监听端口(新版,推荐)
netstat -tlnp # 查看监听端口(旧版)
# DNS
nslookup example.com # DNS 查询
dig example.com # 更详细的 DNS 查询
# SSH 远程登录
ssh user@192.168.1.100 # SSH 登录远程服务器
ssh -p 2222 user@host # 指定端口登录
scp file.txt user@host:/path/ # 通过 SSH 复制文件到远程
scp user@host:/path/file.txt ./ # 从远程复制文件到本地
ssh-keygen -t ed25519 # 生成 SSH 密钥对
ssh-copy-id user@host # 将公钥复制到远程服务器
七、包管理
7.1 Debian/Ubuntu(apt)
bash
sudo apt update # 更新包索引
sudo apt upgrade # 升级已安装的包
sudo apt install nginx # 安装软件
sudo apt remove nginx # 卸载软件
sudo apt purge nginx # 卸载并删除配置文件
sudo apt autoremove # 清理不再需要的依赖
apt search keyword # 搜索软件包
apt show nginx # 查看软件包信息
7.2 CentOS/RHEL(dnf/yum)
bash
sudo dnf install nginx # 安装
sudo dnf remove nginx # 卸载
sudo dnf update # 更新
dnf search keyword # 搜索
7.3 源码编译安装
bash
./configure # 检查环境并生成 Makefile
make # 编译
sudo make install # 安装到系统
八、系统信息与监控
bash
# 系统信息
uname -a # 内核版本信息
lsb_release -a # 发行版信息(Ubuntu/Debian)
cat /etc/os-release # 发行版信息(通用)
lscpu # CPU 信息
free -h # 内存使用情况(人性化显示)
df -h # 磁盘空间使用情况
du -sh /path/to/dir # 查看目录总大小
du -h --max-depth=1 # 查看各子目录大小
# 时间与日期
date # 查看当前日期时间
timedatectl # 查看系统时间与时区设置
uptime # 系统运行时间与负载
# 硬件
lspci # 查看 PCI 设备
lsusb # 查看 USB 设备
dmesg # 查看内核日志
九、常用快捷键与技巧
终端快捷键
bash
Ctrl+C # 终止当前命令
Ctrl+D # 退出当前 Shell / EOF
Ctrl+Z # 暂停当前命令
Ctrl+L # 清屏(相当于 clear)
Ctrl+A # 跳到行首
Ctrl+E # 跳到行尾
Ctrl+U # 删除光标前的所有字符
Ctrl+K # 删除光标后的所有字符
Ctrl+R # 搜索历史命令(按一下进入搜索模式)
Ctrl+W # 删除光标前的一个单词
命令行小技巧
bash
!! # 重复上一条命令
!$ # 上一条命令的最后一个参数
!nginx # 执行最近一次以 nginx 开头的命令
Ctrl + R # 反向搜索历史命令(超级实用!)
输入输出重定向
bash
command > file.txt # 标准输出重定向到文件(覆盖)
command >> file.txt # 标准输出重定向到文件(追加)
command 2> error.log # 标准错误重定向
command &> all.log # 所有输出重定向
command < input.txt # 从文件读取输入
command1 | command2 # 管道:将 command1 的输出传给 command2
💡 管道示例:
bash
# 查找最大的 10 个文件
du -ah /var | sort -rh | head -10
# 统计日志中的错误数量
grep "ERROR" app.log | wc -l
# 找到最占内存的 5 个进程
ps aux --sort=-%mem | head -6
十、系统服务管理(systemd)
现代 Linux 发行版基本上都使用 systemd 管理服务。
bash
sudo systemctl start nginx # 启动服务
sudo systemctl stop nginx # 停止服务
sudo systemctl restart nginx # 重启服务
sudo systemctl reload nginx # 重载配置(不中断服务)
sudo systemctl enable nginx # 设置开机自启
sudo systemctl disable nginx # 取消开机自启
systemctl status nginx # 查看服务状态
systemctl list-units --type=service # 列出所有服务
# 查看日志
journalctl -u nginx # 查看指定服务的日志
journalctl -u nginx -f # 实时跟踪日志
journalctl -u nginx --since "10 min ago" # 查看最近 10 分钟的日志
十一、环境变量与 Shell 配置
bash
# 查看环境变量
echo $PATH # 查看 PATH
env # 查看所有环境变量
export MY_VAR="hello" # 设置环境变量(仅当前会话有效)
# 配置文件
~/.bashrc # Bash 交互式 Shell 配置(用户级)
~/.bash_profile # Bash 登录 Shell 配置
~/.profile # 通用 Shell 登录配置
~/.bash_aliases # 别名配置(常被 .bashrc 引用)
/etc/bash.bashrc # 全局 Bash 配置
# 常用别名示例(添加到 ~/.bashrc 或 ~/.bash_aliases)
alias ll='ls -lah'
alias la='ls -A'
alias gs='git status'
alias update='sudo apt update && sudo apt upgrade'
alias ..='cd ..'
alias ...='cd ../..'
修改配置后记得 source ~/.bashrc 使其生效。
十二、日志查看与调试
bash
# 系统日志
dmesg # 内核日志
dmesg -w # 实时跟踪内核日志
journalctl # systemd 日志
journalctl -xe # 查看最近的系统日志(带解释)
# 应用日志(通常位置)
/var/log/syslog # 系统日志(Ubuntu/Debian)
/var/log/messages # 系统日志(CentOS/RHEL)
/var/log/nginx/access.log # Nginx 访问日志
/var/log/nginx/error.log # Nginx 错误日志
十三、日常实战场景
场景 1:查找并清理大文件
bash
# 找出 / 下最大的 20 个文件/目录
du -ah / 2>/dev/null | sort -rh | head -20
# 查找超过 1GB 的文件
find / -type f -size +1G 2>/dev/null
场景 2:批量重命名文件
bash
# 将所有 .txt 改为 .md
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 批量添加前缀
for f in *.jpg; do mv "$f" "vacation_$f"; done
场景 3:压缩备份日志
bash
# 将 7 天前的日志打包压缩
find /var/log -name "*.log" -mtime +7 | tar -czf old-logs.tar.gz -T -
场景 4:快速查看端口占用
bash
# 查看 80 端口被谁占用
sudo lsof -i :80
# 或者
sudo ss -tlnp | grep :80
场景 5:查找包含特定内容的文件
bash
# 在当前目录的所有 .py 文件中搜索 "TODO"
grep -rn "TODO" --include="*.py" .
# 排除 node_modules 目录
grep -rn "api_key" --exclude-dir=node_modules .
十四、学习建议
- 别想着一下记住所有命令 --- 用得多自然就记得住,先掌握最常用的 20% 就能解决 80% 的问题
- 多用
--help和man---command --help或man command是最快的帮助文档 Tab键是你的好朋友 --- 命令和路径补全能节省大量时间- 从手打命令开始 --- 别过早依赖复制粘贴,打多了肌肉记忆自然形成
- 犯错是正常的 --- 误操作时:
Ctrl+C终止、u撤销 Vim 操作、查看历史记录恢复 - 用 alias 简化常用操作 --- 把你常用的复杂命令写成别名
- 遇到问题这样搜索 :
Linux + 问题关键词 + 发行版版本(如Linux 查看端口占用 Ubuntu)
十五、参考资源
- Linux 命令行大全 --- GNU Bash 官方手册
- ExplainShell --- 输入命令即可逐段解释含义
- TLDR Pages --- 简化的 man 手册,适合快速查用法
- Linux Journey --- 交互式 Linux 学习网站
- 命令行安装
tldr:sudo apt install tldr或npm install -g tldr