2024年第二周

1. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。

    文本处理工具

     1、查看文本文件内容

        1.1 查看文本内容 cat 

        常见选项

        -E:显示行结束符¥;-A:显示所有控制符;-n:对显示出的每一行进行编号;-b:非空行编号;-s:压缩连续的空行成一行。

        1.2 显示行号 nl   = cat -b

        1.3 逆向显示文本内容 tac

        1.4 将同一行的内容逆向显示 rev

        2.1 查看非文本文件内容 hexdump -C

      2、分页查看文件内容 more -d(显示翻页及退出提示) less(man命令的分页器)

      3、显示文本前面或后面的行内容   head  -c # 指定获取前#个字节;-n #   指定获取前#行,#为负数表示从文件头取到倒数第#行  ;tail 同上相反 -f 跟踪新增加的内容

      4、按列抽取文本 cut -d 指明分隔符;-c 按字符切割

      5、合并多个文件同行号的列到一行 paste

      6、收集文本统计数据 wc

-l只计数行数
-w

只计数单词总数

-c只计数字节总数
-m只计数字符总数
-L显示文件中最长行的长度

        7、文本排序 sort  -n 执行按数字大小整理 ;-r 执行反方向(由上至下)整理

         8、 去重 uniq -c 显示每行重复出现的次数

  文本查找工具

   1、文件查找

   1.1 非实时查找:locate

-i不区分大小写的搜索
-n   N只列举前N个匹配项目
-r使用基本正则表达式

   1.2 实时查找:find

     1.2.1 指定搜索目录层级 -maxdepth level 最大搜索目录深度,指定目录下的文件为第一级;-mindepth level 最小搜索目录深度

     1.2.2 对每个目录先处理目录内的文件,在处理目录本身  -depth

      1.2.3 根据文件名和iNode查找 -name “文件名称” ; -inum n

      1.2.4 根据属主、属组查找 

      1.2.5  根据文件类型查找  -type TYPE

      1.2.6 空文件或目录  -empty

文本处理三剑客

1、grep  

        文本搜索工具,根据用户指定的模式(正则表达式字符及文本字符所编写的过滤条件)对目标文本逐行进行匹配检查。

     选项

-i忽略字符大小写
-n显示匹配的行号

-c

统计匹配的行数
-o仅显示匹配到的字符串
-w

匹配整个单词

-r

递归目录,但不处理软连接
-R递归目录,但处理软连接

      

2、sed 行编辑器,从文件或管道中读取一行,处理一行,输出一行。

   格式 sed [option]...  'script;script;...' [inputfile...]

常见选项
-n不输出模式空间内容到屏幕
-e多点编辑
-f FILE从指定文件中读取编辑脚本
-r,-E使用扩展正则表达式
-i.bak备份文件并原文编辑
-s将多个文件视为独立文件,而不是单个连续的长文件流

命令
p打印当前模式空间的内容,追加到默认输出之后
Ip忽略大小写输出
d删除模式空间匹配的行,并立即启动下一轮循环
a [\]text指定行后面追加文本,支持使用\n实现多行追加
i [\]text在行前面插入文本
c [\]text替换行为单行或多行文本
w file保存模式匹配的行至指定文件
r file读取指定文件的文本至模式空间中匹配的行后
=为模式空间的行打印行号
!模式空间匹配行取反处理
q结束或提出sed

查找替代

s/pattern/pattern/修饰符   查找替换,支持使用其他分隔符,s@@@,s###

替换修饰符:g 行内全局替换;p 显示替换成功的行;w  /PATH/FILE 将成功替换的行保存至文件中;I,i 忽略大小写

3、awk 报告生成器,格式化文本输出

格式: awk [options]  'program'  var=value file... 

         awk [options] -f  programfile  var=value file...    program 由BEGIN语句块、模式匹配的通用语句块、END语句块。

常见选项

       -F “分隔符”指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符

       -v var=value 变量赋值

awk变量 

内置变量:FS 输入字段分隔符,默认为空白字符,功能相当于-F;OFS 输出字段分隔符,默认为空白字符 ;RS 输入记录record分隔符,指定输入时的换行符;ORS 输出记录分隔符,输出时用指定符号代替换行符;NF 字段数量;NR 记录的编号;FNR 各文件分别计数,记录的编号;FILENAME 当前的文件名

自定义变量:-v var=value

文本格式化命令(printf)

实现格式化输出

格式: printf  “”FORMAT“,item1,otem2,...

格式符:与item对应
%s显示字符串
%d,%i显示十进制整数
%f显示为浮点数
%e,%E显示科学计数法数值
%c显示字符的ASCII码
%g,%G以科学计数法或浮点形式显示数值
%u无符号整数
%%

显示%自身

2. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。

基本正则

字符匹配

 .

匹配任意单个字符(除了\n),可以是一个汉字或其他国家的文字
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
[:alnum:]字母和数字
[:alpha:]代表任何英文大小写字符
[:lower:]小写字母
[:upper:]大写字母
[:blank:]空白字符
[:space:]包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白
[:cntrl:]不可打印的控制字符(退格、删除、警铃...)
[:digit:]十进制数字
[:xdigit:]十六进制数字
[:graph:]可打印的非空字符
[:print:]可打印字符
[:punct:]标点符号

