Shell编程基础命令解析

提要

  • 上篇回顾

  • 示例解释

  • 下期预告

上篇回顾

       上次我们编写了一个小脚本,详见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负载、内存及硬盘使用情况等,下期再见!

       欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号:

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

转载于:https://my.oschina.net/u/1251444/blog/1301721

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值