1. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
文本处理命令
- cat 用来展示文本
- tac 逆向的展示文本
- rev 将每一行文字逆向展示
- hexdump 用来查看二进制文件的内容
- more/less 分页查看文本
- head/tail 开头和末尾。 tail -f常被用来追踪更新状。 head -n +k 和 tail -n -k 分别代表了我要看前k行,和我要看倒数k行。head -n -k意思是,除了倒数k行,其他都显示,而tail -n +k 指的是 从第k行开始展示。
- cut 按列展示。 head/tail可以用来处理行,而cut可以用来处理列。-d 用来指明分隔符,而-f用来指明第几列。
- paste 用来展示多个文件。会合并每一行展示。 注意cat会分上下不同行展示。
文本分析命令
- wc 用来计数
- sort -d 还是分隔符 -k: 用哪一个来判别 -n:数字大小
- uniq -c 每行的次数加行的内容 -d:出现过n次的行 -u:只出现过一次的行
- diff 统计不一样的地方(每一行比较)
- tr 可以用来替换字符
文件查找工具
- xargs xargs cmd arg 就是xargs动态生成了cmd的参数 -nx可以表达为1个一行,比如需要add user,一个个添加,你就可以在后面加个 -n1
- locate 文件搜索,速度非常快。但是是在数据库里搜索的,查不到刚新建的文件。适合用来搜索比较固定的文件。
- find 文件搜索,可以指定目录,如果不指定就是在当前目录下,而且默认递归。
其中注意 -size检索有点怪,他会返回一个(k-1,k] 区间的文件。-k 会返回[0,k-1], +k会返回(k, +limit) - fls可以把查找的文件输出到一个file里 delete可以把找到的文件全部删除,但这是一个非常危险的操作。ok可以配合别的命令一起使用,例如 find -name "*.txt" -ok cp {} /opt ; 这里 {} 代表了find命令找到的文件,而 ; 是提示符 -exec是拷贝的时候不会再问你y不y了。
文件处理三剑客
grep: 过滤文本,把特定的行挑选出来。-m 匹配m次后停止 -v取反 -I 大小写不敏感
sed: 也支持正则表达式。非交互式地修改文件。也可以像grep一样过滤文件。sed的行为是,读取一行处理一行,并且sed在替换方面功能比较强。
文本格式化(printf)
相当于增强版的echo。可以把输出的结果进行格式化,
2. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
grep默认就支持正则表达式,-E可以使用扩展正则表达式,扩展正则表达式的好处是可以不用加繁琐的‘\’来表明这个符号是特有的符号
在记录正则表达式和拓展表达式之前,先回顾下wildcard的用法。
- *代表任何的字符
- ? 代表单个字符
- [0-9] 代表任何从0-9的字符
正则表达式(扩展):
- .会匹配任意单个字符
- *贪婪模式
- [] 里面选择一个。比如[wang] [1-6]
- ? 0 or 1
- + 最少1次
- {m,n} m到n次。m和n可以被省略,变成一个的单传的上界或者下界
- ^/$ 分别代表行首或者行尾
- <> 用来匹配单词
- () 用来分组
- | or
3. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
SHELL中所有的变量都被认为是字符。
变量命名规则:
- 区分大小写
- 不能用内置变量
- 数字字母下划线,不能以数字开头
不同种类的变量:
- 环境变量: 允许在子进程中使用 export
- 只读变量: 其实就是常量
- 位置变量: 在脚本代码中调用通过命令行传递给脚本的参数
- 状态变量: 退出状态码变量 $?, 注意这里记录的是最后一个命令的退出状况。
- 局部变量: 只在函数内部中其效果
4. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
5. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
6. 磁盘存储术语总结: head, track, sector, cylinder.
- head 磁头,用来指向数据的位置。每一个扇区对应了一个head。所以磁头指向同一个位置
- track 磁道,在盘面上的一圈一圈的轨道。磁盘头可以移到不同的track上来获取不同位置的磁盘信息。编号从里到外0-n
- sector 扇区 磁盘上的最小单位。
- cylinder 柱面 所有的同一个磁道的集合。确实是一个柱子的感觉
7. 总结MBR,GPT结构。
MBR 不超过2T。但是现在还是在广泛使用中的。一块硬盘最多有4个主分区。也可以3个分区加1个扩展分区(N个逻辑分区)
0磁道0扇区 512 bytes:
446: bootloader
64: 每16个byte识别一个分区
BIOSGPT 支持128个分区,容量可以达到8Z。自带备份分区表。UEFI
8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
fdisk
fdisk -l 来观看目前分区的情况
fdisk-l.png
fdisk + 磁盘来进行交互式操作需要注意的是,逻辑分区一定是从5开始的,1-4是预留给主分区和拓展分区的。fdiskinteract.png
parted
很危险的命令,可以直接分区或者删除分区
mkfs
mkfs是用来指定文件系统的命令(格式化分区),图中示例了给/dev/sdb1加上了ext4的文件管理系统
mkfs.png
tune2fs
可以用来看ext系列的分区的属性。
tune2fs.png
xfs_info
可以用来看xfs的分区
xfs_info .png
fsck
mount
新磁盘识别以后,要指定管理系统(fdisk),然后还要指定文件管理系统(mkfs),接下来,需要把这个分区和“/”产生联系,要做到这点就需要挂载。图片里,我们把dev/sdb1挂到了root底下的logs文件夹。需要注意的是,mount的文件夹应该是空的。
mount.png
unmount
取消挂载关系可以用umount,比如如图所示
umount.png
swapon
swap -a 启用swap空间
swapoff
禁用所有swap
swapoff.png