linux中Shell 基本知识

一、脚本概述

 1.Shell脚本是一种解释型语言

 2.用Shell脚本保存执行命令

 3.用脚本判定命令的执行条件

 4.用脚本实现命令的批量执行

二、脚本基础知识

 1.脚本编写

  #!/bin/bash    ##执行脚本的shell类型


 2.脚本运行

[root@desktop8 mnt]# sh hello.sh    ##用sh打开脚本

[root@desktop8 mnt]# chmod  +x  hello.sh   ##添加执行权限

[root@desktop8 mnt]# /mnt/hello.sh    ##用脚本本身的shell打开


 3.脚本调试

[root@desktop8 mnt]# sh -x hello.sh    

+ echo hello everyone    ##命令行

扫描二维码关注公众号,回复: 1530496 查看本文章

hello everyone     ##运行结果


 4.自动添加脚本信息说明  ##配置文件/etc/vimrc

 66 autocmd  BufNewFile  *.sh  exec ":call WESTOS( )"

 67     ##新建的以.sh结尾的文件自动添加函数WESTOS

 68 " map  <F4>  ms: call WESTOS( )<cr>'s

 69      ##按F4自动添加函数WESTOS,“ 表示注释


  建立新的脚本文件


三、简单脚本练习   ##脚本添加x权限
 1.运行脚本 ip_show.sh 显示当前主机ip

  显示主机IP


 2.运行脚本 user_show.sh 显示当前主机可登陆的用户

  显示主机可登陆用户


 3.运行脚本 clear_log.sh 清空当前日志

四、基本脚本命令

diff  ##比较文件差异


 1.对比两个文件的不同

 2.生成补丁

patch

 1.安装补丁软件 patch.x86_64
 2.打补丁

 3.打补丁的同时对原文件备份 (.orig)

cut  ##多用于截取字符

 1.cut参数

  cut  -d      ##指定分隔符

  cut  -f  1  ##指定截取每行第1列

  cut  -c  3  ##指定截取每行第3个字符

 2.用cut编辑脚本 user_show.sh

  执行脚本


 3.用cut编辑脚本 ip_show.sh

  执行脚本


sort  ##多用于字符排序

 1.sort参数

 sort -n   ##纯数字排序                              sort -r     ##倒序

 sort -u   ##去掉重复数字                          sort -o    ##输出到指定文件中

 sort -t   ##指定分割符                                sort -k   ##指定要排序的列

 2.对mnt文件排序,找出最大的两个文件

uniq  ##对重复字符的处理

 1.uniq参数

  uniq  -u   ##显示唯一的行

  uniq  -d   ##显示重复的行

  uniq  -c   ##每行显示的次数

  ##注意:配合sort命令使用

 2.编辑文件,对重复字符处理

&&和||

 1.&& 用来执行条件成立后执行的命令
 2.|| 用来执行条件不成立后执行的命令
 3.显示ping其他主机的结果

  ping其他主机结果


  注意:当执行脚本并没有加IP地址时,没有报错,不合理,需改善

test    ##判断条件是否成立

 1. test 参数

 test  等同于   [  ]

字符型数据

 [ "$a" = "$b" ]    ##$a和$b是否一致

 [ "$a" != "$b" ]    ##$a和$b是否不一致

 [ ! "$a" = "$b" ]   ##$a和$b是否一致,且该条件不成立时


整型数据

 [ "$a"  -eq  "$b" ]    ##是否$a = $b

 [ "$a"  -ne  "$b" ]   ##是否$a != $b

 [ "$a"  -lt  "$b" ]     ##是否$a < $b

 [ "$a"  -le  "$b" ]    ##是否$a <= $b

 [ "$a"  -gt  "$b" ]    ##是否$a > $b

 [ "$a"  -ge  "$b" ]    ##是否$a >= $b


 [ "$a" = "$b"  -o  "$a"  -lt  "100" ]  ##$a是否等于$b,或者$a小于100

 [ "$a" = "$b"  -a "$a"  -gt  "100" ]  ##$a是否等于$b,并且$a大于100


 [ -z  "$a" ]   ##$a是否为空

 [ -n  "$a" ]   ##$a是否不为空


文件

 [ "file1"  -ef  "file2" ]    ##节点是否一致,即文件是否一样

建立文件,查看节点,创建硬链接


 [ "file1"  -nt  "file2" ]   ##file1是否比file2时间new

 [ "file1"  -ot  "file2" ]   ##file1是否比file2时间out

 [ -e  "file" ]   ##文件是否存在

 [ -f  "file" ]   ##是否是普通文件

 [ -L  "file" ]   ##是否是软链接文件

 [ -S  "file" ]   ##是否是套接字

 [ -b  "file" ]   ##是否是块设备

 [ -d  "file" ]  ##是否是目录

 [ -c  "file" ]  ##是否是字符文件

 2.编写脚本check_num.sh判断数字是否在0-10之间


 3.编写脚本clean_log.sh,当超级用户时,情况日志,当普通用户,提示请切换用户


 4.编写脚本check_file.sh判断文件类型

   编写脚本如下:


   运行脚本检测


tr   ##转换字符


find  ##查找文件
 1.find 参数

 -group   ##查找组

 -type     ##查找类型

 -user    ##查找用户

 -not   -group  ##查找不是该组的文件

 -a  |  -o  ##  and  |  or


 -perm  777    ##精确匹配权限777的文件

 -perm  -644   ##匹配u=6、g=4、o=4的文件

 -perm  /666   ##匹配u=6或g=6或o=6的文件


 -size  20k    ##查找文件大小为20k的文件

 -size  -20k   ##查找文件大小为小于20k的文件

 -size  +20k   ##查找文件大小为大于20k的文件


-maxdepth  1  -name  passwd   ##查找目录的深度为1层

 -mindepth  2  -maxdepth  2  -name  passwd   ##只查找目录的第2层

 注意:最大深度为2层





猜你喜欢

转载自blog.csdn.net/for_myself0/article/details/80261291