1. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
    文本处理工具: cat : 查看文件内容。 -E : 显示行结束符$。 -A : 显示所有控制符。 -n : 对显示的每一行进行编号。 -b :非空行编号。 -s :压缩连续的空行成一行。
cut :按列提取文本中的字段。

 tr  :替换或删除字符串的字符。
     -d 或 --delete :删除输入中所出现指定字符的所有字段。
     -s 或 --squeeze-repeats:将每个输入信息中重复出现的字符替换为单个字符。
     -c 或 -C 或 --complement:使用集合的补集进行转换或删除操作。
     -t :替换,使用替换时确保两个字符集的长度一致,如果目标集合的字符少于源集合, 那么最后一个字符将被重复使用直到长度匹配。
     -dc :删除补集的字符。

 sort :排序
     -n 或 --numeric-sort :根据字符串的数值部分进行排序。
     -r 或 --reverse :反向排序(从高到低)。
     -f 或 --ignore-case :忽略大小写差异。
     -u 或 --unique :删除重复的行,只保留唯一的行。
     -o[FILE] :将排序结果输出到指定的文件。
     -k[#] :以给定的分隔符后的第#列进行排序,默认是空白字符为分隔符。
     -t[CHAR] :指定分隔符,默认是空白字符。
  • uniq :报告或省略重复的行。 -c :显示每行在文件中出现的次数。 -d :仅显示重复行。 -u :仅显示不重复行。 -i :比较行是忽略大小写。
  • wc :计算行、单词和字符的数量。 -l :计算行数。 -w :计算单词。 -c :计算字节数。 -m :计算字符数。
  • nl :文件中的行编号。相当于cat -b -b :指定编号的方式。 -b a :所有行的编号。 -b t :仅为非空行编号。 -n :设置行号的格式。
  • ln :左对齐。
  • rn :右对齐。
  • rz :右对齐,前导零。 -w :设置行号字段的宽度。 -s :设置行号后的分割字符。 -v :设置起始行号。
  • tac :用于方向打印文件内容(从最后一行到第一行)。 -b :在每一行的前面而不是后面的附加分隔符。 -r :将分隔符视为正则表达式。 -s :使用一个字符串作为分隔符,默认情况下分隔符的换行符。
  • tee :从标准输入读取数据,并同时写入标准输出和一个或多个文件。 -a 或 --append :不覆盖现有文件,而是将输出追加到文件中。 -i 或 --ignore-interrupts :忽略中断信号。
rev : 将一行的内容逆向显示

 hexdump : 查看非文本文件内容

 less : 实现分页显示内容

 head : 显示文本前面或后面的行内容
     -n#     显示前#行
     -n -#   除了最后#行其他都显示
 
 tail : 显示文件的倒数10行
 	-n# 	显示最后#行
 	-f 	    跟踪显示文件信息
 	-n +# 	除了前#行,显示其他行
 
 paste : 合并多个文件
     -d      指定分隔符,默认用TAB
     -s      所有行合成一行显示

 locate : 非实时查找(数据库查找)
     -i      不区分大小写
     -n #    只列举前#个匹配项目
     -r      使用基本正则表达式
 
 find : 实时查找

文本处理三剑客 grep : 命令主要对文本的(正则表达式)行基于模式进行过滤 sed : 文本编辑工具 awk : 文本报告生成器

文本三剑客 :grep
     -color=auto     对匹配到的文本着色显示
     -m #     匹配#次后停止
     -v      显示取反的结果
     -i      忽略字符大小写
     -n      显示匹配的行号
     -c      统计匹配的行数
     -o      仅显示匹配到的字符串
     -q      静默模式,不输出任何信息
     -A #    后#行
     -B #    前#行
     -C #    前后#行
     -e      实现多个选项间的逻辑or关系,如:grep -e 'cat' -e 'dog' filename
     -w      匹配整个单词
     -E      相当于egrep
     -F      不支持正则表达式
     -P      支持正则表达式
     -f file 根据模式文件处理
     -r      递归目录,不处理软连接
     -R      递归目录,处理软连接
 
 文本三剑客 :sed
     -n      不输入模式空间内容到屏幕。不自动打印
     -e      多点编辑
     -f file 从指定文件中读取编辑脚本
     -r,-E   使用扩展正则表达式
     -i.bak  备份文件并原处编辑
     -s      将多个文件视为独立文件,而不是单个连续的长文件流

 文本三剑客 :awk
     -F      "分隔符"表明输入时用到的字段分隔符,默认是分隔符是若干个连续空白符
     -v var=value  赋值变量
  1. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
    grep :文本搜索工具,使用正则表达式来匹配文本。
在grep中有两种类型的正则表达式:

基本正则表达式(Basic Regular Expressions,BRE) 拓展正则表达式(Extended Regular Expressions,ERE)

基本正则表达式:
     ^ :匹配行的开始。
     $ :匹配行的结尾。
  • . :匹配任意当个字符。 * :匹配前一个字符0次或多次。 [] :匹配方括号内的任意一个字符。 [:alnum:] : 字母和数字 [:alpha:] : 大小写英文字母,亦即A-Z,a-z [:lower:] : 小写字母 [:upper:] : 大写字母 [:space:] : 包括空格、制表符和回车符号等各种类型的空白字符,包含范围比[:upper:]广。 [:cntrl:] : 不可打印的控制字符(退格、删除、警铃……) [:digit:] : 十进制数字 [:xdigit:] : 十六进制 [:graph:] : 可打印的非空白字符 [:print:] : 可打印字符 **[:punct:] : 标点符号
\  :转义字符,使用特殊字符变为普通字符。
     \s : 匹配任何空白字符,包括空格、制表符、换页等等。等价于[\f \r \t \v]。注意unicode正则表达式会匹配全角字符空格符
     \w :匹配一个字母、数字、下划线、汉字和其他国家文字的字符,等价于[:alnum:]
     \W :匹配一个非字母、数字、下划线、汉字和其他国家文字的字符,等价于[:alnum:]

     匹配次数 :用在指定次数的字符后面,用于指定前面的字符要出现的次数
         . : 任意长度的任意字符
         ? :前面的字符出现0次或一次,即:要么有要么无
         + :前面的字符出现最少1次,即:肯定有且>=1次,
         {n} :匹配前面的字符n次
         {m,n} :匹配前一个字符至少m次,至多n次。
         {,n} :前面的字符至多n次。<=n
         {n,} : 前面的字符至少n次

     位置锚定 :用于定位出现的位置
         ^ : 行首锚定,用于模式的最左侧。
         $ : 行尾锚定,用于模式的最右侧。
         ^PATTERN$ : 用于模式匹配整行
         ^$ : 空行
         <或\b : 词首锚定,用于单词模式的左侧
         *>或\b : 词尾锚定,用于单词模式的右侧
         * : 匹配整个单词

 扩展正则表达式字符匹配
         .  : 任意单个字符
     [wang] : 指定范围的字符
     [^wang] : 不在指定范围的字符
     [:alnum:] : 字母和数字
     [:alpha:] : 大小写英文字母,亦即A-Z,a-z
     [:lower:] : 小写字母
     [:upper:] : 大写字母
     [:blank:] : 空白字符
     [:space:] : 包括空格、制表符和回车符号等各种类型的空白字符,包含范围比[:upper:]广。
     [:cntrl:] : 不可打印的控制字符(退格、删除、警铃……)
     [:digit:] : 十进制数字
     [:xdigit:] : 十六进制
     [:graph:] : 可打印的非空白字符
     [:print:] : 可打印字符
     [:punct:] : 标点符号
  1. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
    变量名的规则: 区分字母大小写 不使用特殊字符或者具有意义的单词字母。 全局变量用大写 局部变量用小写 大驼峰 DaTuoFeng 小驼峰 datuoFeng 也可以用下划线 不能使用内置关键字变量,程序中的保留字段。如:if,for。 能使用字母、数字以及下划线,且不能以数字开头,不支持短横线“-”,和主机名相反。
环境变量
     子进程可以(包括子进程的子进程)继承父进程的变量,但是父进程不能使用子进程的变量。
     一旦子进程修改从父进程继承的变量,会将新的值传递给子进程的子进程。
     只在系统配置文件中使用,在脚本使用的次数较少。

     将普通变量设置成环境变量: 
             export 变量名
 			declare -x 变量名		
     查看所有环境变量:
         env
 		export
 		printenv
 		declare -x

 位置变量
     %n (n 代表的数字) 对应第1个、第2个、第3个…………等参数,两位数以上的参数表达方式${10}。
     $0  命令本身,包括路径。
     $*  传递给脚本的所有参数,全部参数合为一个字符串。
     $@  传递给脚本的所有参数,  每个参数为独立字符串。
     $#	传递给脚本的参数个数。

     清空所有位置变量
         set --

 只读变量
     声明定义,但后续不能修改和删除,即常量。

     声明常量:
         readonly 变量名
         declare -r 变量名
     查看常量:
         readonly [-p]
         declare -r
     不能删除,它本身会随着进程消失而消失 。

 局部变量
     局部变量的作用被限定在创建他们的shell中,创建方式 变量名=参数。

 状态变量
     进程执行后,将使用变量$?保存运行结果;
         只要$?的值为0,则表示运行成功。
         运行结果为0~255,则表示失败或者返回错误结果信息。
  1. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_文件系统

  1. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,

1)for遍历1..100

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_正则表达式_02

