第二周作业

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

(1)常用文本处理工具:

cat[option]...[file]...:查看文本内容 

常见选项: -A  显示所有控制符  -n:对显示出每一行进行编号

例:cat f1.txt
w
b   
c    d

cat -nE f1.txt

1    w$
2    b   $
3    c    d$
4    $
5    $

more(less):分页查看文件,可配合管道使用

head:可显示文件或标准输入的前面行  tail:查看文件或标准输入的倒数行

cut:提取文本文件或标准输入数据的指定列

wc:文本数据统计    -l 只计数行数 -w 只计数单词总数

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

(2)文本查找工具

locate:非实时查找,查询系统上预建的文件索引数据库,索引构建过程需遍历整个根文件系统,消耗资源。查找速度快,模糊查找,

find:实时查找,通过遍历指定路径完成文件查找。查找速度较慢,精确查找,可根据文件名和inode查找(如 -name‘文件名称’等),根据属主、属组查找(如 -user/-group等),根据文件类型查找(type,如 -f -d等),根据文件大小,时间戳,权限查找。

(3)文本处理三剑客

grep:文本搜索工具

常见选项: -v(取反) -o(仅显示匹配到的字符串) -n(显示匹配的行号)-c(统计匹配的行数) -e(实现多个选项间的逻辑or关系)

sed:文本编辑工具  

常见选项:-n(不自动打印) -f 从指定文件中读取编辑脚本  -r -E 使用扩展正则表达式   -i.bak 备份文件并原处编辑 

查找替代:s/// s@@@ s###

awk  教学暂跳过没讲。

printf可以实现格式化输出。

printf "FORMAT",item1,itme2..   必须指定FORMAT.

常用格式替换符  %s:显示字符串  %f:显示为浮点数

%#s中的数字代表此替换符中的输出字符宽度,不足补空格,默认右对齐,%-10s表示10个字符宽度,-表示左对齐。

常用转义字符  \n 换行


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

1)基本正则表达式

字符匹配

.  匹配任意单个字符 ,如一个字母、汉字、数字等

[ ] 代表指定范围内的任意单个字符           [^] 排除[ ]中字符以外的字符

[:alnum:] 大小写字母和数字     [:alpha:] 任何英文大小写字母       [:lower:] 小写字母   

[:blank:]  空格和tab    [:punct:]  标点符号  

匹配次数

*     匹配*前面的字符出现了任意次,包括0次      .* 任意长度的任意字符 

  \? 匹配前面的字符1或0次                      \+   匹配前面的字符至少1次 

\{n\}  匹配前面的字符n次   \{m,n\}   匹配前面的字符至少m次,至多n次

位置锚定

^ 行首锚定,用于模式的最左侧   $ 行尾锚定,用于模式的最右侧      ^$ 空行

^[[:space:]]  空白行   ^PATTERN$ 用于模式匹配整行

\|   或者

(2)扩展正则表达式

用法与基本正则表达式大致相同,只是不再使用\这种转义符,比如?即代表匹配1次或0次,+代表至少1次,a|b代表a或b。


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

命名要求:(1)区分大小写 (2)不能使程序中的保留字和内部变量 (3)只能使用数字、字母和下划线,且不能用数字开头,不支持短横线

命名习惯:(1)用英文单词命名,不要用简写 (2)变量名大写 (3)局部变量小写 (4)函数名小写 (5)大驼峰,多个单词组成,且每个单词首字母大写,其他小写 (6)小驼峰,多个单词组成,第一个单词的首字母小写,后续单词首字母大写,其他小写 (7)下划线

环境变量:可以使子进程(包括孙子进程)继承父进程的变量,但是不能让父进程继承子进程的变量;一旦子进程修改从父进程继承的变量,将会把新的值传给孙子进程。

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

位置变量:在bash shell中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数。$1,$2对应第1,2个参数,$0表示命令本身,包括路径。

状态变量:$?会保存最近一次执行的命令的状态结果。范围是0-255的整数,其中0表示前一个命令执行成功,1-255表示失败。


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

vim rabbit_chook.sh

#!/bin/bash

