shell脚本(一)

1.什么是shell

shell是一个命令解释器.是介于操作系统kernel(内核)与用户之间的一个绝缘层.准确地说,它也是一种强力的计算机语言。shell的工作形式有两种,一种是交互式,用户输入一条命令,shell解释并执行一条;另一种是批处理,即shell脚本

2.shell脚本

一个shell程序,被称为一个脚本,shell脚本是将各种命令通过逻辑语句组合而成的程序,是一种很容易使用的工具,它可以通过将系统调用,公共程序,工具,和编译过的二进制程序粘合在一起来建立应用.

3.shell脚本的作用

Shell脚本可以批量的,更便捷的,更灵活的管理系统任务和其它的重复工作的例程。

4.shell脚本的编写格式

一个完整的脚本应该包括“脚本声明”“注释信息”和“可执行语句”

脚本声明即 #!

#!/bin/bash                shell当前运行环境所用的解释器

5.如何运行脚本

方法一:sh  (name.sh )脚本的名称

方法二:

chmod +x 脚本名称

然后在根目录下使用绝对路径调用

编辑shell脚本的规范:

要使得vim自动添加脚本的说明信息,如下:

vim  /etc/vimrc

 66 map <F4> ms:call WESTOS()<cr>'s
 67 function WESTOS()
 68         call append(0,  "######################################"    )
 69         call append(1,   "#Author              :lee                                                  #"    )
 70         call append(2,   " Email               :lee@westos.com                          #"    )
 71         call append(3,  "#Version             :1.0                                                 #"    )
 72         call append(4,   "#Create_Date         :".strftime("%Y-%m    -%d")."  #"   )
 73         call append(5,   "#Description         :                                                    #"    )
 74         call append(6,   "######################################"     )
 75         call append(7,   "                              ")
 76         call append(8,   "#!/usr/bin/env bash")
 77 endfunction



编辑一个脚本:

vim name.sh

按F4可直接导入:


常用命令:

1.diff

比较两个文件的不同

diff
[num1,num2][a|c|d][num3,num4]
a        添加
c        改变
d        删除
num1,num3    第一个文件的内容
num3,num4    第二个文件的内容


diff -r /mnt/westos/ /mnt/linux/           ##比较两个目录的不同
diff -u file file1 > file.path            ##比较两个文件的不同,并将不同处写入到.path文件中

yum install -y  patch

patch  file file.path                      ##.path 文件写入到源文件中
patch -b file file.path        #-b标示备份原文件为file.orig

 2.grep

grep -n   要过滤的参数                 ##过滤行并显示行号
grep -n3                                        ##过滤行以及周围的3行
grep -A3                                       ##过滤并显示后3行
grep -B3                                       ##过滤并显示前三行
grep -i                                               ##过滤时不区分大小写
grep -v                                             ##过滤掉


grep -E                ##同时过滤多个条件                                       
grep ^test                 ##过滤句子中以test开头
grep test$                   ##过滤句子中以test结尾
grep "\<test"               ##过滤文件中以test单词为头
grep "test\>"               ##过滤文件中以test单词为尾


grep hello -r /mnt/               ##找出某个内容所在的目录


3.
cut           ##截取
cut -c 1-4|1,4          ##截取文件中每一行前4个字符 或者第1个和第4个字符

cut -d : -f 1,7 | -f 1-3    ##以" : " 为间隔符,截取文件中   第1列和第7列      




cut -d : -f 1,7 | -f 1-3    ##以" : " 为间隔符,截取文件中   第1列和第7列



显示系统中可以登陆的用户



4..awk

TEST="#################################"

awk -F 分隔符 -v TEST=$TEST  'BEGIN {print TEST} {print $2} END{print TEST}' /etc/passwd

awk -F ":" -v TEST=$TEST 'BEGIN {print TEST ":"} {print $2} END{print TEST}' /etc/passwd

awk '/aa/' file 显示含有aa的行。

awk '{print $1, $2}' file 显示第一第二字段。

awk '/aa/{print $1, $2}' file 将含有aa的行的第一和第二个字段显示出来。

awk -F: '/^root/{print $1, $2}' /etc/passwd 指定:为分隔符,打印第一和第二字段。

awk -F: 'BEGIN{OFS="+++"}/^root/{print $1, $2}' /etc/passwd 以:为分隔符,打印第一和第二段,而且彼此用+++分开。


显示 脚本后跟的网卡名称的IP

#!/usr/bin/env bash
MESSAGE="$1's IP:"
ifconfig $1 | grep "\<inet\>" |awk -F " " -v MESSAGE="$MESSAGE" 'BEGIN {print MESSAGE} {print $2}'


                  

打印脚本后第一个文件中以“:”为分隔符的第一列,并以hello开头

test=hello
awk -F : -v test=hello 'BEGIN {print test} {print $1}' $1

打印/etc/passwd 中第一行 并且以变量name开头,以end结尾,注意BEGIN后必须跟变量。

[root@client mnt]# awk -F : -v name=$name 'BEGIN{print name} {print $1} END{print "end"}'  /etc/passwd 



5.echo

echo -n               ##不换行输出

echo -e                ##处理特殊字符

echo -e "\r    \r"

6.sed

sed '1,5s/sbin/westos/g' passwd                     ##替换1-5行中所有sbin为westos

sed '/lp/,/shutdown/s/sbin/westos/g' passwd                     ##从“lp" 所在行开始,至“shutdown“所在行截至的行

sed -e 's/sbin/westos' -e 's/nologin/redhat' passwd          ##替换sbin为westos,并且替换nologin为redhat

sed -n 5p passwd            ##输出第5行

sed ‘s/sbin/westos/g’  -i passwd    ##替换并写入到文件

vim file

s/sbin/westos/g

s/nologin/lee/g

sed -f file passwd 


修改apche端口为脚本后的第一串数字

#!/usr/bin/env bash
Port=`grep "^Listen" /etc/httpd/conf/httpd.conf`
sed "s/$Port/Listen\ $1/g" -i /etc/httpd/conf/httpd.conf
echo chage $Port to Listen $1
systemctl restart httpd
                         



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值