linux学习30 运维核心技能-shell脚本编程思想和条件测试

一、回顾

  1、文件系统管理

    管理工具:mkfs,mke2fs,e2label,tune2fs,dumpe2fs,e2fsck,blkid,mkfs.xfs,mkfs.vfat,fsck

    mkswap,swapon,swapoff

    mount,umount,fuser,lsof

    df,du

  2、fstab文件

    设备  挂载点  文件系统类型  挂载选项  转储频率  自检次序

  3、文件系统

    a、目录:文件

      元数据:inode,inode table

      数据:data blocks

        下级文件或目录的文件名与其inode对应关系

    b、文件名:每一个文件的文件名并没有存放在元数据中,而是存在于上级目录,也就是其所在的目录,因此在目录存放的对应的数据的data block中主要存放的就是其下级文件或目录的文件名与其inode的对应关系

        dentry 

  4、删除文件

    a、将此文件指向的所有data block标记为未使用状态,因此以后其它数据填充时就可以覆盖相应的磁盘块了。

    b、将此文件的inode标记为未使用,仅需要修改相应的inode表中的相应的条目的状态和各data block的其中一位的状态,并修改inode位图和data block的位图即可完成。之所以有些文件删除以后能使用所谓的文件恢复工具找回来就是这样的原因。

  5、复制和移动文件

    复制:新建文件

    移动文件:

      在同一文件系统:改变的仅是其路径

      在不同文件系统:复制数据至目标文件,并删除源文件

  6、符号链接

    权限:lrwxrwxrwx

  7、硬链接:指向同一个inode

二、bash脚本编程

  1、脚本文件格式

    第一行,顶格 #!/bin/bash

    注释信息: #

    代码注释:

    缩进,适度添加空白行

[root@node1 script]# cat first.sh 
#!/bin/bash
#description: say hello
#version: 0.0.1
#author: wohaoshuai <[email protected]>
#date: 2020-01-02

  2、语言:编程语法格式,库,算法和数据结构

    编程思想:

      问题空间 --> 解空间

  3、变量:

    局部变量

    本地变量

    环境变量

    位置参数变量

    特殊变量

  4、数据类型:字符型,数值型

    弱类型:字符型

  5、算术运算

    +,-,*,/,%,**

    let VAR=$num1 op $num2

    VAR=$[expression]

    VAR=$((expression))

    VAR=$(expr argu1 argu2 argu3)

    注意:有些时候乘法符号需要转义

    增强型赋值:变量做某种算术运算后再次回存至此变量中

      let i=$i+#

      let i+=#

      +=,-=,*=,/=,%=

    自增:

      let VAR=$[$VAR+1]

      let VAR+=1

      let VAR++

    自减:

      VAR=$[$VAR-1]

      let VAR-=1

      let VAR--

[root@node1 script]# declare -i i=1
[root@node1 script]# echo $i
1
[root@node1 script]# i=$[$i+1]
[root@node1 script]# echo $i
2
[root@node1 script]# let i+=1
[root@node1 script]# echo $i
3
[root@node1 script]# cat idsum.sh 
#!/bin/bash
#
id user1 &> /dev/null || useradd user1
echo "user1 id is $(id -u user1)"
id user2 &> /dev/null || useradd user2 
echo "user2 id is $(id -u user2)"
user1_id=$(id -u user1)
user2_id=$(id -u user2)

id_sum=$[${user1_id}+${user2_id}]
echo "the id sum: $id_sum"
[root@node1 script]# bash idsum.sh 
user1 id is 5010
user2 id is 5017
the id sum: 10027

  6、练习

    a、写一个脚本

      计算/etc/passwd文件中的第10个用户和第20个用户的id号之和

        id1=$(head -10 /etc/passwd|tail -1|cut -d: -f3)

        id2=$(head -20 /etc/passwd|tail -1|cut -d: -f3)

        sum=$[$id1+$id2]

    b、写一个脚本

      计算/etc/rc.d/init.d/functions和/etc/inittab文件的空白行数之和

        grep "^[[:space:]]*$" /etc/rc.d/init.d/functions |wc -l

1:11:49

猜你喜欢

转载自www.cnblogs.com/Presley-lpc/p/12132130.html