今日小练题目📢
需求: 写一个检测脚本,用来检测本机所有磁盘分区读写是否都正常。 提示: 可以遍历所有挂载点,然后新建一个测试文件, 然后再删除测试文件,如果可以正常新建和删除,那说明该分区没问题
优秀作业🤌🏻
#!/bin/bash
#author:xYLiuuuuuu
#version:v1
#date: 2024-11-15
for mount_p in `df |sed '1d' |grep -v 'none' |awk '{print $NF}'`
do
touch $mount_p/testfile && rm -f $mount_p/testfile
if [ $? -ne 0 ]
then
echo "$mount_p 读写有问题"
else
echo "$mount_p 读写正常"
fi
done
敲黑板📝
- && 连接符表示当前面的命令执行成功才会执行后面的命令
- 写脚本的过程中,可以一边在命令行中运行命令调试一边写脚本
- sed命令,常用于处理文本。测试必会之 Linux 三剑客之 sed - 尘世风 - 博客园
sed 参数 动作
参数:e编辑 n显示
动作:d删除 a新增(该行的下一行) i插入(该行的上一行) c取代 p打印
# 在testfile文件的第四行下面添加newLine
$ sed -e 4a\newLine testfile
# 将testfile的内容列出并且列印行号,同时,请将第 2~5 行删除
$ nl testfile | sed '2,5d'
# 在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer?
$ nl testfile | sed '2a Drink tea or ......\
drink beer ?'
# 将第 2-5 行的内容取代成为 No 2-5 number
$ nl testfile | sed '2,5c No 2-5 number'
# 仅列出 testfile 文件内的第 5-7 行
$ nl testfile | sed -n '5,7p'
# 删除 testfile 所有包含 oo 的行,其他行输出
$ nl testfile | sed '/oo/d'
# 搜索 testfile 有 oo 关键字的行
$ nl testfile | sed -n '/oo/p'
sed 's/要被取代的字串/新的字串/g' g是全局替换
# 将 testfile 文件中每行第一次出现的 oo 用字符串 kk 替换,然后将该文件内容输出到标准输出
$ sed -e 's/oo/kk/' testfile
# 批量操作当前目录下以 test 开头的文件
$ sed -i 's/oo/kk/g' ./test*
$ sed -i.bak 's/hello/HELLO/' text.txt # 比较安全
# 将其中每行末尾的 `:` 都替换成`@`,将 `a`替换成`A`,并在文本末尾加上" Sed Test "
$ sed -i -e 's/:/@/g' \
-i -e 's/a/A/' \
-i -e '$a Sed Test' 1.txt # $最后一行
- grep命令,常用于搜索。
测试常用:
grep pattern file
grep -i pattern file # 忽略大小写
grep -v pattern file # 不显示匹配行
grep -o pattern file # 只把每个匹配的内容独立的行显示
grep -E pattern file # 使用拓展正则表达式,相当于egrep
#注意:grep 'a[0-9]\{10\}' 等同于 grep -E 'a[0-9]{10}'
grep -B n pattern file # 打印以文本起始的n行
grep -A n pattern file # 打印以文本结尾的n行
grep -C n pattern file # 打印输出文本n行,打印本文前后n行
grep pattern -r dir/ # 递归搜索
grep -m1 # 匹配匹配中的第一个
grep -n # 顺便输出行号
grep -P # 可以让grep使用perl的正则表达式语法
# 找出500错误时候的上下文
$ grep -A 2 ' 500 ' nginx.log
# 先访问 博客主页,利用 grep href 过滤出所有包含 url 的内容
$ curl -s https://www.cnblogs.com/feng0815/ | grep -o "https:[^\"]*"
- awk命令,语言解析引擎。
awk 'pattern{action}'
# 打印最后一列
$ ps | awk '{print $NF}'
# -F 指定分隔符
$ awk -F ":" '{print $1}' file
# 过滤长度
$ awk 'length($0) > 15' file