三、文件查找工具find,egrep的用法和文件的权限管理

ぃ、小莉子 提交于 2020-02-26 02:51:01

第三周作业解答

  1. 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
    ls -d /etc/[^[:alpha:]][[:alpha:]]*
  2. 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    mkdir /tmp/mytest1;cp -r /etc/p*[^[:digit:]] /tmp/mytest1
  3. 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
    cat /etc/issue | tr [:lower:] [:upper:] > /tmp/issue.out; cat /tmp/issue.out
  4. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
    1. 创建组distro,其GID为2019;
      groupadd distro -g 2019
    2. 创建用户mandriva, 其ID号为1005;基本组为distro;
      useradd mandriva -u 1005 -g distro
    3. 创建用户mageia,其ID号为1100,家目录为/home/linux;
      useradd mageia -u 1100 -md /home/linux
    4. 给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
      echo mageedu | passwd --stdin mageia &> /dev/null;chage -M 7 mageia
    5. 删除mandriva,但保留其家目录;
      userdel mandriva
    6. 创建用户 slackware,其ID号为2002,基本组为 distro,附加组 peguin;
      groupadd peguin;useradd slackware -u 2002 -g distro -G peguin
    7. 修改 slackware 的默认shell为/bin/tcsh;
      chsh -s /bin/tcsh slackware
    8. 为用户 slackware 新增附加组admins;
      groupadd admins;gpasswd -a slackware admins
  5. 定义一个对所有用户都生效的命令别名,例如:cdnet='cd /etc/sysconfig/network-scripts/'
    echo alias cdnet='cd /etc/sysconfig/network-scripts/' >> /etc/bashrc;. /etc/bashrc;
  6. 显示/etc/passwd文件中不以/bin/bash结尾的行
    getent passwd | grep -v /bin/bash$
  7. 找出/etc/passwd文件中,包含二位数字或者三位数字的行
    getent passwd | grep '[^0-9][0-9]\{2,3\}[^0-9]'
  8. 显示/proc/meminfo文件中以大写或小写S开头的行;三种实现方式
    cat /proc/meminfo|grep '^[sS]'
    grep '^[sS]' /proc/meminfo
    grep -i '^s' /proc/meminfo
    grep -e '^s' -e '^S' /proc/meminfo
  9. 使用echo输出一个绝对路径,使用 egrep 取出路径名、类型;执行dirname /etc/passwd的结果;
    路径名:echo /dir1/dir2/file.type | egrep -o '^/.*/'
    类型:echo /dir1/dir2/file.type | egrep -o '\.[[:alnum:]]+$'
    类型不带点:echo /dir1/dir2/file.type | egrep -o '[[:alnum:]]+$'
    执行dirname /etc/passwd的结果:/etc
  10. 找出ficonfig中的ip地址,要求结果只显示IP地址
    ifconfig ens33|head -2|tail -1|tr -s ' '|cut -d' ' -f3
  11. vim定制自动缩进4个字符
    临时生效:
    编辑文本时,处于命令模式,输入以下命令后回车
    :set indentexpr=4

    永久生效:
    编辑文本时,输入以下命令后回车

    :!echo 'set indentexpr=4' >> ~/.vimrc

    或者在未打开任何文本时,处于命令模式,输入以下命令后回车

    echo 'set indentexpr=4' >> ~/.vimrc
  12. 编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和
    #!/bin/bash
    useradd uone -g test
    useradd utwo -g test
    useradd uthree -g test
    getent passwd uone utwo uthree|cut -d':' -f3|paste -sd '+'|bc
  13. find用法以及常见用法的实例演示
    find:遍历指定路径实时查找文件;
    特点:速度略慢,精确实时,只搜索有读执权限的目录
    语法:find [option]... [path] [条件] [处理动作]
    path:具体目标路径,默认为当前路径(默认递归)
    条件:查找标准,可用文件名、大小、类型、
    权限等为标准,默认找出指定路径下的所有文件
    处理动作:操作动作,默认输出到屏幕
    课堂习题:
    1. 查找/var 目录下属主为root,且属组为mail的所有文件
      find /var/ -user "root" -group "mail"
    2. 查找/var 目录下不属于root、lp、gdm的所有文件
      find /var ! -user "root" -a ! -user "lp" -a ! -user "gdm"
    3. 查找/var 目录下最近一周内其内容修改过,且属主不为root,也不是postfix的文件
      find /var -mtime -7 ! -user "root" -a ! -user "postfix"
    4. 查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件
      find / -nouser -nogroup -atime -7
    5. 查找/etc 目录下大于1M且类型为普通文件的所有文件
      find /etc -size +1M -type f
    6. 查找/etc 目录下所有用户都没有写权限的文件
      find /etc ! -perm /222
    7. 查找/etc 目录下至少有一类用户没有执行权限的文件
      find /etc ! -perm -111
    8. 查找/etc/init.d 目录下,所有用户都有执行权限,且其他用户有写权限的文件
      find /etc/init.d/ -perm -113
  14. 找出 ifconfig ens33 命令结果中本机的IPv4地址
    ifconfig ens33|head -2|tr -s ' ' ':'|cut -d ':' -f 3|tail -n1
    ifconfig ens33|grep netmask|tr -s ' '|cut -d ' ' -f 3
  15. 查出分区空间使用率的最大百分比值
    df|tr -s ' ' '%'|cut -d '%' -f 5|sort -nr|head -1
    df|cut -c34-36|tr -d ' '|sort -nr|head -1
  16. 查出用户UID最大值的用户名、UID及shell类型
    getent passwd|sort -t: -k3 -nr|head -1|cut -d: -f1,3,7 --output-delimiter='-'
  17. 查出/tmp的权限,以数字方式显示
    stat /tmp|head -4|tail -1|tr '/' '('|cut -d'(' -f2
  18. 统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
    netstat -nt|tail -$(echo `netstat -nt|wc -l`-2|bc)|tr -s ' ' ':'|cut -d: -f6|sort|uniq -c|sort -nr
    netstat -nt|grep :|tr -s ' ' ':'|cut -d ':' -f 6|sort|uniq -c|sort -nr
  19. 显示三个用户root、mage、wang的UID和默认shell
    egrep '^(root|mage|wang)' /etc/passwd|cut -d':' -f3,7
  20. 找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
    egrep '^[[:alpha:]_]+\(' /etc/rc.d/init.d/functions
  21. 使用egrep分别取出/etc/rc.d/init.d/functions的基名、目录名
    基名:echo /etc/rc.d/init.d/functions | egrep -o '\<[[:alpha:]]+$'
    目录名:echo /etc/rc.d/init.d/functions | egrep -o '^.*/'|egrep -o '[[:alnum:]\.]+/$'|tr -d '/'
    或
    echo /etc/rc.d/init.d/functions | egrep -o '^.*/'|tr '/' '\r'
    路径名:echo /etc/rc.d/init.d/functions | egrep -o '^.*/'
  22. 统计last命令中以root登录的每个主机IP地址登录次数
    last|egrep '^root.*\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'|tr -s ' '|cut -d' ' -f3|sort|uniq -c|sort -nr
  23. 利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
    '[0-9]' 或 '[[:digit:]]'
    '[1-9][0-9]'
    '1[0-9]{2}'
    '2[0-4][0-9]'
    '25[0-5]'
  24. 显示ifconfig命令结果中所有IPv4地址
    ifconfig|grep '\<inet\>'|tr -s ' '|cut -d ' ' -f 3
  25. 将此字符串:welcome to magedu linux中的每个字符去重并排序,重复次数多的排到前面
    echo 'welcom to magedu linux'|grep -o .|sort|uniq -c|sort -nr
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!