(课堂笔记)Linux 进阶:管道、权限、权限位、定时任务、网络运维、三剑客等

本文总结了Linux进阶操作的核心知识点:

  1. 管道与批量处理(xargs、sort、uniq等命令组合使用);

  2. 文件权限管理(chmod数字表示法及chown命令);

  3. 定时任务配置(crontab时间格式与示例);

  4. 常用运维命令(网络、进程、磁盘等);

  5. 文本处理三剑客(awk列处理、sed行编辑、grep过滤);

  6. 实战练习(考试成绩分析、日志处理、销售数据分析)。


重点包括权限数字计算(如765=rwxrw-r-x)、sed的-i原地修改特性、awk按列处理数据等实用技巧,并提供了典型场景的解决方案。


Linux 中换行符 = 命令结束,xargs 防止意外执行的机制,不支持标准输入的命令,-i 在各个命令中的真实含义


🐧 Linux 课堂笔记(进阶篇)


一、管道与批量处理(| 与 xargs)

1. xargs:将输出结果转为单行(空格分隔)

bash

复制代码
# 示例:将多行结果合并为一行
cat aaa | xargs

2. |:前一个命令的输出作为后一个命令的输入

bash

复制代码
# 获取文件的第5行
head -5 aaa | tail -1

# 查找所有数字命名的文件并压缩
find . -name "[0-9]" | xargs tar -zcvf num.tar.gz

# 查找7天外的tar.gz包并删除
find . -name "*.tar.gz" -mtime +7 | xargs rm -rf

3. sort:排序

bash

复制代码
# 数值降序排序
cat aaa | sort -rn   # r:降序 n:按数值

4. uniq:去重(相邻行去重)

bash

复制代码
cat aaa | sort -n | uniq   # 先排序再去重

5. wc -l:统计行数

bash

复制代码
wc -l aaa
find . -name "[0-9]" | wc -l   # 统计数字文件个数

二、文件权限管理

ls -l 输出详解

bash

复制代码
-rw-rw-r-- 1 hadoop hadoop 29 5月 14 11:13 aaa
字段 含义
- 文件类型(-文件,d目录)
rw- 属主权限(读写)
rw- 属组权限(读写)
r-- 其他用户权限(只读)
1 子目录个数(含.和..)
hadoop 属主
hadoop 属组
29 文件大小(字节)
5月 14 11:13 最后修改时间
aaa 文件名

权限数字表示法

权限 数字
r(读) 4
w(写) 2
x(执行) 1

权限修改命令

bash

复制代码
# 修改权限(递归)
chmod -R 760 aaa   # 结果:-rwxrw---

# 修改属主/属组(需root)
chown -R omm:dbgrp aaa

练习题 :chmod 765 file 的含义?

✅ 属主:rwx(7),属组:rw-(6),其他:r-x(5)


三、定时任务 crontab

基本命令

bash

复制代码
crontab -e   # 编辑定时任务
crontab -l   # 列出所有定时任务
crontab -r   # 删除定时任务

时间格式:分 时 日 月 周

位置 含义 范围
第1个* 分钟 0-59
第2个* 小时 0-23
第3个* 日 1-31
第4个* 月 1-12
第5个* 周 0-6

周 (0-6)中的 0 表示 周日中午 12点00分


周 (0-6)和 天(0-31) 一般不会同时定义

示例

bash

复制代码
# 每分钟执行
* * * * * echo hello >> /home/hadoop/2608/test/1

# 每天凌晨1点执行
0 1 * * * echo 123 >> /home/hadoop/2608/test/1

# 每年4月3日2:01执行
1 2 3 4 * echo 123 >> /home/hadoop/2608/test/1

# 每月1号1:00执行脚本
0 1 1 * * /path/to/script.sh

四、Linux 网络与运维命令

