每日一题20180327

Posted okokabcd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题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,"\n";}'

分析:

# 输出常用命令及其统计数
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,"\n";}' 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,"\n";  循环输出柱状图

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

三、参考

以上是关于每日一题20180327的主要内容,如果未能解决你的问题,请参考以下文章

笔试强训之每日一题

笔试强训之每日一题

笔试强训之每日一题

笔试强训每日一题

笔试强训之每日一题

笔试强训之每日一题