2)先id判断是否存在

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_分隔符_03

3)用户存在则说明存在,用户不存在则添加用户并说明已添加。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_正则表达式_04

  1. 磁盘存储术语总结: head, track, sector, sylinder. head (磁头) : 用来读取和写入数据的关键部件。它附着在机械臂上,可以移动到磁盘的不同部分。每个磁头都可以独立地读取和写入数据,但在同一时间内,只有一个磁头可以访问给定地轨道。
    track(磁道): 是磁盘上的一组同心圆,其中每一个磁道都由一个磁头进行访问。这些磁道被组织成多个扇区,每个扇区包含一定数量的数据位。
    sector(扇区): 磁盘上最小的数据存储单元。每个扇区通常包含一个标识符(ID),用于识别该扇区,以及实际的数据。扇区的大小通常为512字节,但现代磁盘通常使用4KB的扇区大小。
    sylinder(柱面): 是由同一磁道上的所有扇区组成的。在早期的硬盘驱动器中,磁头在访问同一柱面中的所有扇区时时不需要移动的。现在的硬盘驱动器使用旋转速度更快的磁盘和更先进的磁头技术,使得访问同一柱面中的不同扇区也需要移动磁头。
  2. 总结MBR,GPT结构。 MBR和GPT都是磁盘分区表,用于管理和描述磁盘分区。 MBR(Master Boot Record) : 是一个位于磁盘最开始的扇区,它记录了磁盘分区表的信息,包括分区的数量、大小和类型等。MBR通常只能容纳4个主分区,如果需要更多的分区,需要在扩展分区中创建逻辑分区。MBR的大小是固定的为512字节。
    GPT(GUID Partition Table) : 是一个基于UEFI(Unified Extensible Firmware Interface)的磁盘分区表,它使用GUID(Globally Unique IDentifier)分区表的信息,以及一个签名(GUID)来验证GPT表的完整性。GPT的分区表位于GPT表头,每个分区都有一个GUID和一个类型(如系统、数据、恢复等)。GPT的大小不是固定的,可以根据磁盘的大小动态调整。

