第二周作业

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

    cat:查看文本内容

    [root@localhost testMK]# cat a.txt
    a
    b
    [root@localhost testMK]# cat -n  a.txt    --n显示行号
         1  a
         2  b
         3  c
         4  d
         5  e
         6  f
         7  g
         8  h
    

    nl:同cat -b 非空行显示行号

    tac: 逆向显示

    [root@localhost testMK]# tac a.txt
    
    h
    g
    f
    e
    d
    c
    b
    a
    [root@localhost testMK]# cat a.txt
    a
    b
    c
    d
    e
    f
    g
    h
    
    

    more:可以分面查看文件

    
    [root@localhost testMK]# more a.txt
    a
    b
    c
    d
    e
    f
    g
    h
    
    

    head、tail:显示文本固定行数内容

    [root@localhost testMK]# head -n 3 a.txt //前3行
    a
    b
    c
    
    [root@localhost testMK]# head -n -3 a.txt //不显示最后3行
    a
    b
    c
    d
    e
    f
    
    [root@localhost testMK]# tail -n 3 a.txt //后3行
    g
    h
    
    [root@localhost testMK]# tail -n +3 a.txt //从第3行开始显示
    c
    d
    e
    f
    g
    h
    
    

    cut:可以提取文本文件或STDIN数据的指定列

    Usage: cut OPTION... [FILE]...
    Print selected parts of lines from each FILE to standard output.
    
    [root@localhost testMK]# cut -f1  -d ' ' stu.txt  //以‘ ’为分隔符 显示第一列的内容
    01
    02
    03
    
    
    
    [root@localhost testMK]# cut -f1,2  -d ' ' stu.txt
    01 tom
    02 jack
    03 alex
    
    

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

    
    [root@localhost testMK]# paste -d"|" a.txt stu.txt
    a|01 tom 69 91
    b|02 jack 71 87
    c|03 alex 68 98
    d|
    e|
    f|
    g|
    h|
    |
    
    
    wc统计行数、单词数、字节数
    [root@localhost testMK]# wc stu.txt
     12  30 105 stu.txt
    
    

    sort:文本排序

    [root@localhost testMK]# sort stu.txt
    |
    01 tom 69 91
    02 jack 71 87
    03 alex 68 98
    a|01 tom 69 91
    b|02 jack 71 87
    c|03 alex 68 98
    d|
    e|
    f|
    g|
    h|
    [root@localhost testMK]# sort -r stu.txt  //逆向排序
    h|
    g|
    f|
    e|
    d|
    c|03 alex 68 98
    b|02 jack 71 87
    a|01 tom 69 91
    03 alex 68 98
    02 jack 71 87
    01 tom 69 91
    |
    
    
    
    

    uniq:命令从输入中删除前后相接的重复行

    [root@localhost testMK]# cat a.txt
    a
    a
    a
    b
    c
    d
    e
    f
    g
    h
    
    
    
    
    
    [root@localhost testMK]# uniq a.txt
    a
    b
    c
    d
    e
    f
    g
    h
    
    

    文本三剑客:

    awk、grep、sed

    printf:

    printf  format-string  [arguments...]
    #format-string: 为格式控制字符串
    #arguments: 为参数列表
    
    • %s:输出字符串
    • %d:输出十进制整数
    • %f:输出浮点数
    • %c:输出字符
    • %x:输出十六进制整数
    • %o:输出八进制整数
    • %e:输出科学计数法表示的浮点数
    [root@localhost testMK1]# bash no1.sh
    Name: no1
    Age: 22
    [root@localhost testMK1]# cat no1.sh
    #!/bin/bash
    
    name="no1"
    age=22
    
    printf "Name: %s\n" $name
    printf "Age: %d\n" $age
    
    [root@localhost testMK1]# bash no1.sh
    Name: no1
    Age: 22
    

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

    grep:命令用于根据给定的正则表达式搜索文本,并将匹配的行打印出来。


    -a --text # 不要忽略二进制数据。
    -A <显示行数> --after-context=<显示行数> # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
    -b --byte-offset # 在显示符合范本样式的那一行之外,并显示该行之前的内容。
    -B<显示行数> --before-context=<显示行数> # 除了显示符合样式的那一行之外,并显示该行之前的内容。
    -c --count # 计算符合范本样式的列数。
    -C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
    -d<进行动作> --directories=<动作> # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
    -e<范本样式> --regexp=<范本样式> # 指定字符串作为查找文件内容的范本样式。
    -E --extended-regexp # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
    -f<范本文件> --file=<规则文件> # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
    -F --fixed-regexp # 将范本样式视为固定字符串的列表。
    -G --basic-regexp # 将范本样式视为普通的表示法来使用。
    -h --no-filename # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
    -H --with-filename # 在显示符合范本样式的那一列之前,标示该列的文件名称。
    -i --ignore-case # 忽略字符大小写的差别。
    -l --file-with-matches # 列出文件内容符合指定的范本样式的文件名称。
    -L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。
    -n --line-number # 在显示符合范本样式的那一列之前,标示出该列的编号。
    -P --perl-regexp # PATTERN 是一个 Perl 正则表达式
    -q --quiet或–silent # 不显示任何信息。
    -R/-r --recursive # 此参数的效果和指定“-d recurse”参数相同。
    -s --no-messages # 不显示错误信息。
    -v --revert-match # 反转查找。
    -V --version # 显示版本信息。
    -w --word-regexp # 只显示全字符合的列。
    -x --line-regexp # 只显示全列符合的列。
    -y # 此参数效果跟“-i”相同。
    -o # 只输出文件中匹配到的部分。
    -m --max-count= # 找到num行结果后停止查找,用来限制匹配行数


    [root@localhost ~]# grep -n a /home/testMK/a.txt
    1:a
    2:a
    3:a
    
    [root@localhost testMK]# grep 'sys' passwd
    systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
    chrony:x:997:994:chrony system user:/var/lib/chrony:/sbin/nologin
    systemd-oom:x:992:992:systemd Userspace OOM Killer:/:/usr/sbin/nologin
    
    
    [root@localhost testMK]# grep -c 'sys' passwd      //显示几行
    3
    [root@localhost testMK]# grep  '^sys' passwd	//以Sys开头的
    systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
    systemd-oom:x:992:992:systemd Userspace OOM Killer:/:/usr/sbin/nologin
    
    
    
    [root@localhost testMK1]# ls | grep "^a.[1-2]"
    aA1
    aA2
    aB1
    aB2
    
    

    正则表达式:

    ^word搜寻以word开头的行。 例如:搜寻以#开头的脚本注释行 grep –n ‘^#’ regular.txt
    word$搜寻以word结束的行
    .匹配任意一个字符。 例如:grep –n ‘e.e’ regular.txt 匹配e和e之间有任意一个字符,可以匹配eee,eae,eve,但是不匹配ee。
    \转义字符。 例如:搜寻’,’是一个特殊字符,在正则表达式中有特殊含义。必须要先转义。grep –n ‘\,” regular.txt
    \*前面的字符重复0到多次。 例如匹配gle,gogle,google,gooogle等等 grep –n ‘go\*gle’ regular.txt
    [list]匹配一系列字符中的一个。 例如:匹配gl,gf。grep –n ‘g[lf]’ regular.txt
    [n1-n2]匹配一个字符范围中的一个字符。 例如:匹配数字字符 grep –n ‘[0-9]’ regular.txt
    [^list]匹配字符集以外的字符 例如:grep –n ‘[^o]‘ regular.txt 匹配非o字符
    \<word单词是的开头。 例如:匹配以g开头的单词 grep –n ‘\<g’ regular.txt
    word\>前面的字符重复n1,n2次 例如:匹配google,gooogle。grep –n ‘go\{2,3\}gle’ regular.txt
    \<word匹配单词结尾 例如:匹配以tion结尾的单词 grep –n ‘tion\>’ regular.txt
    word\{n1\}前面的字符重复n1 例如:匹配google。 grep –n ‘go\{2\}gle’ regular.txt
    word\{n1,\}前面的字符至少重复n1 例如:匹配google,gooogle。 grep –n ‘go\{2\}gle’ regular.txt
    word\{n1,n2\}前面的字符重复n1,n2次 例如:匹配google,gooogle。 grep –n ‘go\{2,3\}gle’ regular.txt
  3. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。

