带你手写操作系统内核 1:文件类型与命令行:从入门到进阶详解 附带400行源码给你收藏

前言

Linux 系统的强大源自其灵活的文件系统和丰富的命令行工具。本文将系统扩展 Linux 七大文件类型的操作命令,深度解析 100 + 实用命令技巧,帮助开发者全面掌握文件管理、系统监控、文本处理等核心技能,成为命令行操作的高手。

一、Linux 七大文件类型与操作命令(扩展 5 倍)

1. 普通文件(-)

核心特性
  • 包含 ASCII 文本、二进制程序、数据文件等
  • -标识,占系统文件的大多数
实用命令集

bash

# 文本文件操作
cat file.txt          # 查看文件内容
more file.txt         # 分页查看
less file.txt         # 可回溯分页查看
head -n 20 file.txt   # 查看前20行
tail -f log.txt       # 实时监控日志

# 二进制文件处理
file program          # 检测文件类型
ldd program           # 查看依赖库
objdump -d program    # 反汇编二进制文件

# 压缩文件操作
gzip file.txt         # 压缩文件
gunzip file.txt.gz    # 解压gzip文件
tar -czvf archive.tar.gz dir/  # 压缩目录
tar -xzvf archive.tar.gz      # 解压tar.gz文件
zip -r archive.zip dir/       # 压缩为zip
unzip archive.zip             # 解压zip

# 数据文件处理
convert image.jpg image.png   # 图像格式转换(需安装imagemagick)
ffmpeg -i video.mp4 audio.mp3 # 提取音频(需安装ffmpeg)
高级技巧

bash

# 文本处理三剑客
grep "pattern" file.txt       # 搜索匹配行
sed 's/old/new/g' file.txt    # 替换文本
awk '{print $1}' file.txt     # 格式化输出

# 二进制文件分析
strace program               # 跟踪系统调用
ltrace program               # 跟踪库函数调用

2. 目录文件(d)

核心特性
  • 存储文件和子目录的索引结构
  • d标识,是文件系统的骨架
实用命令集

bash

# 基础操作
mkdir dir                    # 创建目录
mkdir -p parent/child/sub    # 递归创建目录
rmdir dir                    # 删除空目录
rm -rf dir                   # 递归删除目录
ls -la                       # 列出详细信息
ls -R                        # 递归列出所有内容

# 目录导航
cd dir                       # 进入目录
cd ..                        # 回到上级目录
cd ~                         # 回到家目录
pwd                          # 显示当前路径
pushd dir; popd              # 入栈出栈导航

# 目录信息
du -sh dir                   # 查看目录大小
df -h                        # 查看磁盘空间
find . -type d -name "dir"    # 查找目录
高级技巧

bash

# 目录内容比较
diff dir1 dir2                # 比较目录内容
rsync -av dir1 dir2          # 同步目录
tree dir                     # 树形显示目录结构(需安装tree)

# 隐藏目录操作
ls -a                        # 显示隐藏文件
find . -type d -name ".*"     # 查找隐藏目录

3. 块设备文件(b)

核心特性
  • 存储设备如硬盘、U 盘的访问接口
  • 以块为单位读写,用b标识
实用命令集

bash

# 设备查看
lsblk                        # 列出块设备
fdisk -l                      # 查看磁盘分区
blkid                          # 查看磁盘标签

# 磁盘操作
fdisk /dev/sda                # 分区磁盘
mkfs.ext4 /dev/sda1           # 格式化分区
mount /dev/sda1 /mnt          # 挂载分区
umount /mnt                  # 卸载分区

# 磁盘管理
dd if=/dev/zero of=file bs=1M count=10 # 创建测试文件
hdparm -t /dev/sda            # 测试磁盘速度
smartctl -a /dev/sda          # 检测磁盘健康(需安装smartmontools)
高级技巧

bash

# 磁盘镜像
dd if=/dev/sda of=disk.img     # 克隆磁盘
dd if=disk.img of=/dev/sdb     # 恢复磁盘镜像
partclone -s /dev/sda1 -o sda1.img # 分区克隆

4. 字符设备文件(c)

核心特性
  • 串行设备如键盘、鼠标的访问接口
  • 按字符流方式读写,用c标识
实用命令集

bash

