第二周作业

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

  文本处理工具

    nano工具

      示例:在f1.txt文件中写入N84014保存退出

 

    (Ctrl+X退出)

     (yes:保存,no:不保存)

 

    vim工具

      选项:

        +#:打开文件后,让光标处于第#行的行首

        +/PATTERN:让光标处于第一个被PATTERN匹配的行行首

        -b file:二进制方式打开文件

        -d file1 file2:比较多个文件

        -m file:只读打开文件

      示例:打开f1.txt文件时光标处于第6行

      示例:打开f1.txt文件光标处于以s开头行行首

      示例:以只读方式打开f1.txt文件

      扩展命令模式基本命令

        w:保存

        q:退出

        wq:保存退出

        q!:不保存退出

        r filename:读取文件内容到当前文件

        w filename:写入当前文件内容到文件

        !command:执行命令

        示例:读取f1.txt文件内容到f2.txt文件中 

         示例:将f1.txt文件的第3-5行内容写入到f3.txt文件中

         示例:将df命令的结果写入到f3.txt文件中

      地址定界

        #:具体第#行

        #,N:第#行到第N行

        #,+N:第#行到第#+N行

        .:当前行

        $:最后一行

        %:全文

        选项:

        d:删除

        y:复制

        p:粘贴

        w filename:将匹配的行写入到文件中

        r filename:在匹配的行插入读取文件

        示例:匹配f1.txt的第1-3行删除

        示例:匹配f2.txt的全文复制

          示例:匹配f3.txt的第3-4行写入到f1.txt文件

      查找替换

        查找替换的分隔符可以为/,#,@

        修饰符:

          i:忽略大小写

          g:全局替换,默认每行只替换第一次

        示例:将f1.txt文件的abc替换为123

       撤销更改

        u:撤销上次更改

        #u:撤销之前多次更改

      可视化模式

        v:面向字符

        V:面向整行

        Ctrl+v:面向块

 

  文件查找工具

    locate工具

      locate查询系统上预建立的文件数据库/var/lib/mlocate/mlocate.db,文件数据库在系统空闲时自动进行加载,也可以手动使用updatedb命令进行更新

      工作特点

        查找速度快,非实时查找,根据文件名查找

      选项

        -i:不区分大小写

        -n #:只匹配前#项

        -r:使用正则表达式

      示例:搜索以不区分大小的.conf结尾的文件,并且只匹配前5项

     find工具

      实时查找工具,通过指定路径完成查找

      工作特点:

        查找速度慢,精确实时查找,只搜索用户具备读取和执行权限的目录

      格式:find 【选项】 【查找路径】 【查找条件】 【处理动作】

 

      指定搜索目录层级:     

        -maxdepth:最大搜索目录深度

        -mindepth:最小搜索目录深度

      示例:搜索/var目录下最小2级,最大2级的文件

       根据文件名查找

        -name ’filename‘:支持通配符

        -iname ’filename‘:不区分大小写

      示例:在/etc目录下查找任意字符+a或b+任意单个字符的文件

       根据属主,属主查找

        -user:查找属主

        -group:查找属组

        -uid:查找属主的uid

        -gid:查找属组的gid

      示例:查找属主为gx的文件

       示例:查找属组的gid为1000的文件

       根据文件类型查找

        -type f/d/l/b/c/p/s

      示例:查找/etc目录下的所有连接文件

       根据文件大小查找

        -size  XX:表示大小为(XX-1,XX]

        -size -XX:表示大小为(0,XX)

        -size +XX:表示大小为(XX,∞)

      示例:在/etc目录下查找文件大小为2-3M的文件

       示例:在/var目录下查找文件大小为小于4M的文件

       根据时间查找

        -atime XX:表示时间为[XX,XX+1)

        -atime -XX:表示时间为[0,XX)

        -atime +XX:表示时间为[XX+1,∞)

      示例:在/etc目录下查找明天到今天的所有文件

       根据权限查找

        -perm [/|-]XX

        XX:表示精确查找

        /XX:表示u,g,o任意一类对象的权限中只要有一位能匹配即可

        -XX:表示每一类对象的权限都匹配

        0:表示不关系该对象

       示例:在/var目录下查找权限为600的文件

       示例:在/data目录下查找属主权限为可读或可写的文件

       示例:在/data目录下查找属主权限为可读,属组权限为可写的文件

      处理动作

        -print:默认动作,显示至屏幕

        -ls:对搜索到的文件执行ll命令

        -fls filename:对搜索到的文件信息保存到文件中

        -delete:删除搜索到的文件

        -ok command {} \;:对搜索到的文件执行该命令,需要交互确认

        -exec command {} \;:对搜索到的文件执行该命令,无需交互确认

      示例:删除/etc目录下大小为4-5M的文件

      示例:搜索/etc目录下以.txt结尾文件的详细信息

        示例:删除/data目录下以.txt结尾的文件

 

  文本处理三剑客之grep

    grep用于文本搜索,根据指定的目标对文本进行检测,并输出匹配行

    选项:

      -m#:匹配#次后停止

      -v:显示没有被匹配的行

      -i:忽略大小写

      -n:显示匹配的行号

      -o:仅显示匹配的字符串

      -q:静默模式

      -A X:显示后X行

      -B X:显示前X行

      -C X:显示前后X行

      -e:多个匹配条件的或关系

      -w:匹配整个单词

      -E:扩展正则表达式

      -r:递归

 

    示例:匹配passwd文件中的root3次,并显示行号

      示例:匹配passwd文件中的BAsh,并忽略大小写

    示例:匹配passwd文件并仅显示匹配的ro字符

     示例:过滤空行或以#开头的行

 

  文本处理三剑客之sed

    sed是从文件中读取一行,处理一行,输出一行,再读取处理输出不断重复

    格式:sed 【选项】 ’script1;script2;...‘ filename

    sed默认会自动打印文件内容

    选项:

      -n:关闭自动打印

      -e:或

      -E/r:扩展正则表达式

      -i.XX:备份文件并再原处编辑

    地址格式:

      没有地址,默认对全文处理

      单地址:X(指定行),$(最后一行),/正则表达式/

      地址范围:

        X,N:从X行到N行

        X,+N:从X行到X+N行

        /正则表达式/,/正则表达式/:从匹配的行到匹配的行

    命令格式:

      p:打印当前模式空间内容

      lp:忽略大小写输出

      d:删除模式空间内容

      a\text:在指定行后追加文本

      i\text:在指定行前插入文本

      c\text:替换指定行内容

      w filename:写入匹配行到指定文件

      r filename:读取指定文件内容到匹配行后

      !:匹配行去反

      s///:查找替换匹配字符

    示例:只打印profile文件中以#开头以及un开头的行

     示例:打印f1.txt文件的2,3行,并在2,3行后追加gx内容

     示例:将f1.txt文件中第4至6行外的其他行替换内容

     示例:查找selinux文件中以SELINUX开头的行,并将后面的内容修改为disabled

 

  文本格式化工具

    printf工具

      %s:字符串

      %f:浮点格式

      %c:ASCII字符

      %d:十进制整数

      %o:八进制

      %x:十六进制

      示例:以浮点型显示并换行

      示例:每个字符串加括号,并且每行显示两个字符

      示例:以右对齐,宽度为5格式显示字符串

 


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

  基本正则表达式

    字符匹配

      .:匹配任意单个字符

      []:匹配指定范围内任意单个字符

      [^]:匹配指定范围外任意单个字符

      [:alnum:]:匹配字母和数字

      [:alpha:]:匹配任意字母

      [:lower:]:匹配小写字母

      [:upper:]:匹配大写字母

    匹配次数

      用于指定前面的字符出现的次数

      *:匹配前面字符任意次,包括0次,贪婪模式:尽可能长的匹配

      .*:匹配任意长度任意字符

      \?:匹配前面字符0或1次

      \+:匹配前面字符至少1次

      \{n\}:匹配前面字符n次

      \{n,m\}:匹配前面字符n到m次

      \{n,\}:匹配前面字符至少n次

      \{,n\}:匹配前面字符至多n次

    位置锚定

      用于定位出现的位置

      ^:锚定行首

      $:锚定行尾

      ^PATTERN$:匹配整行

      ^$:空行

      \<:锚定词首

      \>:锚定词尾

    分组其他

      用()将多个字符绑定在一起,当作一个整体处理,分组括号内匹配到的内容会被正则表达式记录到变量中,这些变量的命名方式为\1,\2...。\|表示或者

  扩展正则表达式

    与基本正则表达式一致,只是少了\更加直观

    注意:匹配词首和词尾时,扩展正则表达式依然需要加\


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

  变量命名规则

    不能使用程序中的保留字,if,else,for,while等

    只能使用数字、字符及下划线,且不能以数字开头,不支持短横线

    见名知义,用英文单词命名,不要用简写

    统一命名规则,驼峰命名法filename,大驼峰FileName,小驼峰fileName

    变量名大写

    局部变量小写

    函数名小写

  环境变量

    使子进程继承父进程的变量,但是无法让父进程使用子进程的变量

    一旦子进程修改从父进程继承的变量,将会以新的值传递给孙子进程

    一般在系统配置文件中使用,脚本中较少使用

    声明并赋值:export  name=value

  位置变量

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

    $1,$2,...:对应第一个,第二个参数

    $0:命令本身

    $*:传递给脚本所有参数,全部参数合为一个字符串

    $@:传递给脚本所有参数,每个参数为独立字符串

    $#:传递给脚本参数的个数

  只读变量

    只能声明定义,后续不能修改和删除

    readonly name=value

  局部变量

    用于shell进程中某个代码片段,通常指函数

  状态变量

    状态变量$?会记录上一次命令的执行结果,$?的值为0表示执行成功,值为1-255表示执行失败

    用户可以在脚本中自行定义退出状态码,一般用来定义不同的错误原因

    exit  XX,脚本一旦遇到exit命令,会立即停止,退出状态码为exit后设置的数值


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


五. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。


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

  head

    磁头,一个盘面对应一个磁头

  track

    磁道,盘面上的每一圈就是一个磁道

  sector

    扇区,把每个磁道按512字节大小再进行划分,每一部分就是一个扇区,每个磁道上的扇区数量是不一致的

  cylinder

    磁头移动的时候,是一起移动的,所有磁道组合而成的就是柱面


七. 总结MBR,GPT结构。

  MBR

    MBR分区中一块硬盘最多有4个主分区,也可以是3个主分区+1个逻辑分区,每个分区不超过2T

    0磁道0扇区总共512字节,前446字节用于存放启动引导程序,64字节为分区表,每16字节标识一个分区,2字节的标识位.

  GPT

    GPT分区支持128个分区,使用128位UUID表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位

    GPT分区结构为4个区域:GPT头,分区表,GPT分区,备份区域


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

  fdisk

    用于管理MBR分区

    常用选项:

      -b:指定扇区大小

      -l:显示分区

      -t:只显示指定类型的分区

    常用子命令:

      p:打印分区表

      n:创建新分区

      d:删除分区

      t:更改分区类型

      w:保存退出

      q:不保存退出

    示例:创建新分区,保存退出

    示例:修改分区3的分区类型为swap分区

   parted

    常用选项:

      -l:显示分区信息

    常用子命令:

      mktable:指定分区类型

      mkpart:新建分区

      rm:删除人去

      name:重命名分区,只有gpt分区支持

      resizepart:重置分区大小,只能修改结束位置,不能修改其实位置

      print:打印分区信息

    示例:设置/dev/sdb分区类型为MBR分区

    示例:创建新分区

    示例:删除/dev/sdb的分区3

    示例:修改分区1的大小,结束位置为1050M

   mkfs

    用于创建文件系统

    选项:

      -t:指定文件类型

      -b:指定块大小

      -L:指定卷标

      -m:指定为管理员预留空间百分比

    示例:创建sdb1分区的文件系统为xfs

  tune2fs

    用于修改ext系列文件系统可调整参数的值

    选项:

      -l:查看指定文件系统信息

      -L:修改卷标

      -m:修改预留空间百分比

      -U:修改UUID

    示例:修改sdb1文件系统的预留空间百分比为10%

  xfs_info

    用于显示已挂载xfs文件系统信息

    示例:查看sda2文件系统信息

  fsck

    用于修复设备的文件系统

    选项

      -t:修复文件系统类型

      -a:自动修复

      -r:交互式修复

    示例:修复sdb1分区的ext4文件系统

  mount

    用于挂载设备

    选项:

      -a:自动挂载fstab中所有支持自动挂载的设备

      -r:以只读方式挂载

      -w:以读写方式挂载

      -o:挂载选项列表

    -o选项:

      remount:重新挂载

      ro/rw:只读/读写

    示例:将sdb1挂载到/test1目录

     示例:以只读方式挂载sdb1到/test目录

  umount

    用于取消挂载

    示例:取消挂载点/test1

  swapon

    用于启用swap分区

    选项

      -a:启用fstab中所有swap分区

      -d:根据条件禁用

      -p:指定swap的优先级,值越大越优先

      -s:查看使用的swap分区的摘要信息

      -v:查看swap详细信息

    示例:启用所有swap分区,查看当前使用swap的摘要信息

    示例:修改sdb2的swap优先级为10

  swapoff

    用于禁用swap分区

    选项

      -a:禁用fstab中所有swap分区

    示例:禁用sdb2设备的swap

posted @ 2023-12-18 08:37  过心不忘  阅读(73)  评论(0)    收藏  举报