Linux--shell脚本基本设置及常用命令

1.什么是shell

shell是操作系统中的一个软件,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口。系统中的命令用shell去解释,shell接收系统回应的输出并显示到屏幕上。

shell脚本

shell script(程序化脚本)是利用shell的功能所写的一个“程序”,这个程序是使用纯文本文件,将一些shell的语法和指令写在里面,搭配正则表达式,管线命令与数据流重导向等功能,用shell脚本保存执行的动作,实现动作的批量执行。

2.shell脚本的格式

shell脚本文件名称可以任意,但为了避免被认为是普通文件,加上.sh 后缀,以表示是一个脚本文件。
shell脚本中一般会出现三种:

  1. 第一行的脚本声明(#!)用来告诉系统使用哪种shell解释器来执行脚本;
  2. 第二行 #注释信息:对脚本功能和命令的介绍信息
  3. 执行语句

3.vim创建脚本文件自动添加头部注释

vim /etc/vimrc
"开头行为注释行

"map ms:call WESTOS()'s 设置用快捷键来自动生成,一般不用快捷键,都是自动生成

autocmd BufNewFile *.sh,*.script exec ":call WESTOS()"
新创建的以.sh或.script结尾的文件自动生成头部注释

function WESTOS()
	call append(0,"########################")
	call append(1,"#Author                #")
	call append(2,"#Create_Time: ".strftime("%Y-%m-%d")." #")
	call append(3,"#mail                  #")
	call append(4,"#Version:              #")
	call append(5,"#Description:          #")
	call append(6,"#                      #")
	call append(6,"########################")
	call append(7,"")
	call append(8,"#!/bin/bash")
endfuction()

Linux--shell脚本基本设置及常用命令_第1张图片
Linux--shell脚本基本设置及常用命令_第2张图片

4. 脚本的调用:

脚本建立完成后,有四种调用方式:

  1. sh +脚本绝对路径的方式可以执行

  2. 直接输入脚本的绝对路径进行执行 前提是脚本文件有执行权限chmod +x 脚本所在路径

  3. source test.sh
    
  4. . test.sh

注意:

  • 第一种 sh test.sh 与 第二种 直接输入脚本的绝对路径进行执行,将会开启一个新的shell环境去执行,
    (不指定便使用默认的shell环境,linux下默认的shell是Bourne Again Shell(bash),可以使用$SHELL变量来查看)
  • 第三种和第四种,在当前的shell解释器环境中运行`

示例:

a=1
vim test.sh
echo $a
source test.sh
或者 . test.sh

不可以用sh test.sh,因为变量a属于环境级变量,只在当前环境中生效,与执行test脚本的不是同一个环境
Linux--shell脚本基本设置及常用命令_第3张图片
Linux--shell脚本基本设置及常用命令_第4张图片

ps  f

查看后台进程运行环境之间的关系

5.利用脚本设置shell环境颜色

Linux--shell脚本基本设置及常用命令_第5张图片
Linux--shell脚本基本设置及常用命令_第6张图片

6.shell脚本中的常用命令

6.1 diff

比较两个文件或目录的差异,以行为单位来进行对比。

 diff  将两个文件或目录的内容进行比较
 参数:
   -b:忽略一行当中,仅有多个空白的差异(例如"haha"与"ha     ha "视为相同
   -B:忽略空白行的差异。
   -i:忽略大小写的不同。
   -u:显示文件信息的不同
 显示内容的含义
 [num1,num2][a|d|c][num3,num4]
 num1,num2    #表示在第一个文件中的行数
 num3,num4    #表示在第二个文件中的行数
 a             #表示添加---add
 c             #表示更改---change
 d             #表示删除---delete
 <             #表示第一个文件中的内容,
 >             #表示第二个文件中的内容
 ---           #分割线

diff比较文件:

Linux--shell脚本基本设置及常用命令_第7张图片
test文件第二行被test1第二行替换,就内容相同。

Linux--shell脚本基本设置及常用命令_第8张图片
新旧文件要修改数据的界定范围,旧文件在 1-2 行,新文件在 1-2 行
123
-haha #删除haha
+o haha #加上o haha

diff比较目录:

-r 递归比较目录
Linux--shell脚本基本设置及常用命令_第9张图片

6.2 patch

常与diff配合使用

yum install patch -y
  -R :代表还原,将新的文件还原成原来旧的版本
  -b :备份文件。在修补文件时,重命名或复制原始文件,而不是删除它 
diff -u test1 test2 > test.patch
#生成补丁文件 test.patch 
patch -b test1 test.patch 
#修补文件test1,并备份原来的文件,生成 test.orig

Linux--shell脚本基本设置及常用命令_第10张图片

6.3 cut

cut 	-d	指定分隔符
	    -f	截取域
	    -c	指定字符

输出以:分隔的第一列和第三列
Linux--shell脚本基本设置及常用命令_第11张图片
输出以:作为分隔符的第一列到第四列
Linux--shell脚本基本设置及常用命令_第12张图片
示例:
截取主机的 ip 地址

 ifconfig | head -n 2 | tail -n 1 | cut -d " " -f 10

截取主机的 ip 地址,以‘空格’为分隔符,截取第 10 列
Linux--shell脚本基本设置及常用命令_第13张图片

6.4 sort

 sort    多用于字符排序
	    -n      纯数字排序
        -r      倒序
        -u      唯一,去掉重复数字
        -o      输出到指定文件
        -t      指定分隔符
        -k      指定要排序的列

sort test(不加任何参数,只对第一位数字进行排序)
Linux--shell脚本基本设置及常用命令_第14张图片
Linux--shell脚本基本设置及常用命令_第15张图片
指定以:为分隔符,对第二列进行排序
Linux--shell脚本基本设置及常用命令_第16张图片
Linux--shell脚本基本设置及常用命令_第17张图片

6.5 uniq

对重复字符作相应的处理。

     uniq -u 显示与周围相比,唯一的行的数字
     uniq -d 显示重复的行的数字
     uniq -c 每行显示一次并统计重复次数

找出登陆本机次数最多的主机IP

Linux--shell脚本基本设置及常用命令_第18张图片

6.6 $$,||

    &&
  逻辑“与”的运算符 &&,表示当前面的命令执行成功后才会执行它后面的命令
    ||
  逻辑“或”的运算符 ||,表示当前面的命令执行失败后才会执行它后面的命令

6.7 test []

test    等价于	[ ]
	 =    相等
	!=    不相等
	-eq	相等
	-ne	不相等
	-le	小于等于
	-lt	小于
	-ge	大于等于
	-gt	大于
	-a	and
	-o	or
 
	-z	是否为空
	-n	不为空
	
	示例:
	a=""
	[ -z "$a" ] && echo yes || echo no
	yes
	
	
	-ef	文件标号相等
	-nt	file1是否比file2新
	-ot	file1是否比file2旧

软链接(多个节点号对应一个数据区域)
ln -s ping.sh hahaha
hahaha为满权限,为了不影响ping.sh操作权限

硬链接(一个节点号对应多个数据区域)
ln ping.sh haha
ls -i 查看节点号

cp 复制节点号,也复制数据区域

	-e	文件是否存在
	-f	普通文件
	-L	连接文件
	-S	套接字
	-b	块设备
	-d	目录
	-c	字符设备

Linux--shell脚本基本设置及常用命令_第19张图片
Linux--shell脚本基本设置及常用命令_第20张图片
Linux--shell脚本基本设置及常用命令_第21张图片
写一个脚本测试:
Linux--shell脚本基本设置及常用命令_第22张图片
Linux--shell脚本基本设置及常用命令_第23张图片
硬链接
Linux--shell脚本基本设置及常用命令_第24张图片

ls -i 查看节点号
ln ping.sh haha
haha为ping.sh的硬链接
ln -s ping.sh xixi
xixi为ping.sh的软链接

Linux--shell脚本基本设置及常用命令_第25张图片
检测是否为套接字
在这里插入图片描述

6.8 tr

tr 可以用来删除一段信息当中的文字,或者是进行文字信息的替换

eg: 将 w 输出的信息中,所有的小写变成大写字符:
 w | tr 'a-z' 'A-Z'

Linux--shell脚本基本设置及常用命令_第26张图片
Linux--shell脚本基本设置及常用命令_第27张图片

你可能感兴趣的:(shell)