总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例

  1. fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff fdisk : 用于创建、删除和修改磁盘分区。 -d :显示磁盘分区表信息。 -l :列出磁盘分区信息。 -n :创建一个新的分区。 -delete : 删除一个分区。 -help : 显示帮助信息。 -w : 保存分区表更改。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_正则表达式_05

  1. parted : 类似于fdisk,可用于创建、删除和调整分区。-l : 列出磁盘分区表信息。 -i : 显示磁盘分区详细信息。 -d : 删除一个分区。 -n : 创建一个新的分区。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_分隔符_06

  1. mkfs : 用于在磁盘分区上创建文件系统。
  • -t : 文件系统类型:指定要创建的文件系统类型,如ext4.XFS等。
  • -L : 标签:为文件系统指定一个标签,

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_正则表达式_07

  • tune2fs : 是调整和查看ext2/ext3文件系统的文件系统参数。重新设定ext系列文件系统可调整参数的值。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_分隔符_08

  • xfs_info : 查看命令工具自身的版本号。显示已挂载的xfs文件系统信息。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_正则表达式_09

fsck : 用于检查和维护不一致文件系统的工具。

  • -t : 给定档案系统的型式,若在/etc/fstab中已有定义或kernel本身已支援的则不需加上此参数。
  • -s : 依序一个一个地执行fsck地指令来检查。
  • -A :对/etc/fstab中所有列出来的分区(partition)做检查。
  • -C : 显示完整的检查进度。
  • -d : 打印出e2fsck的debug结果。
  • -p :同时有-A条件时,同时有多个fsck的检查一起执行。
  • -R :同时有-A条件时,省略/不检查。
  • -V :详细显示模式。
  • -a : 如果检查有错则自动修复。
  • -r : 如果检查有错则由使用者回答是否修复。
  • -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行#fsck -y 全部检查修复。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_分隔符_10

