Linux脚本写作学习笔记
第一章
1.11 调试脚本
- For I in {1…6} == for I in
seq 1 6
1.12 函数和参数
- 1 , 1, 1,@, ? 等 . ?等. ?等.#代表了变量的总数
- 导出函数
- shift移动参数
1.13 将一个命令的输出发送给另一个
- 管道+反引用+子shell法:output=$(cmd)
- 子shell与反引用加双引号
1.14
- read命令的用法
1.16
- 多种类型的循环
1.17
- If elseif
- 算数比较 []
- [ condition ] && cmd
[ condition ] || cmd - -a -o的逻辑操作符
- 文件有关的测试:-d -f -x -L等
- 字符串比较[[ ]],空串-z,-n
第二章
2.2
-
- stdin的文件名
- cat命令的常规操作
2.4
- find命令详解。-print0
- proc目录介绍
- 文件类型描述符
- 文件的三种时间戳
- 查找后删除、查找后执行
2.5
- xargs命令详解
- 常见用法:多行按照指定数目转单/多行、指定分隔符分割字符串、统计行数、结合sh -c子shell
2.6
- tr命令详解
- 'a-zA-Z’连字符用法
- 常见用法:大小写替换、秘钥数字字符替换、删除命中字符集、补集、压缩字符/删除多余字符、文件中的数字相加(https://blog.csdn.net/u011983531/article/details/102758628?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task)
- 字符类
2.7
- md5sum、sha1sum、md5deep、sha1deep命令
- find、xargs、md5sum计算递归校验和
- openssl生成shadow密码(加盐散列)
2.8
- crypt、gpg、base64命令
2.9
- sort命令:对多个文件合并后按指定列排序、检查文件是否排序
- uniq命令:删除多余行、提炼唯一行、统计出现次数、找出重复的行
2.10
- /tmp目录重启清空
- mktemp命令使用:创建临时文件/目录、按照指定模板(3X)生成文件、仅仅只是名字
2.11
- split命令:按指定大小分割文件并命名、按指定行/指定字段分割
2.12
- %.、#.非贪婪提取文件名、扩展名
2.13
- rename命令:批量重命名文件、配合find等批量重命名文件、‘s/ /_/g’ 'y/A-Z/a-z/'命令
2.14
- ^与$开始和结束,检查是否为单词(利用自带词典)。在某个文件或者目录中,查找以什么为开始的单词
- aspell命令检查是否为单词。
- -z输出结果是否为空。
2.16
- &后台操作
- $! 最后一个进程的pid
- wait等待进程结束
- parallel命令完成并行
2.17
- 生成目录树的自定义方式find+tr+basename
- 统计目录中有多少文件,两次fin+wc -l命令
第三章
3.2
- dd命令:生成指定大小的文件
3.3
- comm命令:交集、差集、求差
3.4
- 结合awk、查找并删除重复文件
一个非常好的学习脚本
awk命令、sort结合uniq命令
3.5
- 文件类型:https://blog.csdn.net/MrDongShiYi/article/details/81625172
- 文件权限的解释(特殊权限粘滞位、作为属主使用setuid、setgid)
- chmod用法:文件权限改变
- chown用法:修改属主
3.6
- chattr:设置为不可修改
3.7
- touch用法:空白文件生成、修改具体的时间戳
3.8
- ln创建符号链接
3.9
- file命令:文件类型
- While done<
- 关联数组
- cut命令3.10
3.10
- mkfs命令、mount、unmount命令、fdisk命令
3.12
- diff命令:对比文件差异
- patch命令:根据差异修补文件
3.13
- head与tail命令:指定文件/pid来看文件数据
3.15
- pushd、dirs与popd:文件栈
cd-
3.16
- Wc命令:统计文本行数、单词书、字符数
3.17
- 打印目录树的各种形态:tree
第四章
4.2
- 正则表达式的组成:常见的四种符号+几个例子与说明
- 正则表达式图形化:https://regexper.com/?#%28%20%2B%5Ba-zA-Z%5D%2B%20%2B%29
正则表达式在线生成与测试:https://www.sojson.com/regex/generate
4.3
- grep命令详解:基于文本内的内容寻找文件/文件内的内容
4.4
- cut命令:按列切分字符串
4.5
- sed:流式替换,几个特殊用法&、\1等
- 几个正则表达式:
^$、/d、\b[0-9]{3}\b
4.6
- awk命令:按行用指定方法处理文本,进行展示或提炼
其中有许多内建函数、关联数组支持
4.7+4.8+4.10
- 3个例子。逐行统计单词出现次数+做文本全量替换以及反替换+展示固定的列
4.9
- paste命令:按列合并文件
4.10+11+12+13+14:
- 个例子:打印文件的第N行/列,打印指定行或模式之间的文本,逆序输出,解析文件中的URL与电子邮件地址,删除文件中包含特定单词的句子,替换某个目录下所有文件中的特定词,变量中的文本替换与提取
第五章
5.1-5.4
wget、lynx(只适用于纯文本)与curl下载网页内容
curl与wget区别于联系:https://blog.csdn.net/yushupan/article/details/83578633?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2
5.5:
基于curl实现gmail读取
5.6:
基于lynx解析网页文字
5.7:
基于curl提取网页图片
5.8:
自动生成网页相册html脚本
5.9
利用Twitter命令行客户端来实现Twitter内容读写。
其中读取使用了各种文本替换工具使之更易读
5.10
了解网络url的api,查询固定内容并将下载结果进行解析
实际上更多的是读取html网页,然后使用文本处理工具剥离各种标签将我们所想要的内容提取出来。
第六章 git学习补充:Linux shell脚本攻略6章+廖雪峰官网
第七章:
7.2-75
- tar命令详解:归档文档、压缩文档、解压提取文档。
各种情景:追加、ssh远程传输、拼接、时间戳检验、比较与现有系统、删除、正则排除 - cpio了解
- gzip压缩数据/单个文件,gunzip解压缩。
多个文件数据流的压缩办法、多种比例压缩。与tar的结合 - zip与unzip的使用
- squashfs环回文件系统创建
- rsync同步、备份、远程传输数据(不局限于本地)
借助crontab实现定期备份 - 差异化归档:借助find+date+tar实现
- fsarchiver的全盘镜像
第八章:
- 网络基础知识:
TCP/IP协议与packet简介、ifconfig命令显示信息简介、DHCP简介(dhclient命令)、MAC地址欺骗命令、DNS域名服务(/etc/resolv.conf文件定义名字服务器)、DNS查找(/etc/hosts名字解析)、网关理解与route路由列表展示、添加 - ping命令介绍与如何看命令返回结果的理解
ttl理解:https://blog.csdn.net/changandaxue/article/details/84375133?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1
https://baike.baidu.com/item/TTL/130248?fromtitle=TTL%E5%80%BC&fromid=1188265&fr=aladdin
3. ping与curl之间存在不同,ping不通,curl能通是因为ping基于ICMP协议,服务器或者防火墙可以通过拒绝ICMP来拒绝ping。
因此检测连通性不能只用ping,也要用curl
第九章:
9.2:
- df与du命令详解。
du反应文件占用磁盘空间大小;df反应磁盘空间可用情况
9.3
- time命令详解,解析软件/程序/脚本执行时间、内存等信息
作业:过去提到的所有例子,用讲的命令手写一遍,这样才算是会了
shell脚本攻略,是带你迅速上手常用的Linux脚本命令,急速知道常用命令的输入输出以及应用场景
结合另一本书命令行与脚本中的几种结构化语句,就可以迅速写出自己需要的脚本
Linux四部分内容
- 常用命令(脚本攻略)
- 基础语法熟悉:结合常用命令写几个实用脚本(命令行与脚本)+找网上的经典例子进行练习
- Linux各种基础知识(命令行与脚本+私房菜)
- 各种实用工具、软件(私房菜)
- *更高进阶:Unix高级编程
1+2一起,3+4一起
学习一个新学科之前,一定先要弄清楚怎么学这个问题(就像是重构的注重设计,长远来看无限利好学习效率)(着重点还是描述、目的、途径、指标,从实用角度去看这个学科,迅速get到最基本知识,服务于实际实用,然后再去深入研究,让用的更加优雅)