命名规则:1.变量必须是[a…z] [A…Z]数字[1…9]以及下划线_组成 2.变量不允许数字开头3.变量区分大小写 4. 变量不应该使用if while what等关键字表示 5.一个作用范围内,变量名唯一


环境变量:变量赋值 export 变量名=值 echo $变量名 显示值

位置变量:当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数

只读变量:readonly 变量名

局部变量:一定范围内使用

状态变量:$? echo $? 为0的话表示前面命令使用成功,显示任何非0的数值都是表示失败

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

    #!/bin/bash
    head=$1
    foot=$2
    rabbit=$[(foot-head*2)/2]
    choock=$[head-rabbit]
    echo rabbit=$rabbit
    echo choock=$choock
    
    [root@localhost testMK1]# chmod +x no1.sh
    [root@localhost testMK1]# bash no1.sh 30 80
    rabbit=10
    choock=20
    
  2. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,

    1)for遍历1…100

    #!/bin/bash
    for((i=0;i<100;i++)); do
        echo "${i}"
    done
    
    

    2)先id判断是否存在

    #!/bin/bash
    for((i=0;i<100;i++)); do
        USERNAME=a${i}
    if id -u ${USERNAME} >/dev/null 2>&1 ; then
        echo "用户: ${USERNAME} 存在"
    else
        echo "用户: ${USERNAME} 不存在"
    fi
        
    done
    

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

    #!/bin/bash
    for((i=0;i<100;i++)); do
        USERNAME=a${i}
    if id -u ${USERNAME} >/dev/null 2>&1 ; then
        echo "用户: ${USERNAME} 存在"
    else
        useradd ${USERNAME}
        echo "用户: ${USERNAME} 已添加"
    fi
        
    done
    
    
  3. 磁盘存储术语总结: head, track, sector, sylinder.

    • 磁头(head)

      每张磁片的正反两面各有一个磁头,一个磁头对应一张磁片的一个面。因此,用第几磁头就可以表示数据在哪个磁面。

    • 磁道(track)

      盘面中一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段

    • 扇区(sector)

      每个磁道上一个弧段被称之为一个扇区(图践绿色部分)

    • 柱面(cylinder)

      硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。

  4. 总结MBR,GPT结构。

    MBR单分区不超过2T 用32位表示扇区数 每个扇区512bytes 最多可分4个区(3个主分区 1个拓展分区.

    GPT有128个分区 最大内存为8Z

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

    添加硬盘进程:分区》创建文件系统》挂载

    分区:

​ fdisk:用于MBR分区

fdisk [选项] 设备文件名
  • -l`:显示设备的分区表信息。

  • -n:创建一个新的分区。

  • -d:删除一个分区。

  • -p:打印分区表的内容。

  • -t:更改分区的类型。

  • -u:以扇区单位显示分区信息。

  • -w:将分区表写入磁盘。

gdisk:可以用于GPT分区

常用命令参数:
gdisk
gdisk /dev/磁盘名
-n 创建一个新分区
-p 显示当前磁盘的分区表
-w 将更改写入并退出
-q 不保存退出

使用mkfs创建文件系统

root@ubuntu2004:/# mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: 257fd7f2-6094-4579-8648-9c4025a0d494
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

挂载:

mount /dev/sdb1 /logs //临时
永久:
vim /etc/fstab
查看uuid修改文件

请添加图片描述

mount -a 将文件挂载

ystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: 257fd7f2-6094-4579-8648-9c4025a0d494
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done


挂载:

mount /dev/sdb1 /logs //临时
永久:
vim /etc/fstab
查看uuid修改文件
请添加图片描述

mount -a 将文件挂载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值