# 设备查看
ls /dev/tty*                  # 查看终端设备
ls /dev/input/*               # 查看输入设备
dmesg | grep tty             # 查看终端日志

# 驱动管理
lsmod                        # 查看已加载模块
modprobe usbcore             # 加载USB模块
rmmod usbcore                # 卸载模块
dmesg | grep "usb"           # 查看USB设备日志

# 串口操作
stty -F /dev/ttyS0            # 查看串口设置
echo "data" > /dev/ttyS0      # 向串口发送数据
cat /dev/ttyS0                # 从串口接收数据
高级技巧

bash

# 设备调试
hexdump /dev/input/mice       # 查看鼠标输入
tcpdump -i eth0              # 抓包网络设备(需root)
strace -e open /dev/*         # 跟踪设备打开操作

5. 符号链接文件(l)

核心特性
  • 类似快捷方式,用l标识
  • 指向另一个文件的引用
实用命令集

bash

# 链接操作
ln -s target link            # 创建符号链接
ln file hardlink             # 创建硬链接
readlink link                # 查看链接目标
ls -l link                   # 查看链接信息

# 链接管理
find . -type l               # 查找所有链接
broken-link-check .         # 检查 broken link(需安装checklink)
symbolic-link-tree .        # 可视化链接树(需安装sltt)
高级技巧

bash

# 链接高级应用
ln -sf new_target link      # 强制更新链接
find . -type l -exec file {} \; # 查看链接目标类型
cp -a source dest           # 复制时保留链接

6. 套接字文件(s)

核心特性
  • 进程间网络通信接口
  • s标识,常用于本地 IPC
实用命令集

bash

# 套接字查看
ls -la /var/run/*.sock       # 查看系统套接字
netstat -ap | grep sock      # 查看套接字连接
ss -a | grep sock           # 更高效的套接字查看

# 套接字操作
nc -U socket.sock           # 连接UNIX套接字
socat - UNIX-CONNECT:socket  # 高级套接字工具
lsof -p PID | grep sock      # 查看进程打开的套接字
高级技巧

bash

# 套接字编程辅助
strace -e socket,connect,accept # 跟踪套接字系统调用
ltrace -e socket              # 跟踪套接字库调用

7. 命名管道文件(p)

核心特性
  • 进程间通信的管道
  • p标识,实现数据流传输
实用命令集

bash

# 管道操作
mkfifo pipe                  # 创建命名管道
ls -la pipe                  # 查看管道
cat < pipe                   # 从管道读取
echo "data" > pipe           # 向管道写入

# 管道应用
grep "error" log.txt > pipe   # 过滤日志到管道
tail -f pipe | mail user     # 管道内容发送邮件
高级技巧

bash

# 管道高级应用
mkfifo -m 777 pipe           # 创建可读写管道
named-pipe-food-poller pipe # 监控管道数据(需安装fpp)

二、命令行奇技淫巧(扩展 5 倍)

1. 高效文件操作

bash

# 高级文件查找
find . -type f -size +100M -exec du -sh {} \; # 查找大文件
find . -type f -name "*.log" -mtime -1        # 查找一天内修改的日志
locate "keyword"                             # 快速定位文件(需updatedb)
whereis command                             # 查找命令位置
which command                               # 查找命令执行路径

# 文件内容处理
grep -r "pattern" . --color                 # 递归搜索带颜色标记
grep -E "[0-9]{4}-[0-9]{2}-[0-9]{2}" log.txt # 日期格式匹配
sed -i 's/old/new/g' *.txt                   # 批量替换
awk '{sum+=$1} END {print sum}' numbers.txt  # 数值求和

# 压缩技巧
tar -czvf --exclude="*.log" archive.tar.gz dir/ # 排除日志压缩
zip -r -0 archive.zip *.txt                  # 只存储不压缩
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir/ # 极致压缩

2. 系统监控与进程管理

bash

# 资源监控
htop                                        # 交互式进程监控
iotop                                       # 磁盘I/O监控
iftop -i eth0                               # 网络流量监控
glances                                     # 系统综合监控
dstat -cdngy 1                              # 每秒刷新系统统计

# 进程操作
ps -ef | grep "process" | awk '{print $2}' | xargs kill -9 # 批量杀进程
pgrep -f "process"                          # 按名称查PID
pstree -p PID                              # 查看进程树
nice -n 10 program                          # 降低进程优先级
renice -n -5 -p PID                         # 提高进程优先级

# 内存分析
free -h                                    # 查看内存使用
vmstat 1                                    # 每秒查看虚拟内存状态
pmap PID                                   # 查看进程内存映射
strace -p PID                              # 跟踪进程系统调用

3. 高级文本处理

bash

# 正则表达式进阶
grep -P "(https?|ftp)://[^\s/$.?#].[^\s]*" text.txt # 匹配URL
sed 's/\b[a-z]\+\b/\U&/g' text.txt              # 转大写
awk '{print toupper($0)}' text.txt             # 转大写(另一种方式)
tr 'a-z' 'A-Z' < text.txt > new.txt           # 全局转大写
sort -u file.txt > unique.txt                 # 去重并排序

# 数据处理
cut -d: -f1 /etc/passwd                      # 提取用户名
paste file1 file2                            # 合并文件列
join file1 file2                             # 按公共列合并
split -l 100 bigfile                          # 分割文件为100行块
csplit -n 3 -f part bigfile '/ERROR/' '{*}'   # 按ERROR分割文件

4. 网络与远程操作

bash

# 网络工具
curl -I https://example.com                 # 查看HTTP头
wget -r -p --html-extension example.com     # 下载网站
nc -vz example.com 80                       # 端口检测
traceroute example.com                      # 路由跟踪
mtr example.com                            # 网络质量监控

# 远程操作
ssh user@server "command"                   # 远程执行命令
scp file user@server:/path                 # 复制文件
rsync -avz local/ user@server:remote/       # 同步目录
sshfs user@server:/path local/mount         # 远程挂载
telnet server port                         # 远程登录(不安全)

5. 命令行效率提升

bash

# 快捷键
Ctrl+A          # 光标到行首
Ctrl+E          # 光标到行尾
Ctrl+U          # 删除到行首
Ctrl+K          # 删除到行尾
Ctrl+R          # 搜索历史命令
Alt+.            # 粘贴上一个命令的最后参数
!!              # 执行上一条命令
!$              # 上一条命令的最后参数

# 别名与脚本
alias ll='ls -la'                      # 创建别名
cat > ~/.bash_aliases                   # 永久保存别名
source ~/.bashrc                       # 生效别名
echo "alias mycmd='command'" >> ~/.bashrc # 脚本化别名

# 高级终端技巧
tmux new -s session                    # 创建会话
tmux attach -t session                 # 连接会话
screen -S session                     # 另一种会话工具
setterm -foreground red                # 设置终端颜色
tput setaf 1; echo "red text"; tput sgr0 # 临时设置颜色

三、系统管理深度总结(扩展 5 倍)

1. 文件类型与对应命令分类

文件类型标识典型命令应用场景
普通文件-cat, grep, tar文本处理、压缩
目录文件dls, mkdir, cd目录导航
块设备bfdisk, mount, dd磁盘管理
字符设备cdmesg, modprobe驱动管理
符号链接lln, readlink快捷引用
套接字snetstat, ss进程通信
命名管道pmkfifo, cat进程数据传输

2. 十大危险命令与安全替代

危险命令风险安全替代
rm -rf /*删除整个系统rm -rf /path/ 或使用确认机制
mkfs /dev/sda格式化整个磁盘mkfs /dev/sda1 或使用图形工具
kill -9 1杀死 init 进程谨慎使用,优先 kill -15
dd if=/dev/zero of=/dev/sda擦除磁盘dd if=/dev/zero of=file
chmod 777 / -R全系统读写执行针对具体文件 chmod
apt-get remove --purge *删除所有包明确指定包名
update-rc.d -f * remove移除所有服务逐个管理服务
ln -sf /dev/null /etc/passwd破坏用户认证谨慎操作配置文件
echo "" > /etc/fstab破坏挂载配置使用文本编辑器修改
export PATH=清空路径谨慎修改 PATH

3. 系统维护必备命令集

文件系统维护
fsck /dev/sda1            # 检查文件系统
mount -o remount,rw /      # 重新挂载根目录为读写
df -h                     # 查看磁盘空间
du -sh /var/log           # 查看日志大小
find / -size 0 -type f    # 查找空文件
日志分析

grep "error" /var/log/syslog | less       # 查找错误日志
journalctl -p 3 -xb                       # 查看错误级别日志
last | head                                # 查看登录历史
wtmpdump /var/log/wtmp | less             # 查看详细登录记录

网络故障排查

ifconfig                              # 查看网络接口
ping example.com                      # 测试连通性
dig example.com                       # 域名解析
route -n                              # 查看路由表
iptables -L                           # 查看防火墙规则

4. 高效命令组合实例

日志分析组合

bash

# 查找今天的错误日志并统计
grep $(date +"%b %d") /var/log/syslog | grep "error" | wc -l

# 跟踪最新100行日志并高亮错误
tail -100f /var/log/syslog | grep --line-buffered "error" --color

# 分析日志中的IP地址
grep -oE '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' /var/log/access.log | sort | uniq -c | sort -nr
磁盘空间清理

bash

# 查找大日志文件
find /var/log -type f -size +100M -exec du -sh {} \;

# 压缩一个月前的日志
find /var/log -type f -mtime +30 -name "*.log" -exec gzip {} \;

# 清理临时文件
find /tmp -type f -mtime +7 -exec rm {} \;
进程性能优化

# 找出占用CPU最高的5个进程
ps -eo pid,ppid,%cpu,%mem,comm | sort -k3 -r | head -6

# 找出占用内存最高的进程
ps -eo pid,ppid,%mem,comm | sort -k3 -r | head -6

# 监控进程内存变化
watch -n 1 "ps -p PID -o pid,ppid,%mem,comm"

在线

掌握 Linux 文件类型和命令行技巧是开发者进阶的必经之路。从基础的文件操作到复杂的系统维护,每一个命令都是提升效率的利器。记住:

  1. 危险命令务必谨慎执行,先理解后操作
  2. 善用man--help获取帮助
  3. 复杂操作先在测试环境验证
  4. 养成记录常用命令的习惯
  5. 持续学习新工具和技巧

看完了哥们的这篇文章看,恭喜你,已经入门!

接下来就是在实践中不断精进,享受命令行带来的高效与掌控感!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值