Linux命令习题:从基础到进阶的实践指南
Linux命令是系统管理和开发的核心技能,通过习题练习可以快速掌握命令行的使用方法,本文将从基础文件操作、系统管理、文本处理、网络工具和Shell脚本五个维度,提供一系列精心设计的习题,帮助读者逐步提升Linux命令的应用能力。

基础文件与目录操作
习题1:在当前用户家目录下创建一个名为project的文件夹,并在其中创建三个子文件夹src、docs和logs。
解答:
mkdir -p ~/project/{src,docs,logs}
-p参数确保父目录存在,避免因目录已报错。
习题2:将/etc/passwd文件复制到project/docs目录,并重命名为users.txt。
解答:
cp /etc/passwd ~/project/docs/users.txt
习题3:使用ls命令以长格式列出project目录及其子目录的所有文件,包括隐藏文件,并按修改时间倒序排列。
解答:
ls -laR ~/project | sort -k 8 -r
-l显示详细信息,-a包含隐藏文件,-R递归列出子目录,sort -k 8 -r按第8列(修改时间)倒序。
系统管理与监控
习题4:查看当前系统的CPU使用率,并找出占用CPU最高的三个进程。
解答:
top -b -n 1 | head -n 12 | tail -n 6 ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 4
top的-b -n 1以批处理模式运行一次,ps通过--sort按CPU使用率排序。
习题5:查看系统内存使用情况,并计算可用内存百分比。
解答:
free -h | awk 'NR==2{printf "可用内存: %.2f%%\n", $7/$2*100}'
free -h以人类可读格式显示内存,awk提取第二行(内存总览)并计算可用内存比例。
习题6:查找最近24小时内修改过的.log文件,并移动到project/logs目录。
解答:

find /var/log -name "*.log" -mtime -1 -exec mv {} ~/project/logs/ \;
find的-mtime -1匹配24小时内修改的文件,-exec对结果执行移动操作。
文本处理与过滤
习题7:从users.txt中提取所有以root开头的行,并输出到project/src/admins.txt。
解答:
grep "^root" ~/project/docs/users.txt > ~/project/src/admins.txt
^在正则中表示行首。
习题8:统计users.txt中每行出现的冒号()数量,并输出总数。
解答:
grep -o ":" ~/project/docs/users.txt | wc -l
-o只匹配符合条件的字符,wc -l统计行数(即冒号总数)。
习题9:将users.txt的第三行到第五行内容反转顺序后输出。
解答:
sed -n '3,5p' ~/project/docs/users.txt | tac
sed -n '3,5p'提取指定行,tac反转行顺序(与cat相反)。
网络工具与进程管理
习题10:检查本地80端口是否被占用,并显示占用进程的PID。
解答:
netstat -tuln | grep ":80 " || echo "端口未被占用"
ss -tuln | grep ":80 " | awk '{print $7}'
netstat和ss均可查看端口状态,awk提取进程PID。
习题11:下载http://example.com/file.zip,并限制下载速度为1MB/s。
解答:

wget --limit-rate=1m http://example.com/file.zip
--limit-rate参数控制下载速率。
习题12:终止所有名为nginx的进程。
解答:
pkill nginx
pkill通过进程名终止进程,若需强制终止可加-9。
Shell脚本综合练习
习题13:编写一个脚本backup.sh,将project目录压缩为project_backup_YYYYMMDD.tar.gz,并删除30天前的备份文件。
解答:
#!/bin/bash DATE=$(date +%Y%m%d) tar -czf ~/project_backup_$DATE.tar.gz ~/project find ~ -name "project_backup_*.tar.gz" -mtime +30 -delete
保存后通过chmod +x backup.sh赋予执行权限。
习题14:使用循环检测http://example.com是否可访问,若不可访问则每5秒重试,最多尝试10次。
解答:
#!/bin/bash
for i in {1..10}; do
if curl -s --head http://example.com >/dev/null; then
echo "服务正常"
exit 0
else
echo "尝试 $i/10,等待5秒..."
sleep 5
fi
done
echo "服务不可达"
通过以上习题,读者可以系统掌握Linux命令的实用技巧,从基础的文件操作到复杂的脚本编写,逐步练习将显著提升命令行效率,建议结合实际场景灵活运用,例如结合cron定时任务自动化备份,或通过awk和sed处理日志数据,持续实践是精通Linux命令的关键。