匹配次数
*匹配前面的字符任意次,包括0次,贪婪模式,尽可能长的匹配
.*任意长度的任意字符
\?匹配其前面的字符出现0次或1次
\+匹配前面的字符出现最少一次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次,<=n
\{n,\}匹配前面的字符至少n次

位置锚定
^行首锚定,用于模式的最左侧
$

行尾锚定,用于模式的最右侧

^PATTERN$用于模式匹配整行
^$空行
^[[:space:]]*$空白行
\<或\b词首锚定,用于单词模式的左侧
\>或\b词尾锚定,用于单词模式的右侧
\<PATTERN\>匹配整个单词

扩展正则表达式

字符匹配

 .

任意单个字符
[wang]指定范围的字符
[^wang]不在指定范围的字符
[:alnum:]字母和数字
[:alpha:]代表任何英文大小写字符
[:lower:]小写字母
[:upper:]大写字母
[:blank:]空白字符
[:space:]包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白
[:cntrl:]不可打印的控制字符(退格、删除、警铃...)
[:digit:]十进制数字
[:xdigit:]十六进制数字
[:graph:]可打印的非空字符
[:print:]可打印字符
[:punct:]标点符号

次数匹配
*匹配前面字符任意次
0或1次
+1次或多次
{n}匹配n次
{m,n}至少m,至多n次

位置锚定
^行首
$

行尾

\<或\b语首
\>或\b语尾

3. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。

变量命名规则

      区分大小写;不能使用程序中的保留字和内置变量:如:if,for;只能使用数字、字母及下划线,且不能以数字开头。

变量类型

环境变量:可以使用子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量;一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程;一般只在系统配置文件中使用,在脚本中较少使用。

声明变量并赋值:export name=VALUE  ; declare -x name=VALUE。

变量引用:$name  ${name}。

显示所有的环境变量:env、printenv、export、declare -x。

查看指定进程的环境变量:cat /proc/$PID/environ

删除变量:unset name

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

声明只读变量:readonly name 、declare -r name

查看只读变量:readonly [-p] 、declare -r

位置变量:在bash shell中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数。

$1,$2对应第一个、第二个参数,shift[n]换位置
$0命令本身,包括路径
$*传递脚本的所有参数,全部参数合为一个字符串
$@传递脚本的所有参数,每个参数为独立字符串
$#传递给脚本的参数的个数

清空所有位置变量:set --

4. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?


5. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
for i in {1..100}

2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
for i in {1..100}
do
  username="user$i"
   if id -u $username >/dev/null 2>&1;them
        echo "user $username already exits"
   else
      useradd $username has been added
   fi
done


6. 磁盘存储术语总结: head, track, sector, sylinder.

Head(磁头)磁头是用来读取和写入数据的关键部件。它附着在机械臂上,可以移动到磁盘的不同部分。每个磁头都可以独立地读取和写入数据,但在同一时间内,只有一个磁头可以访问给定的轨道。
Track(磁道)磁道是磁盘上的一组同心圆,其中每一个都由一个磁头进行访问。这些磁道被组织成多个扇区,每个扇区包含一定数量的数据位。
Sector(扇区)用于识别该扇区,以及实际的数据。扇区的大小通常为512字节,但现代磁盘通常使用4KB的扇区大小。
Cylinder(柱面)柱面是由同一磁道上的所有扇区组成的。在早期的硬盘驱动器中,磁头在访问同一柱面中的所有扇区时是不需要移动的。然而,现代硬盘驱动器使用旋转速度更快的磁盘和更先进的磁头技术,使得访问同一柱面中的不同扇区也需要移动磁头。

7. 总结MBR,GPT结构。

MBR位于磁盘最开始的扇区,它记录了磁盘分区表的信息,包括分区的数量、大小和类型等。MBR通常只能容纳4个主分区,如果需要更多的分区,需要在扩展分区中创建逻辑分区。MBR的大小是固定的,为512字节。
GPT基于UEFI(Unified Extensible Firmware Interface)的磁盘分区表,它使用GUID(Globally Unique Identifier)作为分区的标识符。GPT可以容纳更多的分区,并且可以支持更大的磁盘容量。GPT的第一个扇区是GPT头,其中包含了磁盘分区表的信息,以及一个签名(GUID)来验证GPT表的完整性。GPT的分区表位于GPT头之后,每个分区都有一个GUID和一个类型(如系统、数据、恢复等)。GPT的大小不是固定的,可以根据磁盘的大小动态调整。


8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例
fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff

fdisk:用于创建、删除和修改磁盘分区。
常见选项
-d显示磁盘分区表信息
-l列出磁盘分区信息
-n创建一个新的分区。
-delete删除一个分区。
-help显示帮助信息。
-w保存分区表更改

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

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

tune2fs:重新设定ext系列文件系统可调整参数的值。
xfs_info:显示已挂载的xfs文件系统信息。
mount:挂载文件系统

格式:mount [-lhV]、mount -a [options]、mount [options] [–source] | [–target]、mount [options]、mount []。

常见选项
-a  –all自动挂载所有支持自动挂载的设备(定义在了/etc/fstab
-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)
-v|–verbose显示过程
–target mountpoint 指明挂载点
-w|–rw|–read-write以读写方式挂载文件系统(默认)
-L  LABEL以卷标指定挂载设备

umount:卸载时:可使用设备,也可以使用挂载点
swapon:用于激活交换分区(SWAP)
swapoff:用于关闭或禁用Linux系统中的交换空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值