• linux shell


    1、题目1
    取出passwordshell出现的次数
    解析:
    好,让取出password中shell出现的次数,笔者用的是ubuntu,/etc/passwd就是所谓的password文件,那咱们先看看/etc/passwd中文件的格式吧

     1 root:x:0:0:root:/root:/bin/bash
    2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    3 bin:x:2:2:bin:/bin:/bin/sh
    4 sys:x:3:3:sys:/dev:/bin/sh
    5 sync:x:4:65534:sync:/bin:/bin/sync
    6 games:x:5:60:games:/usr/games:/bin/sh
    7 man:x:6:12:man:/var/cache/man:/bin/sh
    8 lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    9 mail:x:8:8:mail:/var/mail:/bin/sh
    10 news:x:9:9:news:/var/spool/news:/bin/sh
    11 uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    12 proxy:x:13:13:proxy:/bin:/bin/sh
    13 www-data:x:33:33:www-data:/var/www:/bin/sh
    14 backup:x:34:34:backup:/var/backups:/bin/sh
    15 list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    16 irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    17 gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    18 nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    19 libuuid:x:100:101::/var/lib/libuuid:/bin/sh
    20 dhcp:x:101:102::/nonexistent:/bin/false 21 syslog:x:102:103::/home/syslog:/bin/false 22 klog:x:103:104::/home/klog:/bin/false 23 hplip:x:104:7:HPLIP system user,,,:/var/run/hplip:/bin/false

    笔者只拿23行,总共应该更多,好了 那咱们看一看

     1 root:x:0:0:root:/root:/bin/bash

    这个是以:为分割符号的,写的都是什么内容呢?
    用户名:口令:用户标识:组标识:注释描述:目录:登录Shell
    1)用户名:就是你的用户名,这里的是root
    2)口令:就是你的密码,这个字段存放的是用户密码的加密后的字符串,但是etc/passwd这个文件对于所有用户可见,现在Linux 系统都使用了shadow技术,
    把真正加密厚的用户口令存放到/etc/shadow这个文件里,在passwd文件只用一个X表示,这也是跌入个字符是X的原因,
    我们看看shadow,
    1 root:$1$kOvcdARn$hhXrRriimf0ZfDumvwGpF.:14387:0:99999:7:::,哈,这就是加密后的结果
    3)用户标识:系统内部用来标识用户,一般情况下与用户名是一一对应的。
    4)组标识:分组标识
    5)注释信息:就是注释
    6)目录:用户登录的目录
    7)登录shell:用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
    好了,咱们已经知道这几个标识使用:进行隔离,而我们想要统计的shell就在标识的第七列
    那咱们就可以开始些语句了
    要显示内容,要用cat ,路径是/etc/passwd,要显示第七列的个数,那就要用Awk,AWK是一种优良的文本处理工具。
    它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。awk处理的工作与数据库的处理方式有相同之处,其相同处之一就是awk支持对记录和字段的处理,
    其中对字段的处理是grep和sed不能实现的,这也是 awk优于二者的原因之一。在awk中,缺省的情况下总是将文本文件中的一行视为一个记录,
    而将一行中的某一部分作为记录中的一个字段。为了操作这些不同 的字段,awk借用shell的方法,用1,2,3...这样的方式来顺序地表示行(记录)中的不同字段。
    也就是说$0 表示政行,$1表示第一个字段,$2表示第二个字段,我们要得shell是第七个字段,所以我们就用$7来表示
    cat /etc/passwd|awk -F: '{print $7}'
    好了,已经可以统计shell数量了,但是结果有很多条,sort是对内容进行排序,再加上那我们就要排序,sort是根据某一类型进行排序,
    uniq -c 进行统计,– c 显示输出中,在每行行首加上本行在文件中出现的次数,因为已经排序好,所以可以直接统计数量

    cat /etc/passwd|awk -F: '{print $7}'|sort|uniq -c
    就ok了,这种|是管道,也就是说上一个输出是下一个的输入,如果你把sort 或者uniq -c换一下位置,得到的就不是你想要的结果,好了,这就是这道题目的结果了
  • 相关阅读:
    Win7+Centos7双系统安装/树莓派安装Centos7
    C++学习笔记
    Ubuntu Codeblocks配置Eigen Sophus
    Java笔记
    解决Mac下AndroidStudio内容时卡顿
    解决Android RadioGroup跑到输入法上面
    Activity去掉标题不成功的解决方法
    Synergy屏幕共享键鼠 (for Mac&Ubuntu)
    Android 限制控件多次点击
    Bitmap 创建、转换、圆角、设置透明度
  • 原文地址:https://www.cnblogs.com/fish124423/p/2541102.html
Copyright © 2020-2023  润新知