Linux基础3
2021/12/28 7:08:47
本文主要是介绍Linux基础3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 压缩与解压
- 文件操作
- grep命令
- sed命令
- find命令
- locate命令
- Tasks
- 文件压缩
- 使用grep和awk从文件中筛选字符串
- 使用find和locate定位文件
- 参考
压缩与解压
格式 | 压缩命令 | 解压命令 |
---|---|---|
tar | tar czvf filename.tar dirname | tar zxvf filename.tar |
zip | zip filename.zip dirname | unzip filename.zip |
gz | tar zcvf filename.tar.gz dirname gzip filename.tar.gz gzip filename.tgz | tar zxvf filename.tar.gz gunzip filename.gz gzip -d filename.gz |
bz2 | tar jcvf filename.tar.bz2 dirname bzip2 -z filename.tar.bz2 | tar jxvf filename.tar.bz2 bzip2 -d filename.bz2 |
tar命令详解:
- 功能(五选一,必选)
- -c:压缩
- -r:向压缩包追加文件
- -x:解压
- -t:查看
- -u:更新压缩包
- 其他必须参数
- -f:文件,此参数需放置在末尾
- 可选参数
- -v:显示所有过程
- -z:处理有gzip属性的文档
- -j:处理有bz2属性的文档
- -Z:处理有compress属性的文档
文件操作
grep命令
grep用于查找文件中满足查找条件的内容
- 基本命令
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][查找内容格式(可用正则)][文件/目录...]
- 参数说明
参数 | 含义 | 示例 | 解释 |
---|---|---|---|
-a | 不要忽略二进制的数据 | - | - |
-b | 标示出该行第一个字符的编号 | - | - |
-c | 统计符合查找格式的列数 | grep -c 超人 jaychou_lyrics.txt | 同济jaychou_lyrics.txt文件中包含“超人”的行数 |
-h | 在显示符合样式的那一行之前,不标示该行所属的文件名称 | - | - |
-H | 在显示符合样式的那一行之前,表示该行所属的文件名称 | - | - |
-i | 忽略字符大小写的差别 | - | - |
-n | 在显示符合样式的那一行之前,标示出该行的列数编号 | - | - |
-q | 不显示任何信息 | - | - |
-r | 以递归的方式查找符合条件的文件 | grep -v test /home/test/ | 查找/home/test/文件夹及其子文件夹下所有包含test的文件 |
-s | 不显示错误信息 | - | - |
-v | 显示不包含匹配文本的所有行 | grep -v test test.txt | 查找test.txt文件中所有不包含test的行 |
-V | 显示版本信息 | - | - |
-w | 只显示全字符合的列 | - | - |
-x | 只显示全列符合的列 | - | - |
sed命令
sed可以用来对文件进行增、删、改、查。
- 基本命令
sed [-nefri] ‘command’ 文件名
- 参数说明
参数 | 含义 |
---|---|
-n | 只显示经sed特殊处理的内容 |
-e | 直接在指令列模式上进行 sed 的动作编辑 |
-f | 将 sed 的动作写在一个档案内 |
-r | sed的动作可以是延伸型正规表示语法 |
-i | 直接修改读取的档案内容 |
- 指令说明
参数 | 含义 | 示例 | 解释 |
---|---|---|---|
a | add,新增 | sed ‘1,3a test’ test.txt | 在test.txt文件第1行到第3行后增加test |
c | 替换 | sed ‘1,3c test’ test.txt | 将test.txt文件第1行到第3行替换为一行test |
d | delete,删除 | sed ‘2,$d’ test.txt | 删除test.txt文件第2行至最后一行 |
i | insert,插入 | sed ‘1,3i test’ test.txt | 在test.txt文件第1行到第3行前增加test |
p | print,列印 | sed -n ‘/超人/p’ test.txt | 查找test.txt文件中包含“超人”的行 |
s | 替换 | sed -n ‘/我/p’ test.py | sed ‘s/我/你/g’ | 将test.txt中的“我”替换为“你” |
w | write,写入 | sed ‘1,3w test2.txt’ test.txt | 将test.txt中的第1行至第3行写到test2.txt文件中 |
find命令
find查找指定目录下的文件。
- 基本命令
find path -option [ -print ][ -exec -ok command ]
- 参数说明
参数 | 含义 |
---|---|
-mount | 只检查和指定目录在同一个文件系统下的文件 |
-amin n | 在过去 n 分钟内被读取过 |
-anewer file | 比文件 file 更晚被读取过的文件 |
-atime n | 在过去n天内被读取过的文件 |
-cmin n | 在过去 n 分钟内被修改过 |
-cnewer file | 比文件 file 更新的文件 |
-ctime n | 在过去n天内被修改过的文件 |
-empty | 空的文件 |
-ipath p, -path p | 路径名称符合 p 的文件,ipath 会忽略大小写 |
-name name | 文件名称符合 name 的文件 |
-size n | 文件大小 是 n 单位 |
-type c | 文件类型是 c 的文件 |
locate命令
locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行loacte时直接找该索引,查找到文件
- 基本命令
Locate [-参数] [格式]
- 参数说明
参数 | 含义 |
---|---|
-e | 寻找不满足条件的文件 |
-n | 至多显示 n个输出 |
-r | 使用正规运算式做寻找的条件 |
-d | 指定资料库的路径 |
-h | 显示辅助讯息 |
Tasks
文件压缩
- 任务
- 在指定目录下下载https://mirror.coggle.club/dataset/jaychou_lyrics.txt.zip
- 打包指定文件夹为zip格式
- 打包指定文件夹为tar格式。
- 打包指定文件夹为tar.gz格式。
- 代码
下载压缩文档
[没有名字!@i-ym8u2kyp ~]$ cd ling [没有名字!@i-ym8u2kyp ling]$ wget https://mirror.coggle.club/dataset/jaychou_lyrics.txt.zip --2021-12-21 10:58:54-- https://mirror.coggle.club/dataset/jaychou_lyrics.txt.zip 正在解析主机 mirror.coggle.club (mirror.coggle.club)... 139.215.234.228, 2408:8731:c001:2:3::3fb 正在连接 mirror.coggle.club (mirror.coggle.club)|139.215.234.228|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:52607 (51K) [application/zip] 正在保存至: “jaychou_lyrics.txt.zip” 100%[======================================>] 52,607 --.-K/s 用时 0.02s 2021-12-21 10:58:55 (2.30 MB/s) - 已保存 “jaychou_lyrics.txt.zip” [52607/52607])
压缩文件夹
[没有名字!@i-ym8u2kyp ~]$ zip ling.zip ling adding: ling/ (stored 0%) [没有名字!@i-ym8u2kyp ~]$ tar czvf ling.tar ling ling/ ling/datawhale/ ling/datawhale/affairs.txt ling/vimtest.py ling/nanotest.py ling/test5.py ling/affairs/ ling/affairs/affairs.py ling/affairs/__pycache__/ ling/affairs/__pycache__/affairs.cpython-36.pyc ling/test6.py ling/sleep.py ling/nohup.out ling/sleeplog.txt ling/jaychou_lyrics.txt.zip [没有名字!@i-ym8u2kyp ~]$ tar zcvf ling.tar.gz ling ling/ ling/datawhale/ ling/datawhale/affairs.txt ling/vimtest.py ling/nanotest.py ling/test5.py ling/affairs/ ling/affairs/affairs.py ling/affairs/__pycache__/ ling/affairs/__pycache__/affairs.cpython-36.pyc ling/test6.py ling/sleep.py ling/nohup.out ling/sleeplog.txt ling/jaychou_lyrics.txt.zip
结果
ling.tar、ling.tar.gz、ling.zip三个压缩包。
使用grep和awk从文件中筛选字符串
-
任务:
- 下载周杰伦歌词文本,并进行解压
- 利用grep命令完成以下操作,并输出到屏幕:
- 统计歌词中包含【超人】的歌词
- 统计歌词中包含【外婆】但不包含【期待】的歌词
- 统计歌词中以【我】开头的歌词
- 统计歌词中以【我】结尾的歌词
- 利用sed命令完成以下操作,并输出到屏幕:
- 将歌词中第2行至第40行删除
- 将歌词中所有【我】替换成【你】
-
代码
解压下载好的歌词
[没有名字!@i-ym8u2kyp ling]$ unzip jaychou_lyrics.txt.zip Archive: jaychou_lyrics.txt.zip inflating: jaychou_lyrics.txt
统计歌词中包含【超人】的歌词
[没有名字!@i-ym8u2kyp ling]$ grep -c 超人 jaychou_lyrics.txt 5 [没有名字!@i-ym8u2kyp ling]$ grep 超人 jaychou_lyrics.txt 如果超人会飞 那就让我在空中停一停歇 不要问我哭过了没 因為超人不能流眼泪 只能说当超人真的好难 如果超人会飞 那就让我在空中停一停歇 不要问我哭过了没 因為超人不能流眼泪
统计歌词中包含【外婆】但不包含【期待】的歌词
[没有名字!@i-ym8u2kyp ling]$ grep -c 外婆 jaychou_lyrics.txt|grep -v 期待 17 [没有名字!@i-ym8u2kyp ling]$ grep 外婆 jaychou_lyrics.txt|grep -v 期待 我想带你 回我的外婆家 我想带你 回我的外婆家 今天是外婆生日 载着外婆开着拉风的古董车兜兜兜风 外婆她脸上的涟漪 外婆她的无奈 记得去年外婆的生日 表哥带我和外婆参加 是因为看到外婆失落而失落 我告诉外婆 我没输 不需要改变 只要外婆觉得好听 外婆露出了笑容 说她以我为荣 外婆她的无奈 外婆她的无奈
统计歌词中以【我】开头的歌词
[没有名字!@i-ym8u2kyp ling]$ grep -c ^我 jaychou_lyrics.txt 768
统计歌词中以【我】结尾的歌词
[没有名字!@i-ym8u2kyp ling]$ grep -c $我 jaychou_lyrics.txt 0
将歌词中第2行至第40行删除
删除前文件前41行
[没有名字!@i-ym8u2kyp ling]$ sed -n '1,41p' jaychou_lyrics.txt 想要有直升机 想要和你飞到宇宙去 想要和你融化在一起 融化在宇宙里 我每天每天每天在想想想想著你 这样的甜蜜 让我开始乡相信命运 感谢地心引力 让我碰到你 漂亮的让我面红的可爱女人 温柔的让我心疼的可爱女人 透明的让我感动的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我疯狂的可爱女人 漂亮的让我面红的可爱女人 温柔的让我心疼的可爱女人 透明的让我感动的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我疯狂的可爱女人 想要有直升机 想要和你飞到宇宙去 想要和你融化在一起 融化在宇宙里 我每天每天每天在想想想想著你 这样的甜蜜 让我开始乡相信命运 感谢地心引力 让我碰到你 漂亮的让我面红的可爱女人 温柔的让我心疼的可爱女人 透明的让我感动的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我疯狂的可爱女人 漂亮的让我面红的可爱女人 温柔的让我心疼的可爱女人 透明的让我感动的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我疯狂的可爱女人 漂亮的让我面红的可爱女人 温柔的让我心疼的可爱女人 透明的让我感动的可爱女人
删除命令
[没有名字!@i-ym8u2kyp ling]$ sed -i '2,40d' jaychou_lyrics.txt
删除后文件前50行
[没有名字!@i-ym8u2kyp ling]$ sed -n '1,50p' jaychou_lyrics.txt 想要有直升机 透明的让我感动的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我疯狂的可爱女人 漂亮的让我面红的可爱女人 温柔的让我心疼的可爱女人 透明的让我感动的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我疯狂的可爱女人 如果说怀疑 可以造句如果说分离 能够翻译 如果这一切 真的可以 我想要将我的寂寞封闭 然后在这里 不限日期 然后将过去 慢慢温习 让我爱上你 那场悲剧 是你完美演出的一场戏 宁愿心碎哭泣 再狠狠忘记 你爱过我的证据 让晶莹的泪滴 闪烁成回忆 伤人的美丽 你的完美主义 太彻底 让我连恨都难以下笔 将真心抽离写成日记 像是一场默剧 你的完美主义 太彻底 分手的话像语言暴力 我已无能为力再提起 决定中断熟悉 然后在这里 不限日期 然后将过去 慢慢温习 让我爱上你 那场悲剧 是你完美演出的一场戏 宁愿心碎哭泣 再狠狠忘记 你爱过我的证据 让晶莹的泪滴 闪烁成回忆 伤人的美丽 你的完美主义 太彻底 让我连恨都难以下笔 将真心抽离写成日记 像是一场默剧 你的完美主义 太彻底 分手的话像语言暴力 我已无能为力再提起 决定中断熟悉 周杰伦 周杰伦 一步两步三步四步望著天 看星星 一颗两颗三颗四颗 连成线一步两步三步四步望著天 看星星 一颗两颗三颗四颗 连成线乘著风 游荡在蓝天边 一片云掉落在我面前 捏成你的形状 随风跟著我 一口一口吃掉忧愁 载著你 彷彿载著阳光 不管到哪里都是晴天 蝴蝶自在飞 花也布满天 一朵一朵因你而香 试图让夕阳飞翔
将歌词中所有【我】替换成【你】
[没有名字!@i-ym8u2kyp ling]$ sed -n '/我/p' jaychou_lyrics.txt | sed 's/我/你/g' 透明的让你感动的可爱女人 坏坏的让你疯狂的可爱女人 坏坏的让你疯狂的可爱女人 漂亮的让你面红的可爱女人 温柔的让你心疼的可爱女人 透明的让你感动的可爱女人 坏坏的让你疯狂的可爱女人 坏坏的让你疯狂的可爱女人 你想要将你的寂寞封闭
使用find和locate定位文件
- 任务:
- 使用find统计文件系统中以py为后缀名的文件个数
- 使用find寻找/home/文件夹下文件内容包含datawhale的文件
- 使用locate找到python3.6.1.gz文件
- 代码
统计文件系统中以py为后缀名的文件个数
[没有名字!@i-ym8u2kyp ling]$ find / -name '*.py'|wc -l find: ‘/usr/share/polkit-1/rules.d’: 权限不够 find: ‘/usr/libexec/initscripts/legacy-actions/auditd’: 权限不够 find: ‘/boot/efi/EFI/centos’: 权限不够 find: ‘/boot/grub2’: 权限不够 5810
寻找/home/文件夹下文件内容包含datawhale的文件
[没有名字!@i-ym8u2kyp ling]$ find /home -type d|grep 'datawhale' /home/datawhale /home/datawhale/liuy /home/datawhale/liuy/datawhale /home/datawhale/jane /home/datawhale/jane/datawhale /home/datawhale/jane/affairs /home/datawhale/catherine /home/datawhale/catherine/datawhale #个数 [没有名字!@i-ym8u2kyp ling]$ find /home -type d|grep 'datawhale'|wc -l 2716
定位python3.6.1.gz文件
[没有名字!@i-ym8u2kyp ling]$ locate python3.6.1.gz /usr/share/man/man1/python3.6.1.gz
参考
Datawhale Linux组队学习
这篇关于Linux基础3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南