基于linux下的脚本的撰写

shell 脚本语言(解释性语言) (可以运行的文本,存的是命令)
C C++ 描述性语言年 yum install gcc -y 安装C语言的编译器
脚本的存在意义:可以重复批量的执行

1.shell脚本的编写(shell是一个解释器)

!/bin/bash 幻数

  脚本书写时自动加入下面内容
   vim /etc/vimrc
    map <F4> ms:call WESTOS()<cr>'s                按F4时加入,如果需要自动出现则需要用"注释掉这一行
    autocmd BufNewFile *.sh exec ":call WESTOS()"   新建的.sh文件自动加入
    func WESTOS ()
            call append(0,"################################")
            call append(1,"# Author:            宁      #")
            call append(2,"# Version:                     #")
            call append(3,"# Mail:                        #")
            call append(4,"# Date:           ".strftime("%Y-%m-%d").("   #"))
            call append(5,"# Description:                 #")
            call append(6,"#                              #")
            call append(7,"################################")
            call append(8," ")
            call append(9,"#!/bin/bash")
    endfunc

这里写图片描述
这里写图片描述

2.比较文件的不同并打补丁

diff file file1                  比较文件的不同(以第二个文件为主)
    diff -u file file1           比较文件的不同并生成补丁
    diff -u file file1 > file.path   将补丁导入文件中(也可以不以.path结尾)
    diff -r westos/ mnt/             比较两个目录
    yum install patch -y             安装打补丁的软件
    patch file file.path             给file文件打补丁,使得file和file1相同
    patch -b file file.path          给file文件打补丁,并保留原文件.orig文件

这里写图片描述
这里写图片描述
这里写图片描述
3.截取文件

cut -d : -f 1 file     截取该文件的第一列   (-d 后跟分隔符)
cut -d : -f 1,3 file   截取文件的第一列和第三列
cut -d : -f 1-3 file   截取文件的123列
cut -d : -f 3- file    截取文件第三列以后的所有列
cut -c 1 file          截取文件的第一个字符

这里写图片描述
这里写图片描述
这里写图片描述
4、显示主机ip的脚本撰写

  只显示ip
  awk 报告生成器
  ifconfig eth0 | awk -F " " '/inet\>/{print $2}'
  sh -x 脚本名   脚本排错  + 命令   没有+的是命令运行结果

这里写图片描述
这里写图片描述

5.&&和||的使用

在ping 任意ip时,可以ping通输出up,不通输出down
    ping -c1 -w1 $1 &> /dev/null && echo $1 is up || echo $1 is down

这里写图片描述
这里写图片描述
6.sort和uniq按照要求排序输出

sort -n    按纯属字排序(升序)
    sort -r    倒序
    sort -u    去掉重复数字
    sort -o    输出到指定文件
    sort -t    指定分隔符
    sort -k    指定要排序的列
    uniq -c    输出每个的个数并将重复的只输出一次
    uniq -d    输出重复的
    uniq -u    输出不重复的

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
6.输出/mnt下的最大的文件名

vim max.sh
ls -Sl /mnt/ | grep -v total | awk -F " " 'NR==1{print $9}'

这里写图片描述
这里写图片描述
8.test命令

test命令和[]等同   []两边必须有空格
    [ "$A" = "$B" ]                         =
    [ "$A" != "$B" ]                       !=
    [ "$A" -eq "$B" ]                       =
    [ "$A" -ne "$B" ]                      !=
    [ "$A" -le "$B" ]                      <=
    [ "$A" -lt "$B" ]                      <
    [ "$A" -ge "$B" ]                      >=
    [ "$A" -gt "$B" ]                      >
    [ "$A" -ne "$B" -a "$A" -gt "$B" ]     !=并且>
    [ "$A" -ne "$B" -o "$A" -gt "$B" ]     !=或>
    [ -z "$A" ]                            为空
    [ -n "$A" ]                            不为空

这里写图片描述
9、 判断一个数是不是10以内的数脚本的撰写

vim test_number.sh
[ -z "$1" ]&& {
            echo "please give me a number!!!"
            exit 1
    }
    [ "$1" -lt "10" -a "$1" -gt "0" ] && {
            echo "$1 is between 1~10"
    }|| {
            echo "$1 is not between 1~10"
    }

这里写图片描述
这里写图片描述

10、对文件类型的判断

[ "file" -ef "file1" ]                判断两个的节点(大小)互为硬链接
[ "file" -nt "file1" ]                file1的建立时间早于file2
[ "file" -ot "file1" ]                file1的建立时间迟于file2
测试
touch file  
ln file file1
[ "file1" -ef "file3" ]&& echo yes || echo no
[ "file1" -ot "file2" ]&& echo yes || echo no
[ "file1" -nt "file2" ]&& echo yes || echo no

这里写图片描述

 [ -e " file" ]   是否存在
 [ -f " file" ]   是否普通文件
 [ -L " file" ]   是否软链接
 [ -b " file" ]   是否是块设备
 [ -S " file" ]   是否套接字
 [ -d " file" ]   是否是目录
 [ -c " file" ]   是否是字符设备

检测文件的类型脚本的撰写

[ -z "$1" ]&&{
            echo "please input a file name after script!!!"
            exit 1
    }
    [ -e "$1" ]||{
            echo "$1 is not exist!!!"
            ex
    }
    [ "-L" "$1" ]&&{
            echo "$1 is a link"
            exit 0
    }
    [ "-f" "$1" ]&&{
            echo "$1 is a common file"
            exit 0
    }
    [ "-b" "$1" ]&&{
            echo "$1 is a block file"
            exit 0
    }

这里写图片描述
这里写图片描述

11、输入无论大小写时均可通过(tr 转换大小写)

   vim tr.sh
    word=$(echo $1 | tr 'A-Z' 'a-z')
    [ "$word" = "hello" ]&& {
            echo yes
    }||{
            echo no
    }

这里写图片描述
这里写图片描述
12、创建用户用户存在时输出存在,不存在时创建该用户脚本的撰写

vim user_add.sh
[ "$#" -eq "2" ]||{
            echo "please input  username and password after script!!!"
            exit 1
    }
    Check_User=`getent passwd $1`
    [ -n "$Check_User" ]&&{
            echo "$1 is exist!!!"
            exit 1
    }||{
        useradd $1
        echo $2 | passwd --stdin $1
    }

这里写图片描述

猜你喜欢

转载自blog.csdn.net/ningyuxuan123/article/details/80696794
今日推荐