1、centos学习笔记Shell脚本得执行方式1、echo输出命令rootlocalhost # echo 选项 输出内容选项:-e: 支持反斜线控制得字符转换rootlocalhost # echo -e abbc#删除左侧字符rootlocalhost # echo -e atbtcndtetf#制表符与换行符2、第一个脚本rootlocalhost sh# vi hello、sh#!/bin/Bash#The first program# Author: shenchao (E-mail: )echo -e Mr、 Shen Chao is the most honest man in L
2、ampBrother3、脚本执行 赋予执行权限,直接运行 chmod 755 hello、sh 、/hello、sh 通过Bash调用执行脚本 bash hello、sh_历史命令与命令补全1、历史命令rootlocalhost # history 选项 历史命令保存文件选项:-c: 清空历史命令-w: 把缓存中得历史命令写入历史命令保存文件/、bash_history历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改历史命令得调用 使用上、下箭头调用以前得历史命令 使用“!n”重复执行第n条历史命令 使用“!”重复执行上一条命令 使用“!字串”重复执行最后
3、一条以该字串开头得命令2、命令与文件补全 在Bash中,命令与文件补全就是非常方便与常用得功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全_命令别名1、命令别名rootlocalhost # alias 别名=原命令#设定命令别名rootlocalhost # alias#查询命令别名2、让别名永久生效rootlocalhost # vi /root/、bashrc3、删除别名rootlocalhost # unalias 别名Bash常用快捷键 输入输出重定向注意错误用2表示。举例:rootlocalhost tmp# touch nfilerootlocalhost tmp
4、# date nfilerootlocalhost tmp# cat nfile2018年 01月 07日 星期日 09:16:22 CSTrootlocalhost tmp# date nfilerootlocalhost tmp# cat nfile 2018年 01月 07日 星期日 09:16:36 CST2018年 01月 07日 星期日 09:16:49 CSTrootlocalhost tmp# lsdd 2 nfilerootlocalhost tmp# cat nfile-bash: lsdd: 未找到命令rootlocalhost tmp# dateaaafile_1 2&
5、1rootlocalhost tmp# cat file_1-bash: dateaaa: 未找到命令rootlocalhost tmp# lsdd &file_2rootlocalhost tmp# cat file_21filefile_1file_2-bash: lsdd: 未找到命令3、输入重定向(很少用)rootlocalhost # wc 选项 文件名选项:-c 统计字节数-w 统计单词数-l 统计行数命令文件 把文件作为命令得输入命令 标识符 标识符 把标识符之间内容作为 命令得输入多命令顺序执行与管道符1、多命令顺序执行举例:(1)rootlocalhost tmp# ls;d
6、ate;cd/user;pwd1 file file_1 file_22018年 01月 07日 星期日 09:42:43 CST-bash: cd/user: 没有那个文件或目录/tmp(2)rootlocalhost /# ls /tmp & echo yes1 file file_1 file_2Yesrootlocalhost /# lsaa & echo yes-bash: lsaa: 未找到命令(3)rootlocalhost /# lal /tmp | echo yes -bash: lal: 未找到命令Yes这个特别实用,自动判断一个命令就是否正确。rootlocalhost
7、# 命令 & echo yes | echo no如果命令正确 echo yes才会执行,echo yes执行,那么echo no不执行。如果命令错误 echo yes 不会执行,echo yes不执行,那么echo no 执行。下边这个主要用于硬盘数据拷贝得。rootlocalhost # dd if=输入文件 of=输出文件 bs=字节数 count=个数选项:if=输入文件 指定源文件或源设备of=输出文件 指定目标文件或目标设备bs=字节数 指定一次输入/输出多少字节,即把这些字节瞧做 一个数据块count=个数 指定输入/输出多少个数据块2、管道符命令格式:rootlocalhost
8、 # 命令1 | 命令2#命令1得正确输出作为命令2得操作对象rootlocalhost etc# ll -a | more把ll -a 输出得结果,作为more得操作对象rootlocalhost etc# netstat -an | grep ESTABLISHEDtcp 0 52 192、168、237、131:22 192、168、237、1:49670 ESTABLISHEDrootlocalhost # grep 选项 搜索内容 文件名选项:-i: 忽略大小写-n: 输出行号-v: 反向查找-color=auto 搜索出得关键字用颜色显示通配符与其她特殊符号1、通配符rootloc
9、alhost tmp# lsfilerootlocalhost tmp# touch abcrootlocalhost tmp# touch abcdrootlocalhost tmp# touch 012rootlocalhost tmp# touch 0abcrootlocalhost tmp# ls ?abc0abcrootlocalhost tmp# ls 0-9*012 0abcrootlocalhost tmp# ls *abc0abc abcrootlocalhost tmp# ls 0-9*abc abcd file2、Bash中其她特殊符号反引号与$()rootlocalho
10、st # echo lsrootlocalhost # echo $(date)Bash得变量1、什么就是变量 变量就是计算机内存得单元,其中存放得值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或就是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。2、变量设置规则 变量名称可以由字母、数字与下划线组成,但就是不能以数字开头。如果变量名就是“2name”则就是错误得。 在Bash中,变量得默认类型都就是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。 变量用等号连接值,等
11、号左右两侧不能有空格。 变量得值如果有空格,需要使用单引号或双引号包括。 在变量得值中,可以使用“”转义符。 如果需要增加变量得值,那么可以进行变量值得叠加。不过变量需要用双引号包含“$变量名”或用$变量名包含。 如果就是把命令得结果作为变量值赋予变量,则需要使用反引号或$()包含命令。 环境变量名建议大写,便于区分。3、变量分类 用户自定义变量 环境变量:这种变量中主要保存得就是与系统操作环境相关得数据。 位置参数变量:这种变量主要就是用来向脚本当中传递参数或数据得,变量名不能自定义,变量作用就是固定得。 预定义变量:就是Bash中已经定义好得变量,变量名不能自定义,变量作用也就是固定得。4
12、、本地变量 变量定义 rootlocalhost # name=shen chao 变量叠加 rootlocalhost # aa=123 rootlocalhost # aa=$aa456 rootlocalhost # aa=$aa789 变量调用 rootlocalhost # echo $name 变量查瞧 rootlocalhost # set 变量删除 rootlocalhost # unset name环境变量1、环境变量就是什么 用户自定义变量只在当前得Shell中生效,而环境变量会在当前Shell与这个Shell得所有子Shell当中生效。如果把环境变量写入相应得配置文件,那
13、么这个环境变量就会在所有得Shell中生效2、设置环境变量export 变量名=变量值#申明变量env#查询变量unset 变量名#删除变量3、系统常见环境变量 PATH:系统查找命令得路径 rootlocalhost # echo $PATH /usr/lib/qt-3、3/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/root/bin PATH=$PATH:/root/sh #PATH变量叠加 PS1:定义系统提示符得变量 d:显示日期,格式为“星期 月 日” h:显示简写主机名。如默认主机名“loca
14、lhost” t:显示24小时制时间,格式为“HH:MM:SS” T:显示12小时制时间,格式为“HH:MM:SS” A:显示24小时制时间,格式为“HH:MM” u:显示当前用户名 w:显示当前所在目录得完整名称 W:显示当前所在目录得最后一个目录 #:执行得第几个命令 $:提示符。如果就是root用户会显示提示符为“#”,如果就是普通用户会显示提示符为“$”举例: rootlocalhost # PS1=ut w$ root04:50:08 /usr/local/src#PS1=u h # W$ root04:53 上午 localhost 31 src#PS1=uh W$ 位置参数变量1
15、、位置参数变量位置参数变量 作 用 $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上得参数需要用大括号包含,如$10、 $* 这个变量代表命令行中所有得参数,$*把所有得参数瞧成一个整体 $ 这个变量也代表命令行中所有得参数,不过$把每个参数区分对待 $# 这个变量代表命令行中所有参数得个数 (需要实验这几个例子)例子1:#!/bin/bashnum1=$1num2=$2sum=$( $num1 + $num2)#变量sum得与就是num1加num2echo $sum#打印变量sum得值例子2:#!/bin/bashecho A total of $# paramete
16、rs#使用$#代表所有参数得个数echo The parameters is: $*#使用$*代表所有得参数echo The parameters is: $#使用$也代表所有参数例子3:$*与$得区别#!/bin/bashfor i in $*#$*中得所有参数瞧成就是一个整体,所以这个for循环只会循环一次doecho The parameters is: $idonex=1for y in $#$中得每个参数都瞧成就是独立得,所以“$”中有几个参数,就会循环几次doecho The parameter$x is: $yx=$( $x +1 )done预定义变量1、预定义变量预定义变量 作
17、 用 $? 最后一次执行得命令得返回状态。如果这个变量得值为0,证明上一个命令正确执行;如果这个变量得值为非0(具体就是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。 $ 当前进程得进程号(PID) #!/bin/bash# Author: shenchao (E-mail: )echo The current process is $#输出当前进程得PID。#这个PID就就是variable、sh这个脚本执行时,生成得进程得PIDfind /root -name hello、sh 使用find命令在root目录下查找hello、sh文件#符号&得意思就是把命令放入后台执行,工
18、作管理我们在系统管理章节会详细介绍echo The last one Daemon process is $!2、接收键盘输入 跟python得input命令相似rootlocalhost # read 选项 变量名选项:-p “提示信息”:在等待read输入时,输出提示信息-t 秒数: read命令会一直等待用户输入,使用 此选项可以指定等待时间-n 字符数: read命令只接受指定得字符数,就会 执行-s: 隐藏输入得数据,适用于机密信息得 输入#!/bin/bash# Author: shenchao (E-mail: )read -t 30 -p Please input your n
19、ame: name#提示“请输入姓名”并等待30秒,把用户得输入保存入变量name中echo Name is $name read -s -t 30 -p Please enter your age: age#年龄就是隐私,所以我们用“-s”选项隐藏输入echo -e necho Age is $age read -n 1 -t 30 -p Please select your genderM/F: gender#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)echo -e necho Sex is $gender数值运算与运算符1、declare声明变量类型rootloca
20、lhost # declare +/-选项 变量名选项:-: 给变量设定类型属性+: 取消变量得类型属性-i: 将变量声明为整数型(integer)-x: 将变量声明为环境变量-p: 显示指定变量得被声明得类型2、数值运算方法1:rootlocalhost # aa=11rootlocalhost # bb=22#给变量aa与bb赋值rootlocalhost # declare -i cc=$aa+$bb方法2:expr或let数值运算工具rootlocalhost # aa=11rootlocalhost # bb=22#给变量aa与变量bb赋值rootlocalhost # dd=$(e
21、xpr $aa + $bb)#dd得值就是aa与bb得与。注意“+”号左右两侧必须有空格方法3:“$(运算式)”或“$运算式”rootlocalhost # aa=11rootlocalhost # bb=22rootlocalhost # ff=$( $aa+$bb )rootlocalhost # gg=$ $aa+$bb 3、运算符优先级 运算符 说明 13 -, + 单目负、单目正 12 !, 逻辑非、按位取反或补码 11 * , / , % 乘、除、取模 10 +, - 加、减 9 按位左移、按位右移 8 =, 小于或等于、大于或等于、小于、大于 7 = , != 等于、不等于 6
22、& 按位与 5 按位异或 4 | 按位或 3 & 逻辑与 2 | 逻辑或 1 =,+=,-=,*=,/=,%=,&=, =, |=, = 赋值、运算且赋值 rootlocalhost # aa=$( (11+3)*3/2 )#虽然乘与除得优先级高于加,但就是通过小括号可以调整运算优先级rootlocalhost # bb=$( 14%3 )#14不能被3整除,余数就是2rootlocalhost # cc=$( 1 & 0 )#逻辑与运算只有想与得两边都就是1,与得结果才就是1,否则与得结果就是0变量测试与内容替换(需要仔细瞧。有点绕)变量置换方式 变量y没有设置 变量y为空值 变量y设置值
23、x=$y-新值 x=新值 x为空 x=$y x=$y:-新值 x=新值 x=新值 x=$y x=$y+新值 x为空 x=新值 x=新值 x=$y:+新值 x为空 x为空 x=新值 x=$y=新值 x=新值 y=新值 x为空 y值不变 x=$y y值不变 x=$y:=新值 x=新值 y=新值 x=新值 y=新值 x=$y y值不变 x=$y?新值 新值输出到标准错误输出(就就是屏幕) x为空 x=$y x=$y:?新值 新值输出到标准错误输出 新值输出到标准错误输出 x=$y 例子1:测试x=$y-新值rootlocalhost # unset y#删除变量yrootlocalhost # x=
24、$y-new#进行测试rootlocalhost # echo $xnew#因为变量y不存在,所以x=newrootlocalhost # y=#给变量y赋值为空rootlocalhost # x=$y-new#进行测试rootlocalhost # echo $xrootlocalhost # y=old#给变量y赋值rootlocalhost # x=$y-new#进行测试rootlocalhost # echo $xOld环境变量配置文件简介1、source命令rootlocalhost # source 配置文件或rootlocalhost # 、 配置文件2、环境变量配置文件简介 环
25、境变量配置文件中主要就是定义对系统得操作环境生效得系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。 /etc/profile /etc/pro*、sh /、bash_profile /、bashrc /etc/bashrc/etc/profile得作用: USER变量: LOGNAME变量: MAIL变量: PATH变量: HOSTNAME变量: HISTSIZE变量: umask: 调用/etc/pro*、sh文件/、bash_profile得作用 调用了/、bashrc文件。 在PATH变量后面加入了“:$HOME/bin”这个目录/、bashrc
26、得作用 定义默认别名 调用/etc/bashrc/etc/bashrc得作用 PS1变量 umask PATH变量 调用/etc/pro*、sh文件其她配置文件与登录信息1、注销时生效得环境变量配置文件 /、bash_logout2、其她配置文件 /bash_history3、Shell登录信息 本地终端欢迎信息: /etc/issue转义符 作 用 d 显示当前系统日期 s 显示操作系统名称 l 显示登录得终端号,这个比较常用。 m 显示硬件体系结构,如i386、i686等 n 显示主机名 o 显示域名 r 显示内核版本 t 显示当前系统时间 u 显示当前登录用户得序列号 远程终端欢迎信息:
27、 /etc/issue、net 转义符在/etc/issue、net文件中不能使用 就是否显示此欢迎信息,由ssh得配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue、net”行才能显示(记得重启SSH服务)登陆后欢迎信息:/etc/motd 不管就是本地登录,还就是远程登录,都可以显示此欢迎信息基础正则表达式1、正则表达式与通配符 正则表达式用来在文件中匹配符合条件得字符串,正则就是包含匹配。grep、awk、sed等命令可以支持正则表达式。 通配符用来匹配符合条件得文件名,通配符就是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己得通配符来进行匹配了。2、基础正则表达式元字符 作 用 * 前一个字符匹配0次或任意多次。 、 匹配除了换行符外任意一个字符。 匹配行首。例如:hello会匹配以hello开头得行。 $ 匹配行尾。例如:hello&会匹配以hello结尾得行。 匹配中括号中指定得任意一个字符,只匹配一个字符。 例如:aoeiu 匹配任意一个元音字母,0-9 匹配
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1