命令 作用 示例
ifconfig 查看IP地址 ifconfig
ping 测试网络连通性 ping 192.168.5.100
netstat -apn 查看端口占用 `netstat -apn
su - 用户名 切换用户(环境变量生效) su - root
free -m 查看内存(MB) free -m
df -h 查看磁盘使用情况 df -h
du -sh 查看文件/目录大小 du -sh /home
top 实时查看进程资源 top
kill -9 PID 强制结束进程 kill -9 12345
`ps -ef grep 服务` 查看服务是否启动
wget 下载网络资源 wget http://xxx.com/file
rz -E 上传文件(Windows→Linux) rz -E
sz 文件名 下载文件(Linux→Windows) sz aaa

常见服务端口

服务 端口
Oracle 1521
MySQL 3306
Tomcat 8080
SSH 22
SVN 8443/443
HDFS 9870

五、Linux 三剑客(文本处理)

1. awk:按列拆分

bash

复制代码
# 语法
awk -F "分隔符" '{print $N}' 文件名

# 示例:输出emp文件的第3列(岗位)
awk -F "\t" '{print $3}' emp | sort | uniq

# 示例:输出最高薪资
awk -F "\t" '{print $6}' emp | sort -rn | head -1

# 示例:统计部门个数
awk -F "\t" '{print $8}' emp | sort -rn | uniq | wc -l

2. sed:按行处理

bash

复制代码
# 输出第2-4行
sed -n '2,4p' user.log

# 删除第3行
sed -i '3d' user.log

# 替换(全局)
sed -i 's/101/zhangsan/g' user.log

核心 :sed -i 的 -i = in-place(原地修改),文件内容直接改变,不输出到屏幕。


sql 复制代码
# ❌ 不加 -i:只输出到屏幕,原文件不变
sed 's/old/new/' file.txt

# ✅ 加 -i:直接修改原文件
sed -i 's/old/new/' file.txt

# 备份 + 修改
sed -i.bak 's/old/new/' file.txt  # 生成 file.txt.bak 备份

3. grep:筛选

bash

复制代码
# 筛选包含"SALESMAN"的行
grep "SALESMAN" emp

# 筛选不包含"1981"的行
grep -v "1981" emp

# 管道中使用
ps -ef | grep mysql

六、课堂练习与参考答案

练习1:score 文件

文件内容:

text

复制代码
zhangsan,yuwen,98
lisi,yuwen,79
wangwu,yuwen,76
xiongda,yuwen,100
xionger,yuwen,88

Q1:多少人参加考试?

bash

复制代码
awk -F "," '{print $1}' score | wc -l

Q2:最高分是多少?

bash

复制代码
awk -F "," '{print $3}' score | sort -n | tail -1

Q3:最高分的学生姓名?

bash

复制代码
awk -F "," '{print $1,$3}' score | sort -rnk 2 | head -1 | awk -F " " '{print $1}'

练习2:user.log 文件

文件内容:

text

复制代码
20260101-101-login
20260101-102-login
20260101-101-shoucang
20260101-101-logout
20260101-102-pay
20260101-102-logout

Q1:输出第2-4行

bash

复制代码
sed -n '2,4p' user.log

Q2:删除第3行

bash

复制代码
sed -i '3d' user.log

Q3:将所有101替换为zhangsan

bash

复制代码
sed -i 's/101/zhangsan/g' user.log

Q4:输出emp表薪资第2~5名的员工姓名

bash

复制代码
awk -F "\t" '{print $2,$6}' emp | sort -rnk 2 | sed -n '2,5p' | awk -F " " '{print $1}'

练习3:sales 文件

文件内容:

text

复制代码
202001-apple-8765
202001-pear-8888
202001-banana-7777
202002-apple-3232
202002-pear-34534
202002-banana-23212
202003-apple-46546
202003-pear-7666
202003-banana-323

Q1:pear哪个月份卖得最好?

bash

复制代码
grep "pear" sales | awk -F "-" '{print $1,$3}' | sort -rnk 2 | head -1 | awk -F " " '{print $1}'
# 答案:202002

Q2:202003月卖得最好的产品?

bash

复制代码
grep "202003" sales | awk -F "-" '{print $2,$3}' | sort -rnk 2 | head -1 | awk -F " " '{print $1}'
# 答案:apple

Q3:哪个产品历史销量最少?最少是多少?

bash

复制代码
awk -F "-" '{print $2,$3}' sales | sort -rnk 2 | tail -1
# 答案:banana 323

七、小贴士

  • Ctrl + C / Ctrl + Z:终止当前命令

  • 管道 | 可以串联多个命令

  • xargs 将标准输入转为参数

  • -i 参数会直接修改文件(sed/rm等)

  • sort -rnk 2:按第2列数值降序排序

相关推荐
且从容.1 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落2 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨2 小时前
WSL2的安装与使用
linux·wsl
微小的鱼3 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng3 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮4 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky15 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默16 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816316 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
爱莉希雅&&&18 小时前
GitLab 完整学习笔记
linux·运维·服务器