zoukankan      html  css  js  c++  java
  • 每日一题20180327

    一、问题

    1.1 输出一个 10位的随机数

    1.2 形象地显示最常用的30个命令的使用频率

    1.3 一个《黑客帝国》效果的实现

    二、答案

    2.1

    head -c10 <(echo $RANDOM$RANDOM$RANDOM)
    

    2.2

    history|awk '{print $2}'|sort|uniq -c|sort -rn|head -30|awk '!max{max=$1;}{r="";i=100*$1/max;while(i-->0)r=r"#";printf "%50s %5d %s %s",$2,$1,r,"
    ";}'
    

    分析:

    # 输出常用命令及其统计数
    history|awk '{print $2}'|sort|uniq -c|sort -rn|head -30 > a.txt
    # awk根据统计数输出统计柱状图
    awk '!max{max=$1;}{r="";i=100*$1/max;while(i-->0)r=r"#";printf "%50s %5d %s %s",$2,$1,r,"
    ";}' a.txt
    
    !max{max=$1;}  如果未定义max,就将$1赋值给max,因为是从大到小排序的,所以max是最大值
    i=100*$1/max;  按最大数分成100份,每个命令所占份数
    while(i-->0)r=r"#";printf "%50s %5d %s %s",$2,$1,r,"
    ";  循环输出柱状图
    

    2.3

    echo -ne "e[32m" ; while true ; do echo -ne "e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done 
    

    分析:

    echo
    -e表示激活转义字符
    -n表示输入最后不加换行符
    
    "e[32m"
    e[+数字+m固定写法
    # 文字风格
    0 重置风格
    1 粗体
    4 下划线
    5 点线
    7 反转颜色
    8 隐藏
    # 文字颜色
    30 黑色
    31 红色
    32 绿色
    33 黄色
    34 蓝色
    35 红紫色
    36 蓝绿色
    37 白色
    # 背景色
    40 黑色
    41 红色
    42 绿色
    43 黄色
    44 蓝色
    45 红紫色
    46 蓝绿色
    47 白色
    
    tr -c "[:print:]" " " < /dev/urandom
    表示把/dev/urandom里不能打印的字符全部替换为空格
    -c表示把不属于"[:print:]"字符集的字符替换为" "字符集
    如果第二个字符集不写则执行删除不属于第一字符集的内容
    
    接着一个管道符连接到dd count=1 bs=50 2> /dev/null
    表示每50个字节往屏幕输出
    count=1 表示仅读取的次数
    bs=50 设置每次读取或输入的字节数和ibs=50和obs=50效果一样
    2> /dev/null 将错误输出到/dev/null
    

    三、参考

  • 相关阅读:
    合并两个有序链表
    有效括号方法二
    有效括号
    es6 中的模块化
    XMLHttpRequest 对象
    AST
    php读写文件方式
    vue开发中遇到的问题
    sublime操作
    cmd命令
  • 原文地址:https://www.cnblogs.com/okokabcd/p/8660757.html
Copyright © 2011-2022 走看看