🔥 码途CQ:
个人主页
✨ 个人专栏:
《Linux》
|
《经典算法题集》
《C++》
《QT》
✨ 追风赶月莫停留,无芜尽处是春山!
💖 欢迎关注,一起交流学习 💖
📌 关注后可第一时间获取C++/Qt/算法干货更新
🌟

🚀 第一章:欢迎回到Linux命令行世界!
在上一篇文章中,我们一起认识了Linux的基础文件操作命令,是不是已经对那个黑乎乎的终端窗口有了些许亲切感?今天,我们将继续深入,学习更多实用指令,尤其是Linux中至关重要的文件操作和权限管理。
🎩 进阶思维:如果说基础命令是Linux的“单词”,那么今天的命令就是“语法”,而权限系统则是整个语言的“规则体系”。
一、温故知新:快速回顾
还记得这些命令吗?
ls -la # 查看详细信息
cd ~ # 回家
mkdir -p a/b/c # 创建多层目录
rm -rf danger # 危险!慎用!
很好!现在让我们进入今天的主菜。
📁 第二章:高级文件操作
一、复制与移动的艺术
1. cp:不只是复制,更是备份的起点
基本用法:
cp source.txt destination.txt # 复制文件
cp -r source_dir/ destination_dir/ # 复制整个目录
高级技巧:
# 备份时保留所有属性(权限、时间等)
cp -p important_file.txt backup/
# 交互式复制,覆盖前询问
cp -i *.txt backup/
# 只复制更新的文件
cp -u source/*.log backup/
# 详细模式,显示复制过程
cp -v file1 file2 file3 destination/
# 复制符号链接本身,而不是指向的文件
cp -d symbolic_link backup/
实用场景:
# 备份配置文件
cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
# 批量复制图片并重命名
cp photo.jpg vacation/photo_2023.jpg
2. mv:移动、重命名、还是覆盖?
mv命令有三重身份,全看第二个参数是什么:
# 1. 重命名文件
mv old_name.txt new_name.txt
# 2. 移动文件
mv file.txt /home/user/Documents/
# 3. 移动并重命名
mv file.txt /home/user/new_name.txt
# 4. 移动多个文件
mv file1.txt file2.txt file3.txt destination_folder/
# 5. 交互式移动(覆盖前询问)
mv -i important_file.txt maybe_existing_file.txt
💡 小贴士:mv实际上是“移动”而非“复制+删除”,所以速度极快,即使大文件也能瞬间完成。
二、文件比较:diff —— 找不同高手
# 比较两个文件
diff file_v1.txt file_v2.txt
# 并排显示差异
diff -y file1.txt file2.txt
# 统一格式,更易读
diff -u old_version.c new_version.c
# 比较两个目录
diff -r directory1/ directory2/
实际应用:
# 查看配置文件修改了哪些地方
diff -u /etc/nginx/nginx.conf.orig /etc/nginx/nginx.conf
# 生成补丁文件
diff -u old_code.c new_code.c > fix_bug.patch
三、链接文件:ln —— 文件的“快捷方式”
Linux有两种链接:
- 硬链接:同一个文件的多个名字(像分身)
- 软链接:真正的快捷方式(像指针)
# 创建硬链接
ln original.txt hardlink.txt
# 创建软链接(符号链接)
ln -s /path/to/original symlink_name
# 查看链接指向
ls -l symlink_name
readlink symlink_name
对比理解:
原始文件:我是一份重要文档
硬链接:我也是那份文档(同一个实体)
软链接:我指向那份文档(只是一个路径)
🔐 第三章:Linux权限系统深度解析
一、理解权限:Linux的“门禁系统”
当你执行ls -l时,看到的那些神秘字母是什么意思?
-rwxr-xr– 1 user group 4096 Jan 1 12:00 myfile
↑ ↑↑↑↑↑↑↑↑
│ └── 权限部分
└── 文件类型
1. 文件类型标识符
- -:普通文件(文本、图片、二进制等)
- d:目录
- l:符号链接
- b:块设备(硬盘、U盘等)
- c:字符设备(终端、打印机等)
- s:套接字文件
- p:管道文件
2. 权限详解
权限分为三组,每组三个字符:
rwx r-x r–
↑↑↑ ↑↑↑ ↑↑↑
||| ||| ||└── 其他人:无执行权限
||| ||| |└── 其他人:无写权限
||| ||| └── 其他人:有读权限
||| ||└── 所属组:无执行权限
||| |└── 所属组:有写权限
||| └── 所属组:有读权限
||└── 所有者:无执行权限
|└── 所有者:有写权限
└── 所有者:有读权限
二、权限的数字表示法
每个权限都有对应的数字:
- r (读) = 4
- w (写) = 2
- x (执行) = 1
-
- (无权限) = 0
组合计算:
rwx = 4+2+1 = 7
r-x = 4+0+1 = 5
r– = 4+0+0 = 4
rw-r–r– = 644
rwxr-xr-x = 755
三、修改权限:chmod命令大全
1. 数字模式(最常用)
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.txt # rw-r–r–
chmod 600 private.key # rw——-
chmod 777 test_dir # 完全开放(慎用!)
2. 符号模式(更直观)
# 添加权限
chmod u+x myscript.sh # 给所有者添加执行权限
chmod g+w shared_file # 给组添加写权限
chmod o+r public.txt # 给其他人添加读权限
chmod a+x everyone.sh # 给所有人添加执行权限
# 移除权限
chmod u-w sensitive.txt # 移除所有者的写权限
chmod o-rx private_dir/ # 移除其他人的读和执行权限
# 设置精确权限
chmod u=rwx,g=rx,o= file.txt
chmod a=rwx open_for_all.sh
3. 递归修改目录权限
chmod -R 755 web_root/ # 递归修改整个目录树
chmod -R u+w project/ # 给所有者递归添加写权限
四、修改所有者和组
1. chown:改变文件所有者
# 基本用法
sudo chown newowner file.txt
sudo chown newowner:newgroup file.txt
# 递归修改
sudo chown -R www-data:www-data /var/www/html/
# 只改组
sudo chown :developers project/
2. chgrp:改变文件所属组
sudo chgrp developers source_code/
sudo chgrp -R www-data web_content/
五、特殊权限位
1. SUID(Set User ID)
- 作用:普通用户以文件所有者的权限执行
- 设置:chmod u+s file 或 chmod 4755 file
- 典型应用:/usr/bin/passwd
2. SGID(Set Group ID)
- 作用:在目录中新建的文件继承目录的组
- 设置:chmod g+s directory 或 chmod 2755 directory
- 典型应用:团队协作目录
3. Sticky Bit(粘滞位)
- 作用:只有文件所有者、目录所有者或root能删除
- 设置:chmod +t directory 或 chmod 1777 directory
- 典型应用:/tmp目录
# 设置/tmp的典型权限
sudo chmod 1777 /tmp
# 查看特殊权限
ls -ld /tmp
# 显示:drwxrwxrwt … /tmp
# 注意最后的t,表示粘滞位
六、默认权限与umask
umask决定新建文件的默认权限:
umask # 查看当前umask
umask 022 # 设置umask
# 计算默认权限
# 文件:666 – umask
# 目录:777 – umask
# 示例:umask=022
# 文件:666-022=644 (rw-r–r–)
# 目录:777-022=755 (rwxr-xr-x)
📦 第四章:压缩与打包
一、tar:Linux的“瑞士军刀”
tar最初是Tape ARchive(磁带归档)的缩写,现在是最常用的打包工具。
1. 打包与解包
# 打包(不压缩)
tar -cvf archive.tar file1 file2 dir1/
# 解包
tar -xvf archive.tar
# 解包到指定目录
tar -xvf archive.tar -C /target/path/
2. 压缩与解压
# 使用gzip压缩(.tar.gz 或 .tgz)
tar -czvf archive.tar.gz files/
tar -xzvf archive.tar.gz
# 使用bzip2压缩(.tar.bz2)
tar -cjvf archive.tar.bz2 files/
tar -xjvf archive.tar.bz2
# 使用xz压缩(.tar.xz,压缩率最高)
tar -cJvf archive.tar.xz files/
tar -xJvf archive.tar.xz
3. 查看内容而不解压
tar -tzvf archive.tar.gz # 查看gzip压缩包内容
tar -tjvf archive.tar.bz2 # 查看bzip2压缩包内容
tar -tJvf archive.tar.xz # 查看xz压缩包内容
4. 高级技巧
# 只解压特定文件
tar -xzvf archive.tar.gz path/to/specific/file
# 追加文件到压缩包
tar -rvf archive.tar new_file.txt
# 排除特定文件/目录
tar -czvf backup.tar.gz –exclude="*.log" –exclude="temp/" /home/user/
# 基于时间备份(只备份24小时内修改的文件)
tar -czvf daily_backup.tar.gz –newer-mtime="1 day ago" /data/
二、zip和unzip:跨平台选择
# 压缩
zip -r archive.zip folder/
zip -r -9 maximum_compression.zip large_files/ # 最大压缩率
zip -e encrypted.zip sensitive_data/ # 加密压缩
# 解压
unzip archive.zip
unzip archive.zip -d target_directory/ # 解压到指定目录
unzip -l archive.zip # 查看内容而不解压
unzip -t archive.zip # 测试压缩包完整性
三、其他压缩工具
# gzip(通常用于单个文件)
gzip large_file.log
gunzip large_file.log.gz
# bzip2(压缩率比gzip高)
bzip2 big_file.txt
bunzip2 big_file.txt.bz2
# xz(压缩率最高,但较慢)
xz huge_file.data
unxz huge_file.data.xz
🖥️ 第五章:系统监控与进程管理
一、top和htop:实时系统监控
1. top:经典的系统监控工具
top
在top界面中:
- 按1:显示每个CPU核心的使用情况
- 按M:按内存使用排序
- 按P:按CPU使用排序
- 按k:杀死进程(输入PID)
- 按q:退出
2. htop:top的增强版(需要安装)
sudo apt install htop # Ubuntu/Debian
sudo yum install htop # CentOS/RHEL
htop
htop的特点:
- 彩色界面,更直观
- 鼠标支持
- 树状视图显示进程关系
- 更方便的进程操作
二、ps:进程快照
# 查看所有进程
ps aux
# 查看特定用户的进程
ps -u username
# 查看进程树
ps auxf
# 查看特定进程
ps -p PID
ps -C process_name
# 自定义输出格式
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head -10
三、进程控制
1. 发送信号
kill PID # 发送TERM信号(正常终止)
kill -9 PID # 发送KILL信号(强制终止)
kill -15 PID # 发送TERM信号(同kill PID)
kill -STOP PID # 暂停进程
kill -CONT PID # 继续被暂停的进程
# 通过名称杀进程
pkill process_name
killall process_name
2. 后台与前台
# 运行命令并放到后台
long_running_command &
# 查看后台作业
jobs
# 将后台作业调到前台
fg %1
# 暂停当前作业(按Ctrl+Z)
# 然后可以:
bg %1 # 在后台继续运行
fg %1 # 回到前台运行
四、系统信息查询
# 查看系统信息
uname -a # 所有系统信息
lsb_release -a # 发行版信息(需要安装lsb-release)
cat /etc/os-release # 系统版本信息
# 查看CPU信息
lscpu
cat /proc/cpuinfo
# 查看内存信息
free -h
cat /proc/meminfo
# 查看磁盘信息
df -h # 磁盘使用情况
du -sh directory/ # 目录大小
du -h –max-depth=1 /home # 查看/home下各目录大小
# 查看网络信息
ifconfig # 网络接口信息(需要安装net-tools)
ip addr # 更现代的替代品
netstat -tuln # 监听端口
ss -tuln # netstat的替代品
🎯 第六章:综合实战与最佳实践
一、实用脚本示例
1. 备份脚本
#!/bin/bash
# backup.sh – 简单备份脚本
BACKUP_DIR="/backup/$(date +%Y%m%d)"
SOURCE_DIR="/home/user/important_data"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/backup_$(date +%H%M%S).tar.gz" "$SOURCE_DIR"
echo "备份完成:$BACKUP_DIR"
2. 日志清理脚本
#!/bin/bash
# clean_logs.sh – 清理旧日志
LOG_DIR="/var/log/myapp"
DAYS_TO_KEEP=30
find "$LOG_DIR" -name "*.log" -mtime +$DAYS_TO_KEEP -delete
find "$LOG_DIR" -name "*.log.*.gz" -mtime +$DAYS_TO_KEEP -delete
echo "已清理 $LOG_DIR 中 $DAYS_TO_KEEP 天前的日志"
二、安全最佳实践
三、故障排查流程
🌟 总结
恭喜!你已经掌握了Linux系统管理的核心技能。让我们总结一下:
✅ 高级文件操作:cp, mv, diff, ln ✅ 权限管理:chmod, chown, chgrp, 特殊权限位 ✅ 压缩打包:tar, zip, 各种压缩格式 ✅ 系统监控:top, htop, ps, 进程控制 ✅ 信息查询:uname, df, du, free
🎯 Linux哲学:一个工具只做好一件事,通过管道组合完成复杂任务。
如果觉得文章有帮助,欢迎:
- 👍 点赞支持
- 💾 收藏备用
- ➕ 关注作者获取更多Linux教程
- 💬 留言分享你的Linux学习经验
学习Linux是一场马拉松,不是短跑。每天进步一点点,你将成为真正的Linux高手!
推荐资源:
- 书籍:《鸟哥的Linux私房菜》
- 网站:Linux中国、酷壳
- 练习:Linux Journey、OverTheWire
祝你在Linux的世界里探索愉快!🐧🚀
我们下篇见!
网硕互联帮助中心
![洛谷 P3478:[POI 2008] STA-Station ← 换根DP-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/01/20260120231722-69700d02399e7-220x150.png)



评论前必须登录!
注册