HEAD=$1

FOOT=$2

RABBIT=$(((FOOT-HEAD-HEAD)/2))

CHOOK=$[HEAD-RABBIT]

echo RABBIT:$RABBIT

echo CHOOK:$CHOOK

bash  rabbit_chook.sh 30 80

RABBIT:10

CHOOK:20


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

vim useradd.sh

#!/bin/bash
  
for i in `seq 100`;do
    if id user$i &> /dev/null
       then
       echo "user$i用户已存在"
       else
       useradd user$i
       echo "user$i用户已创建"
    fi
done

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

head:磁头 磁头数=盘面数

track:磁道 磁道=柱面数

sector:扇区,1个扇区512bytes大小

cylinder:柱面


7. 总结MBR,GPT结构。

MBR:分区不超过2T。一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)。MBR格式的磁盘主分区号从1-4,扩展分区号从2-4,逻辑分区号从5开始。

GPT:不再限制只能存储4个分区表条目,允许有128个主分区,可以对超过2TB的磁盘进行分区。

在MBR磁盘上,分区和启动信息是保存在一起的,如果这部分数据被覆盖或破坏,只能重建MBR。而GPT在整个磁盘上保存多个这部分信息的副本,因此可以恢复被破坏的这部分信息,更为安全。


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

fdisk 管理MBR分区  

子命令: -p 打印现有分区列表  -n 创建新分区   -d 删除分区  -w 保存退出  -q  不保存退出

例:fdisk  /dev/sdb ——(交互式)按n创建新分区——按p(primary)创建主分区——在1-4中选择分区编号,默认即可(数字1)——输入起始扇区号,默认即可——输入结束扇区号,一般直接指定第一个分区的大小,如+10G即可——按以上步骤,根据需要分别创建第2和第3个分区——保存退出——partprobe /dev/sdb(通知内核读取更新的分区表,从而识别新的分区)——

cat /proc/partitions(查看分区表是否更新)

parted 实时生效,非交互式,较少使用。

例:parted /dev/sdb rm 1  直接删除了该硬盘的第1分区

mkfs:mkfs.FS_TYPE  /dev/DEVICE   创建文件系统

选项:-t  指定文件系统类型

mount [OPTIONS] DEVICE DIR   DEVICE:挂载的设备  DIR:挂载点,必须存在,建议为空目录

-t  fstype 要挂载的设备上的文件类型  -r  只读挂载  -w  读写挂载  -a 自动挂载所有支持自动挂载的设备

-o options  remount 重新挂载  ro/rw 只读 读写

umount 设备名或挂载目录

例:mkfs.xfs  /dev/sdb1——mkdir /logs——mount  /dev/sdb1 /logs

tune2fs -l /dev/DEVICE  可以查看ext文件系统相关属性

xfs_info  挂载点|设备名    显示已挂载的xfs文件系统信息

fsck 可以检测并修复某些文件系统错误,但不要在挂载状态下修复。 fsck.FS_TYPE DEVICE 

-a 自动修复  -r  交互式修复错误

SWAP交换分区是系统RAM的补充,SWAP分区支持虚拟内存,当没有足够的SWAP保存系统处理的数据时会将数据写入SWAP分区,当系统缺乏SWAP空间时,内核会因RAM内存耗尽而终止进程。

系统中的RAM量    推荐的SWAP空间

低于2G                    RAM量的2倍

2G——8G               等于RAM量

8G——64G              4G到RAM容量的0.5倍

超过64G                   独立负载(至少4G)

交换分区实现过程

创建交换分区或文件——格式化为SWAP分区 mkswap——在 /etc/fstab文件中添加适当的条目,开机自动加载SWAP分区——使用swapon -a激活交换分区

swapoff -a 取消SWAP分区空间

swapon -p可以指定交换分区的优先级,值越大优先级越高。

swap的使用策略: /proc/sys/vm/swappiness的值决定了当内存占用达到一定的百分比时,会启用swap分区的空间。当内存使用率达到100-swappiness时,会启用交换分区。可以设为0,最大限度降低使用swap的可能性。

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值