作业第二周

  1. 总结学过的权限,属性及ACL相关命令及选项,示例。
    文件的权限有三类,分别是-r:读-w:写-x执行
    常见的文件权限组合,---0,r4,r-x5,rw6,rwx7
    setfacl -m u:admin:- 文件名:控制用户zhang对该文件无任何权限,如果需要:后面加rwx
    setfacl -b 文件名:清楚acl权限

2.结合vim几种模式,学会使用vim几个常见操作。
普通模式:
1.普通模式,默认模式,可以实现移动光标,剪切/粘贴文本
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
h: 左
l: 右,小写字母
j: 下
k: 上
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
H:页首
M:页中间行
L:页底
0 跳转至行首
$ 跳转至行尾
G 最后一行
1G, gg 第一行d$ 删除到行尾
d0 删除到行首
d$ 删除到行尾
插入模式:编辑文本
扩展模式:3.扩展命令(extended command )或命令(末)行模式:保存,退出等
w 写(存)磁盘文件
wq写入并退出
x 写入并退出
X 加密
q 退出
q!不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出

    地址定界格式
    1.具体第#行,例如2表示第2行
    $ #最后一行
    /pattern/   #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
    在扩展模式下按:s/file1/file2/g:把file1全局替换为file2
    C   #删除当前光标到行尾,并切换成插入模式,相当于c$ 

    1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
          vim----文件路径---文件名  退出: :q 不保存 :wq保存退出
    2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
          按i进入插入模式,按esc回到命令模式, :q 不保存 :wq保存退出
    3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
          vim /test.txt --- 按i --- echo "马哥出品,必属精品" ---按ecs回到打开文件的状态(命令模式):wq保存退出
    4)使用cat命令验证文件内容,是刚刚自己写的内容。
          cat ---文件路径---test.txt
    5)(可选),命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。
          H左L右J下K上,行复制yy,粘贴p,删除dd
    3. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
          文本处理工具
                      cat
                      cut
                      sort
                      tail
          文件查找工具
                     find  
                     find -name 文件名  #查找文件
                     find -type f # #查找普通文件 示例:find /home/123/ -type f 
          文本处理三剑客
                      grep 
                             grep
                                  --color=auto 对匹配到的文本着色显示
                                  -m  # 匹配#次后停止
                                  -v 显示不被pattern匹配到的行,即取反
                                  -i 忽略字符大小写
                                  -n 显示匹配的行号
                                  -c 统计匹配的行数
                                  -o 仅显示匹配到的字符串
                                  -q 静默模式,不输出任何信息
                                  -e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file
                                  -w 匹配整个单词
                                  -E 使用ERE,相当于egrep
                                  -F 不支持正则表达式,相当于fgrep
                                  -P 支持Perl格式的正则表达式
                                  -f file 根据模式文件处理
                                  -r   递归目录,但不处理软链接
                                  -R   递归目录,但处理软链接
                                  用grep取分区利用率:df -h |grep '^/dev/sd'|tr -s ' ' %|cut -d% -f5
                      sed
                                   -n 不输出模式空间内容到屏幕,即不自动打印
                                   -e 多点编辑
                                   -f FILE 从指定文件中读取编辑脚本
                                   -r, -E 使用扩展正则表达式
                                    查找替代
                                    sed 's/原字符串/新字符/'
     4. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。(见上题)
     5. sed将文件test中第50行中的helloworld改为nihao  sed -i '50s/hello/nihao/' 
     8.删除文件每行的第一个字符。sed -i 's/.//' test.txt
     9.删除文件每行的第二个字符。sed -r 's/(.)(.)(.*)/\2/g' passwd.bak
     10.删除文件每行的最后一个字符。sed -i 's/.$//' passwd.bak 
     11.删除文件每行的倒数第二个字符。sed -r 's/(.*)(.)(.)/\1\3/g' passwd.bak
     12. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
            环境变量:生效范围为当前shell进程及其子进程   name='lisi'  $name
            位置变量:在bash shell中内置的变量, 在脚本代码中调用通过命令行传递给脚本的参数 
                      $1, $2, ... 对应第1个、第2个等参数
                      $0 命令本身,包括路径
                      $* 传递给脚本的所有参数,全部参数合为一个字符串
                      $@ 传递给脚本的所有参数,每个参数为独立字符串
                      $# 传递给脚本的参数的个数
            只读变量:只读变量:只能声明定义,但后续不能修改和删除,即常量
                      readonly name
     13. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
                read -p "请输入头的数量: " HEAD
                read -p "请输入脚的数量: " FOOT
                RABBIT=$[FOOT/2-HEAD]
                CHOOK=$[HEAD-RABBIT]
                echo "兔子: " $RABBIT
                echo "鸡: " $CHOOK
     14.结合编程的for循环,条件测试,条件组合,完成批量创建100个用户
        1)for遍历1..100
        2)先id判断是否存在
        3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
              #!/bin/bash
              #批量创建100个用户

              for id in {1..100};do
                      user_id=$id
                      if id user$user_id &> /dev/null;then
                             echo "该用户已存在"
                      else
                              useradd user$id
                              pass=`cat /dev/urandom | tr -dc '[:alnum:]'| head -c8`
                              echo $pass | `passwd --stdin user$id` &>  /dev/null
                              echo user$id : $pass >> /home/123/zhang/passwd.txt
                              echo "user$id is create"
                      fi
              done
posted @ 2024-09-30 15:21  zhangqiangggggg  阅读(12)  评论(0)    收藏  举报