mount : 挂在文件系统

  • -a / -all : 自动挂载所有支持自动挂载的设备(定义在/etc/fstab文件中,且挂载选项中有auto功能)。
  • -B / -bind :绑定目录到另一个目录上。
  • -c / -no -canonicalize : 不对路径规范化。
  • -f / -fake :空运行;跳过mount(2)系统调试。
  • - F / -fork : 对每个设备禁用fork,配合-a选项一起使用。
  • -T / -fstab path : 指定写文件,默认/etc/fstab。
  • -i / -internal -only : 不调用mount辅助程序。
  • -l / -show -labels : 显示文件系统的labels。
  • -n / -no -mtab :不更新/etc/mtab,mount不可见。
  • -o / -options o1,o2 : 挂载选项列表,以英文逗号分隔。
  • -O / -test -opts o1,o2 : 限制文件系统集合(和-a选项一起使用)。
  • -r / -read -only : 以只读方式挂载文件系统(同 -o ro)。
  • -t / -types : 指定要挂载的设备上的文件系统类型,如:ext4,xfs。
  • -source device : 指明源(路径、标签和uuid)。
  • -target mountpoint : 指明挂载点。
  • -v / -verbose : 显示过程。
  • -w / -rw / -read -write : 已读写方式挂载文件系统(默认)。
  • -L LABEL :以卷标指定挂载设备。

umount : 解挂文件系统。

  • -a :卸载所有文件系统
  • -n :卸载时不记录信息
  • -r :只读方式
  • -v :显示详细的处理信息
  • -h : 显示帮助信息
  • -t : 指定文件系统类型

swapon : 用于激活交换分区(SWAP)。

  • -a : 将/etc/fstab文件中所有设置为swap的设备,启动为交换区。
  • -h : 显示帮助。
  • -p : <优先顺序> 指定交换区的优先顺序。
  • -s : 显示交换区的使用状况。
  • -V : 显示版本信息。

[rocky] linux文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令_分隔符_11

  • swapoff : 用于关闭或禁用Linux系统中的交换空间。