提要
-
上篇回顾
-
示例解释
-
下期预告
上篇回顾
上次我们编写了一个小脚本,详见Linux系统如何像Windows系统一样方便的查看系统信息,今天让我们一起学习一下这里面涉及的一些基础命令,我们先来回顾一下上次编写的那个脚本
1行 # File Name:systemInfo.sh
2行 # Author:howard
3行 # Email:
4行 # Create Date:2017-6-29
5行 #!/bin/bash
6行 clear
7行 # OS Type
8行 os_type=$(uname -o)
9行 echo -e '\E[34m' "OS Type :" $(tput sgr0) $os_type
10行 # OS Release Version and Name
11行 os_ver=$(cat /etc/system-release)
12行 echo -e '\E[34m' "OS Release Version and Name :" $(tput sgr0) $os_ver
13行 # Kernel Release14行 kernel=$(uname -r)
15行 echo -e '\E[34m' "Kernel Release :" $(tput sgr0) $kernel
16行 # CPU Info
17行 CPU_info=$(cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq)
18行 echo -e '\E[34m' "CPU Info :" $(tput sgr0) $CPU_info
19行 # CPU Kernel Number
20行 CPU_kernel_number=$(cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c | awk '{print $1}')
21行 echo -e '\E[34m' "CPU Kernel_Number :" $(tput sgr0) $CPU_kernel_number
22行 # Hostname
23行 hostname=$HOSTNAME
24行 echo -e '\E[34m' "Hostname :" $(tput sgr0) $hostname
25行 # Logged In Users
26行 users=$(who | awk '{print $1}')
27行 echo -e '\E[34m' "Logged In User : $(tput sgr0) $users
注意,为了方便说明,每行前都加了行号。
示例解释
-
第1~4行:为注释行,shell脚本中以 # 开头的行为注释行
-
第5行:指定脚本解释器,这里我们采用/bin/bash,虽然本行也是以#开头,但它代表特殊含义,不代表注释
-
第6行:clear 是清屏命令
-
第8行:定义一个叫 os_type 的变量,变量的值是 uname -o 命令执行的结果
-
第9行:echo 命令,输出命令,显示结果到屏幕上,其中
'\E[34m' : 固定写法,代表蓝色字;
$(tput sgr0) :恢复正常屏幕,等同于 '\E[0m';
echo :可以输出显示如下几种字体颜色:
echo -e '\E[30m 黑色字 \E[0m'
echo -e '\E[31m 红色字 \E[0m'
echo -e '\E[32m 绿色字 \E[0m'
echo -e '\E[33m 黄色字 \E[0m'
echo -e '\E[34m 蓝色字 \E[0m'
echo -e '\E[35m 紫色字 \E[0m'
echo -e '\E[36m 天蓝字 \E[0m'
echo -e '\E[37m 白色字 \E[0m'
-
第11行:cat 命令,显示文件内容
-
第17行:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq
grep 命令,选取包含有name的行
cut 命令,是以每一行为一个处理对象的,
-d 指定域分隔符(我们这里是冒号),-d选项的默认间隔符就是制表符
-f 指定要剪出哪几个域(我们这里是2)
uniq 命令,用于忽略文件中的重复行
-
第20行:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c | awk '{print $1}'
uniq -c 命令,在每列旁边显示该行重复出现的次数
awk '{print $1}' 命令,awk是以文件的一行为处理单位,awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以我们这里$1就代表CPU的个数
-
第23行:$HOSTNAME,从系统环境变量里获取主机名
前面提到的grep、cut、uniq、awk这几个命令都是编写脚本的主角,由于各个命令参数比较多,我们会在后面的shell编程中继续为大家介绍,我们这里只是抛砖引玉,让你对shell编程不在陌生,找到入门路径而已。谢谢大家,
下期预告
这期我们就到这里啦,下期我们将详细介绍一下如何查看系统的运行状态,例如:CPU负载、内存及硬盘使用情况等,下期再见!
欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号: