linux shell 脚本学习总结

shell 编程:

shell 开头必须指定bash:#!/bin/bash

shell 的执行方式:

1.  ./1.sh    执行当前目录下的1.sh,1.sh要是可执行文件

2.  bash  /usr/local/1.sh

定义变量   aa=’qqq’        =两侧不能有空格,使用变量 ${aa}

Shell特殊含义变量

$$ 取当前脚本的进程id,就是pid

$0  取当前文件名

$n  n是大于0的数字,n是几就是第几个参数

$#  取参数的个数

$* 取所有参数

$? 取最有命令的退出状态,0为没错误

例如:

./1.sh  a b c

Echo $$

Echo $0

Echo $1 ,$2

Echo $#

Echo [email protected]

Echo $?

Shell 运算符     + - * %   加减乘除

Shell 变量运算    $(()) ,$((4-2)),$(($a-$b))

Shell 关系运算符

-eq等于判断,相等返还true

-ne 不等于判断,不相等返回true

-gt大于判断,如果大于返回true

-lt小于判断,小于返回true

-ge大于等于,返回true

-le  小于等于,返回true

Shell 布尔运算

!取反,[!false] =true

-o 或运算 , [$a –lt 20 –o $b –gt 100]

-a 与预算,[$a –lt 20 –a $b –gt 100]

Shell 字符串运算

==    判断两个字符串是否相等,相等返回true  [$a ==$b]

!=     两个字符串不相等,返回true  [$a != $b]

-z     检测字符串长度是否为0,是返回true  [-z $a]

-n     检测字符串长度是否不为0,不为0 返回true  [-n $a]

Str检测字符串是否为空,不为空返回true ,[$a]

Shell 文件测试运算符

-d  file   检测文件是否是目录文件,是返回true,[-d file]

-f file     检测文件是否普通文件,是返回true

-r  file    检测文件是否可读,是返回true

-w  file   检测文件是否可修改

-x file      检测文件是否可执行

-s file      检测文件是否问空,文件大小大于0,不为空,返回true

-e file      检测文件是否存在,包含目录文件

Shell 单引号和双引号的使用

‘’中不能包含单引号,单引号中的转译字符\和变量$字符会原样输出,无实际意义

“”中不能包含双引号,双引号在的转译字符\和变量$字符是有实际含量的,可转译后和取变量后输出

Shell 常见通赔符

“*”匹配0或多个字符

?匹配任意一个字符,a?b可匹配acb ,不能匹配ab

A[xyz]b  可匹配 ab之间有x,y,z任何一个的字符串,有且只能有一个,0和多个都不行

A[!xyz]b  匹配 ab之间只能有一个,且非x,y,z中的数据,如abb

A[1-9]    匹配1-9的任意一个,如a1,a9

A{abc,123}  匹配列表中的任何一个,如aabc,a123

Shell 特殊字符

=   变量赋值   a=1

$   取变量   $a

“>”输出重定向   cat 1.txt 2.txt >3.txt,会覆盖3.txt

“>>”输出追加重定向  cat 1.txt 2.txt >> 3.txt ,追加到3.txt后

“<”输入重定向

&后台运行命令

;命令分割符,允许一行写多条命令

&&若前一条命令执行成功,继续执行下一条命令

||   前一条命令执行不成功,执行下一条命令

!4  执行history中的第4条命令

Shell数组操作

Array=(a1 a2 a3)     数组元素用空格分割,shell只支持1维数组

A[0]=1 ;A[1]=2         通过赋值的方式定义数组

数组的取值方式

${数组名[index]}         如 ${a[0]}

${a[*]},${a[@]}           获取数组的所有元素

Len=${#a[*]}             获取数组的长度

Shell 的if 判断

格式:

If [条件成立]

Then

语句

Else

不成立执行语句

Fi

例:

#!/bin/bash

File=”/usr/local/1.sh”

If [-x $file]

Then

Echo $file

Else

Touch $file

Chmod +x $file

Fi

Shell 的 case esac判断

格式:

Case 值 in

值1)

命令

;;;;同break,跳出语句

值2)

命令

;;

*)

命令

;;

Esac

例:

#/bin/bash

a=$1

Case $a in

r)

bash  /usr/local/1.sh

;;

c)

touch /usr/local/2.sh

;;

d)

rm–rf /usr/local/2.sh

;;

*)

Bash /usr/local/1.sh

;;

Esac

Shell for 循环

格式:

For 变量 in 列表

Do

命令

命令

Done

例:用for和if,遍历/root目录下的所有文件,打印出来可执行的文件

#!/bin/bash

Path=’/root’

For file in $path/*

Do

If [-x $file –a –f $file]    #file是可执行文件and file是普通文件

Then

Echo $file

Fi

done

shell while循环

格式:

while 条件

do

命令

done

shell中的函数

function 函数名()

{

命令

Return x

}

例:

#!/bin/bash

functionshowsh()

{

for file in $1/*.sh

do

echo $file

done

}

showsh $1

配置定时任务:

vi  /etc/crontab     定时任务配置

crontab 文件配置  M H D m d cmd    M 分钟(0-59) H 小时(0-23) D 天(1-31)

m 月(1-12),d 一星期的天数(0-6,0位星期天)

*/5  * * * * sh /usr/locat/1.sh  没隔5分钟执行一次

30  21 * * * /usr/local/apache/bin/apachectl restart  每晚21:30重启apache

软件安装:

rpm -ivh jdk.rmp    安装jdk ,-i 安装,-v 显示安装信息,-h 显示安装进度

rpm -e  jdk.rpm    卸载jdk

rpm -qa 查询已安装的软件包

yum  install httpd  安装apache

yum list|grep httpd  从yum列表查询需要的包

yum update httpd   升级apache

yum list installed |grep httpd  查询是否安装了apache

yum remove mysql  卸载yum安装的mysql

源码安装:

yum install gcc*    gcc  c++的编译器

1.生成makefile 编译文件

./configure 一般安装包下都有一个configure 文件,用来生成makefile 编译文件

./configure --prefix= /usr/local/apache  --with= /aa/cc    --prefix 指定安装目录,--with 指定倚赖文件目录

2.make  编译 makefile文件

make 也需要安装,yum install make,makec,makeg

3.make install

make install  把编译好的文件复制到--prefix 指定的目录,如果未指定就是当前目录

linux相关目录文件存放内容:

bin  存放普通程序,所有用户都可以用

boot 存放内核及启动所需要的文件

dev 存放设备相关文件

etc 存放系统配置文件

home  存放用户文件的主目录

lib  存放启动时的库文件

mnt 存放临时的映射文件,可以用来挂载usb

proc 存放当前系统状态,进程

root 超级用户主目录

sbin  存放需要的系统管理程序

tmp  存放启动产生的临时文件

var  存放系统产生的经常变化的文件

系统cpu及内存的信息文件:

/proc/cpuinfo    cpu信息

/proc/dma     dma通道

/proc/filesystems  文件系统信息

/proc/interrupts  主机中段信息

/proc/ioports   i/o 端口信息

/proc/meminfo  查看内存信息

/etc/passwd   用户详细信息

时间: 2024-08-10 01:53:45

linux shell 脚本学习总结的相关文章

linux shell脚本学习笔记一

一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]-r filename 如果 filename可读,则为真 [ -r

linux shell脚本学习(三)

1.在grep中, ^标记着单词的开始, $ 标记着单词的结束. 查看一个单词是否在linux自带的词典中,脚本如下: #bin/sh #文件名:checkword.sh word=$1 grep "^$1$"  /usr/share/dict/american-english -q if [ $? -eq 0 ]; then echo $word is a dictionary word; else echo $word is not a dictionary word; fi 2.

linux shell脚本学习xargs命令使用详解

作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据.xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代. xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传

Linux shell脚本学习和实战之一

1.在/test目录下使用for循环创建10个文件如:test-1,test-2,...test-10mkdirsh.sh#!/bin/bashfor i in `seq 10`do [ ! -d /test ] && mkdir -p /testtouch /test/test-$idonechmod +x mkdirsh.sh 2.在/test目录下快速创建10个文件的方法如:test-1,test-2,...test-10[[email protected] test]# touch

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

Linux Shell脚本编程学习笔记和实战

http://www.1987.name/141.html shell基础 终端打印.算术运算.常用变量 Linux下搜索指定目录下特定字符串并高亮显示匹配关键词 从键盘或文件中获取标准输入 [read命令] 文件的描述符和重定向 数组.关联数组和别名使用 函数的定义.执行.传参和递归函数 条件测试操作与流程控制语句 获取时间日期格式和延时 [date.sleep命令] 内部字段分隔符IFS和脚本的调试DEBUG 显示.读取或拼接文件内容 [cat命令] 文件查找与打印文件列表 [find命令]

学习Linux shell脚本中连接字符串的方法

这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"=" echo $value2 把要添加的字符串变量添加{},并且需要把$放到外面. 这样输出的结果是:home=,也就是说连接成功. 又如代码如下: [[email protected] sh]# var1=http://www.3lian.com/etc/ [[email protected] s

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp