{T}

Linux 文件系统与核心命令

概述:系统讲解 Linux 文件系统层次结构、文件操作命令、权限模型与包管理体系,建立服务器端命令行操作的核心能力。

前置知识

  • 已完成 Linux 环境搭建(虚拟机/WSL2/云服务器)
  • 能通过 SSH 连接到 Linux 系统

学习目标

  • 理解 Linux 文件系统层次结构(FHS)
  • 掌握文件查看、搜索、管理的核心命令
  • 理解权限模型(rwx / 数字表示法)
  • 熟练使用 APT/YUM 包管理器

1. 文件系统层次结构(FHS)

1.1 目录树全景

图表渲染中…

1.2 前端工程师高频目录

目录用途典型操作
/home/user/用户主目录项目代码、.ssh 密钥
/etc/nginx/Nginx 配置修改站点配置、反向代理
/var/log/系统/应用日志排查部署问题
/var/www/Web 根目录前端构建产物部署
/usr/local/bin/用户级可执行文件Node.js、pnpm 安装位置
/etc/apt//etc/yum.repos.d/软件源配置替换国内镜像

2. 文件查看与搜索

2.1 文件内容查看

命令用途典型场景
cat输出全部内容查看短配置文件
less分页浏览(支持上下翻页)查看长日志/配置
head -n 20查看前 N 行快速预览文件头部
tail -f实时跟踪文件追加监控应用日志
bash
# 实时监控 Nginx 访问日志
tail -f /var/log/nginx/access.log

# 查看 SSH 配置(分页)
less /etc/ssh/sshd_config

# 查看文件前 5 行
head -n 5 package.json

2.2 内容搜索(grep)

bash
# 在文件中搜索
grep "listen" /etc/nginx/nginx.conf

# 递归搜索目录
grep -r "proxy_pass" /etc/nginx/

# 忽略大小写 + 显示行号
grep -in "error" /var/log/syslog

# 管道过滤
ip addr show | grep "inet"
ps aux | grep node

grep 常用选项速查

选项说明
-i忽略大小写
-n显示行号
-r递归搜索目录
-v反向匹配(排除)
-c只输出匹配行数
-l只输出包含匹配的文件名
-E使用扩展正则(等同 egrep)

2.3 文件查找(find)

bash
# 按名称查找
find /home -name "*.conf"

# 按类型 + 大小
find / -type f -size +100M

# 按修改时间(7天内)
find /var/log -mtime -7

# 组合条件
find /home -name "*.js" -user deploy -mtime -1

3. 文件与目录操作

3.1 核心命令对照

操作命令关键参数
创建目录mkdir -p a/b/c-p 递归创建
复制文件cp src dest
复制目录cp -r src/ dest/-r 必须
移动/重命名mv old new
删除文件rm file
删除目录rm -rf dir/不可恢复
查看目录ls -lah-a 隐藏文件
切换目录cd /pathcd - 回上一个

3.2 安全删除建议

bash
# 危险操作前确认
ls target_dir/          # 先看看里面有什么
rm -ri target_dir/      # -i 交互确认

# 生产环境替代方案:移动到临时目录
mv /data/old_build /tmp/old_build_$(date +%Y%m%d)
# 确认无问题后再清理 /tmp

4. 权限模型

4.1 权限结构

code
-rwxr-xr-x  1 user group 4096 Jan 10 10:00 filename
│││││││││
││││││││└── 其他人: x (执行)
│││││││└─── 其他人: r (读)
││││││└──── 其他人: - (无写)
│││││└───── 组: x
││││└────── 组: r
│││└─────── 组: - (无写)
││└──────── 所有者: x
│└───────── 所有者: w
└────────── 所有者: r

4.2 数字表示法

权限数字组合示例
r (读)4rwx = 7
w (写)2r-x = 5
x (执行)1r-- = 4
bash
# 修改权限
chmod 755 script.sh      # 所有者 rwx,其他人 r-x
chmod 600 ~/.ssh/id_rsa  # 仅所有者读写

# 修改所有者
sudo chown www-data:www-data /var/www/html

# 递归修改
chmod -R 755 /var/www/

4.3 前端部署常见权限设置

bash
# Nginx 静态文件
sudo chown -R www-data:www-data /var/www/app
chmod -R 755 /var/www/app

# SSH 密钥(权限错误会导致认证失败)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys

5. 系统信息查看

5.1 内核与发行版

bash
# 内核版本
uname -r
# 输出: 5.15.0-91-generic

# 硬件架构
uname -m
# 输出: x86_64 或 aarch64

# 发行版信息(通用)
cat /etc/os-release

# Ubuntu 专用
lsb_release -a

# Rocky/CentOS 专用
cat /etc/rocky-release

5.2 /proc 虚拟文件系统

bash
cat /proc/cpuinfo     # CPU 型号、核心数
cat /proc/meminfo     # 内存总量、可用量
cat /proc/version     # 内核编译信息
cat /proc/filesystems # 支持的文件系统类型

6. 包管理

6.1 APT(Ubuntu/Debian)

bash
# 标准工作流
sudo apt update                    # 更新源索引
sudo apt install -y nginx          # 安装
sudo apt remove nginx              # 卸载(保留配置)
sudo apt purge nginx               # 卸载(删除配置)
sudo apt autoremove                # 清理孤立依赖
sudo apt upgrade                   # 升级所有包

# 搜索与查看
apt search keyword
apt show package-name
apt list --installed

6.2 YUM/DNF(Rocky/CentOS)

bash
# 标准工作流
sudo yum makecache                 # 更新源缓存
sudo yum install -y nginx          # 安装
sudo yum remove nginx              # 卸载
sudo yum update                    # 升级所有包

# 搜索与查看
yum search keyword
yum info package-name
yum list installed

6.3 前端开发环境安装示例

bash
# 安装 Node.js 20.x(通过 NodeSource)
# Ubuntu
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Rocky Linux
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo yum install -y nodejs

# 验证
node -v    # v20.x.x
npm -v

# 安装常用工具
sudo apt install -y git curl wget vim unzip

7. Vim 编辑器速查

7.1 模式切换

图表渲染中…

7.2 高频操作

操作命令
保存退出:wq:x
强制退出:q!
显示行号:set nu
跳到行 N:N
搜索/keywordn 下一个
删除行dd
复制行yyp 粘贴
撤销u

8. 常见问题与排错

问题原因解决方案
Unable to locate package源索引过期sudo apt update
Permission denied权限不足sudo 或修改文件权限
cp: omitting directory复制目录未加 -rcp -r src/ dest/
No such file or directory路径错误pwd 确认位置,ls 确认文件存在
磁盘空间不足日志/缓存占满du -sh /var/log/* 定位大文件

9. 最佳实践

  1. Tab 补全:输入部分路径后按 Tab,避免拼写错误
  2. 管道组合command | grep | sort | head 层层过滤
  3. man 手册man command 查看完整文档,/keyword 搜索
  4. 历史命令history | grep keyword 找回之前执行过的命令
  5. 别名:在 ~/.bashrc 中定义常用别名(如 alias ll='ls -lah'

10. 延伸阅读