linux脚本编写基础知识,linux中的shell脚本编程基本知识

shell也是操作系统中的一个软件它包在linux内核的外面,为用户和内核之间的交互提供了一个接口。

系统中的命令用shell去解释shell接收系统回应的输出并显示其到屏幕中

bash=GNUBourne-AgainShell

shell脚本

脚本是一种解释型语言

用shell脚本保存执行动作

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

用脚本来实现动作的批量执行

如何创建新shell脚本

vimscript.sh用vim编写脚本

#!/bin/bash脚本使用的解释器,通常用幻数“#!”指定

AUTHOR脚本作者

DATE脚本创作时间

MAIL脚本作者联系方式

VERSION脚本的版本

**脚本编写以.sh结尾

1.自动编辑脚本的说明信息

vim/etc/vimrc###写进最后面**写入:”mapms:callWESTOS()’s###按F4可以填充进去,但现在被注释了,最前面的双引号,标注释

autocmdBufNewFile*.shexec”:callWESTOS()”###所有新建的以.sh结尾的文件都会自动填充

funcWESTOS()

callappend(0,”###############################”)

callappend(1,”#Author:xbw”.(“#”))###表示建立者

callappend(2,”#Version:”.(“#”))###脚本的版本信息

callappend(3,”#Mail:”.(“#”))###建立者邮箱

callappend(4,”#Date:”.strftime(“%Y-%m-%d”).(“#”))###建立时间

callappend(5,”#Description:”.(“#”))###脚本描述

callappend(6,”#”.(“#”))

callappend(7,”###############################”)

callappend(8,””)

callappend(9,”#!/bin/bash”)

endfunc

其中call,表示调用、

linux中的shell脚本编程基本知识

效果图

linux中的shell脚本编程基本知识

2.diff比较和patch打补丁

diff命令是用来比较两个文件或目录的不同

vimwestos

写入:helloworld

westos

vimwestos1

写入:helloworld

xbw

diffwestoswestos1###比较这两个文件

linux中的shell脚本编程基本知识

diff-uwestoswestos1###-u,以合并的方式来显示文件内容的不同

diff-uwestoswestos1>westos.path###把比较结果重定向到westos.path

ls

catwestos.path###查看此文件

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

PATCH:用于文件不同文件打布丁

yuminstallpatch-y

patchwestoswestos.path####不会保留原文件

ls

catwestos

catwestos1

linux中的shell脚本编程基本知识

patch-bwestoswestos.path###-b,加上后会保留原文件内容到westos.orig

catwestos

catwestos1

catwestos.orig

linux中的shell脚本编程基本知识

2.比较目录

mkdirlinux

mkdirunix

ls

touchlinux/file

diff-rlinuxunix

linux中的shell脚本编程基本知识

3.cut命令多用与字符截取

cut-d

指定分隔符

cut-f1,7|1-7指定截取的列(1,7表示1列和7列、1-7表示1到7列)

cut-c1,4|1-4指定截取的字符位置

cut-d:-f1passwd

linux中的shell脚本编程基本知识

cut-d:-f1-3passwd

linux中的shell脚本编程基本知识

cut-d:-f1,3passwd

linux中的shell脚本编程基本知识

cut-d:-f3-passwd

linux中的shell脚本编程基本知识

cut-c1,3passwd

linux中的shell脚本编程基本知识

1.写一个脚本,执行后显示本机ip,脚本名为ip_show.sh

vimip_show.sh

ship_show.sh###查看结果

以下两种写法都可以实现

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

2.写一个脚本,ping主机,主机开着就显示isup,没有或关着就显示isdown

vimcheck_ip.sh

shcheck_ip.sh172.25.254.111###验证结果

linux中的shell脚本编程基本知识

4.排序sort

vimxbw

sort-nxbw##纯数字排序

sort-rnxbw##倒序

sort-uxbw##去掉重复数字

sort-o###输出到指定文件中

sort-t###指定分隔符

sort-k###指定要排序的列

sort-t:-k2-rnxbw###将xbw中冒号分割符第2列排倒序

linux中的shell脚本编程基本知识

sort-t:-k1-nxbw###将xbw中冒号分割符第1列排序

linux中的shell脚本编程基本知识

sort-t:-k1-nxbw-osort###将排序结果放入sort文件中

catsort

linux中的shell脚本编程基本知识

sort-nxbw|uniq-c###每行显示一次并统计重复次数

linux中的shell脚本编程基本知识

sort-nxbw|uniq-d###显示重复的行

linux中的shell脚本编程基本知识

sort-nxbw|uniq-u###显示唯一的行

linux中的shell脚本编程基本知识

1.写一个脚本,找出/mnt里最大的文件

vimfind_big.sh

shfind_big.sh

test命令

下图中这两种写法都可以实现

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

test命令

test命令和[]等同

test”$A”==”$B”等同[“$A”==”$B”]

[“$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”]###检测是否不为空

&##表示结果为真

||###表示结果为假

linux中的shell脚本编程基本知识

1.写一个脚本,判断主机是否开启,若没有写主机ip,则提示加上主机ip

vimcheck_ip.sh

shcheck_ip.sh###给提示加上ip

shcheck_ip.sh172.25.254.111###显示up

shcheck_ip.sh172.25.254.333###显示down

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

2.写一个脚本,判断一个数在0到10之间,若没写数字,提示给个数字

vimnum_check.sh

shnum_check.sh##提示给数字

shnum_check.sh8###显示结果正确

shnum_check.sh20###显示结果错误

linux中的shell脚本编程基本知识

[“file1″-ef”file2”]###判断两个文件是否节点一致,是否为硬链接

touchfile

ln/mnt/file/mnt/file1###作链接

ls-lifile*

[“/mnt/file”-ef”/mnt/file1″]&&echoyes||echono

[“/mnt/file”-ef”/etc/passwd”]&&echoyes||echono

linux中的shell脚本编程基本知识

[“file1″-nt”file2”]###判断file1是否比file2新建立

[“file1″-ot”file2”]###判断file1是否比file2迟建立

[“/mnt/file”-ot”/mnt/file2″]&&echoyes||echono

linux中的shell脚本编程基本知识

[-e”file”]###测试文件是否存在

[-f”file”]###测试文件是否为普通文件

[-L”file”]###测试文件是否为软链接

[-S”file”]###测试文件是否为套接字

[-b”file”]###测试文件是否为块设备

[-d”file”]###测试文件是否为目录

[-c”file”]###测试文件是否为字符设备

1.vimfile.sh####为做实验先写一个脚本进行验证

写入:

#!/bin/bash

[“$1″”/mnt/file”]&&echoyes||echono

touchfile

shfile.sh-e

shfile.sh-f

linux中的shell脚本编程基本知识

ln-s/mnt/file

ll

shfile.sh-L

linux中的shell脚本编程基本知识

rm-frfile

yuminstallmariadb-server.x86_64-y

ls

systemctlstartmariadb

rsync-D/var/lib/mysql/mysql.sock/mnt/file

ll

shfile.sh-S

linux中的shell脚本编程基本知识

rm-frfile

rsync-D/dev/vdb/mnt/file

ll

shfile.sh-b

linux中的shell脚本编程基本知识

rsync-D/dev/pts/1/mnt/file

ll

shfile.sh-c

linux中的shell脚本编程基本知识

rm-frfile

mkdirfile

shfile.sh-d

linux中的shell脚本编程基本知识

1.写一个脚本,查看文件是否存在,存在的话属于什么文件类型

vimfile_check.sh

shfile_check.sh文件名####验证

linux中的shell脚本编程基本知识

验证普通文件和块设备

linux中的shell脚本编程基本知识

验证套接字和目录

linux中的shell脚本编程基本知识

验证软链接

linux中的shell脚本编程基本知识

tr大小写转换

vimhello.sh

写入:

#!/bin/bash

[“$1″=”hello”]&&{

echoyes

}||{

echono

}

shtest.shhello####小写可以识别

shtest.shHELLO###大写就不会识别,会报错

linux中的shell脚本编程基本知识

linux中的shell脚本编程基本知识

tr’a-z”A-Z'

你可能感兴趣的:(linux脚本编写基础知识)