文章目录
厚基础Linux——第六周作业
1、查找/etc目录下大于1M且类型为普通文件的所有文件
涉及知识点
find命令
find命令是Linux下最常用的搜索命令,支持多种子命令,对文件名,inode,正则表达式,用户组,文件类型,文件大小,元数据时间,权限构造检索条件。多种检索条件还可以进行逻辑运算。本题考查对文件类型,文件大小进行且运算。
#find常见用法
#find [Path] -子命令 子命令参数
#Path不指定时,检索当前目录
#-type 检索文件类型
#type参数
#f 普通文件
#d 目录
#l 链接文件
#b 块文件
#c 字符文件
#s 套接字文件
#p 管道文件
#-size 检索文件大小
#size参数
#[+/-]n单位
#单位大小写敏感
#k M G c(byte)
#[+/-]n
#n 描述区间为(n-1,n]单位的文件大小
#+n描述区间为(n,无穷大)文件大小
#-n描述区间为[0,n-1]文件大小
#检索条件的逻辑运算
#-a 表示and
#-o 表示or
#-not 表示not,否定
代码段
find /etc/ -size +1M -a -type f | xargs ls -lh
2、打包/etc/目录下面所有conf结尾的文件,压缩包名称为当天的时间,并拷贝到/usr/local/src目录备份。
涉及知识点
find命令
这里需要使用find命令对文件名进行检索
#find命令常见用法
#-name
#支持通配符"*conf"
xargs命令
很多命令不支持标准输入,本题中的tar命令就是其中之一。xargs接收标准输入,转化为参数提供给这些命令。
#xargs命令常见用法
#xargs [CMD] 将标准输入转化为[CMD]命令的参数
find | xargs tar ...
#xargs行转列。若命令不支持多参数,xargs需要将多参数项转换为列形式,逐一执行
#xargs -n1 将参数转换为1个字段1行
#批量创建用户user1,user2..user10
echo user{1..10} | xargs -n1 useradd
tar命令
tar命令对多个文件进行打包,支持多种压缩格式。
#tar命令常见用法
#tar czvf [FILE].gz [DIR] 压缩[DIR]目录下文件到[FILE].gz,使用gzip算法
# c 使用gzip算法
# j 使用bzip2算法
# J 使用xz算法
#tar xvf [FILE].gz -C [DIR] 解包[FILE],无需指定压缩算法,解包到[DIR]目录
代码段
find /etc/ -name "*conf" | xargs tar czvf /usr/local/src/`date +%F`.tar.gz
3、利用sed 取出ifconfig命令中本机的IPv4地址
涉及知识点
sed命令
本题中使用正则表达式进行ip匹配,后使用搜索替换功能,仅留下分组。
#sed常见用法
#选项
#-n 禁用自动输出
#-E 在脚本中寻址使用正则表达式
#-e 多个脚本并行执行
#;分隔指令,多个指令串行执行
#搜索替换
#s/xxxx/yyy/[Option]
#[Option]
#g表示整行执行替换
#p表示打印替换成功的行
#w f1.txt表示将替换成功的行写入f1.txt
#i I 表示替换忽略大小写
代码段
ifconfig ens32 | sed -nE '2s/^[^0-9]+([0-9.]+).*$/\1/p'
4、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
涉及知识点
本题涉及修改文件,需要使用i选项,结合正则表达式搜索替换实现删除。本题修改的是系统配置文件,还应该使用备份选项。
sed命令
#sed命令常见用法
#修改
#-i 会将输出内容写入到文件
#-i.bak 在写入前会备份原文件,后缀为.bak,可自定义后缀。
代码段
sed -Ei.bak 's/^#[[:space:]]+(.*$)/\1/' /etc/fstab
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
涉及知识点
本题仍旧采用正则表达式和搜索替换,只是从处理文档变成了处理标准输入,搜索替换的内容包含#时,分隔附可以换其它。
代码段
#目录名
echo "/etc/fstab" | sed -nE 's#(^/.*/)(.*$)#\1#p'
#基名
echo "/etc/fstab" | sed -nE 's#(^/.*/)(.*$)#\2#p'