shell基础
shell基础
xiaoyuerp
这个作者很懒,什么都没留下…
展开
-
shell-027 shell常见错误集锦
001.[root@pyzc-mycat test]# ./expect130.expectwrong # args: should be "set varName ?newValue?" while executing"set host "192.168.106.130" #在expect里定义变量是需要加set 这里定义host为第二台机器" (file "./expect...原创 2018-11-23 21:43:46 · 4430 阅读 · 1 评论 -
shell-026 分发系统
1.分发系统介绍场景:随着业务越来越大,网站或者APP服务端所使用的编程语言为PHP,需要配置lamp或者lnmp环境,还需要把代码上传到服务器上去。但是平时业务功能不断增加,需要改代码,如果有几十台上百台机器,就需要一个分发系统,将每次更新的代码发布到新的机器上去。核心shell脚本:expect,可以实现传输文件,也可以远程执行命令思路:首先要准备一台模板机器,机器上的代码是最新代码(...原创 2018-11-23 09:52:36 · 154 阅读 · 0 评论 -
shell-025 告警系统
1.告警系统需求分析1. 需求:使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。2. 思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。3. 主程序:作为整个脚本的入口,是整个系统的命脉。4. 配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。5. 子程序:这个才是真正的监控脚本,用来监控各个指标。6. 邮件引擎:...原创 2018-11-23 09:52:31 · 231 阅读 · 0 评论 -
shell-014 Shell脚本中的变量
1. 当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替2. 使用条件语句时,常使用变量 if [ $a -gt 1 ]; then ... ; fi3. 引用某个命令的结果时,用变量替代 n=`wc -l 1.txt` #反单引号,包含命令?4. 写和用户交互的脚本时,变量也是必不可少的 read -p "Input a number: " n; echo...原创 2018-11-22 10:07:29 · 143 阅读 · 0 评论 -
shell-013 date命令用法
查看当前时间 :[root@hao-01 ~]# date年:[root@hao-01 ~]#date +%Y 或 [root@hao-01 ~]#date +%y月:[root@hao-01 ~]#date +%m分钟:[root@hao-01 ~]#date +%M日期:[root@hao-01 ~]# date +%d月日年:[root@hao-01 ~]# dat...原创 2018-11-22 10:07:11 · 129 阅读 · 0 评论 -
shell-012 脚本结构和执行
1. 开头(首行)需要加 : #!/bin/bash2. 以#开头的行作为解释说明 :3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本4. 执行.sh脚本方法有两种 :1) 先给.sh脚本添加x权限:[root@hao-01 ~]# chmod +x 1.sh.sh脚本的绝对路径回车:[root@hao-01 ~]# /root/1.sh2) bash(bash=s...原创 2018-11-22 10:06:55 · 288 阅读 · 0 评论 -
shell-011 shell特殊符号-总结
!$ 表示上条命中中最后一个变量 ; 分号,一行中运行两个或两个以上的命令需在命令之间加 ”;” ~ 用户的家目录,如果是root则是 /root ,普通用户则是 /home/username & 命令放到后台执行,则需要加上这个符号,用于命令运行时间非常长的情况 >, >>, 2>, 2>> > 以及&g...原创 2018-11-22 10:06:35 · 267 阅读 · 0 评论 -
shell-010 tee tr split命令
命令 : tee 后跟文件名,类似与重定向 “>”, 但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。[root@localhost ~]# echo "aaaaaaaaaaaaaaaaaaaaaaaaaaa" |tee testb.txt #tee 常用语管道符 “|” 后。aaaaaaaaaaaaaaaaaaaaaaaaaaa[root@l...原创 2018-11-22 10:06:02 · 161 阅读 · 0 评论 -
shell-009 sort wc uniq命令
[root@panyu001 test]# cat test.txti31fcs cc c dsssort : -n(数字排序) -r(反序) -t(分隔符)[root@panyu001 test]# sort test.txt13 cc c dsscsfi[root@panyu001 test]# sort -n test.txt cc c dsscs...原创 2018-11-22 10:05:54 · 127 阅读 · 0 评论 -
shell-008 特殊符cut命令
1. 特殊符号:* n个字符? 一个字符# 注释字符\ 脱意符号,与' '类似| 管道符2. cut命令cut命令: -d(分隔符) -f(指定段号) -c(指定第几个字符)[root@panyu001 test]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2,3,4 #指定以冒号为...原创 2018-11-21 21:54:09 · 190 阅读 · 0 评论 -
shell-007 系统环境变量和个人环境变量
/etc/profile #用户环境变量(全局),交互,登录才执行 系统层次 交互式login shell 登录Linux系统或使用su -命令时,Non-login shell 不会调用这个脚本,包含变量PATH:命令搜索路径;USER: 用户登录名;LOGNAME:值为$USER;HOSTNAME:主机名;MAIL:用户邮箱(ASCII码);HISTSIZE:历史记录的行数;INPUTRC:...原创 2018-11-21 21:33:49 · 238 阅读 · 0 评论 -
shell-006 shell变量
变量就是使用一个比较简单的字符串来代替某些具有特殊意义的设定以及数据。环境变量PATH,它是shell预设的一个变量,通常shell预设的变量都是大写的。PATH、HOME、PWD、LOGNAME、HOSTNAME[root@localhost ~]# env #系统环境变量,列出系统预设的全部系统变量[root@localhost ~]# set #系统变量和自定义变量[root@...原创 2018-11-21 16:03:15 · 190 阅读 · 0 评论 -
shell-005 管道符 | 和作业控制
管道符[root@localhost ~]# cat /etc/passwd |wc -l #作用是将前面一个命令的输出作为后面一个命令的输入27[root@localhost ~]# cat /etc/passwd |grep "root"root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nol...原创 2018-11-21 15:55:02 · 222 阅读 · 1 评论 -
shell-004 输入输出重定向
cat 1.txt > 2.txt #覆盖cat 1.txt >> 2.txt #追加ls aaa.txt 2>err #错误输出信息输入到指定文件覆盖,err为指定文件如a.txtls aaa.txt 2>>err #错误输出信息输入追加到指定文件,err为指定文件如a.txt ?? eof?while ((1==1));do echo nih...原创 2018-11-21 15:27:16 · 175 阅读 · 1 评论 -
shell-003 通配符
在bash下,可以使用:* 来匹配零个或多个字符? 匹配一个字符[] 满足一个范围[0-9a-zA-Z]中的一个{} 或的意思,{a,b,c,1,2,3}逗号隔开,满足一个[^] 否,有且仅有一个,且不是所枚举的字符,如[^a-zA-Z]# 注释符号\ 转义符,将特殊字符或通配符还原成一般字符|...原创 2018-11-21 14:41:15 · 197 阅读 · 0 评论 -
shell-002 命令补全和别名
rpm -qa bash-completiom #centos7 支持参数补全,需安装包 yum install -y bash-completion,然后重启reboot才生效#tab键,敲一下自动补全,敲两下显示所有以这个开头的命令alias restarnet='systemctl restart network.service' #alias别名给命令重新起个别名 :al...原创 2018-11-21 14:29:44 · 454 阅读 · 0 评论 -
shell-001命令历史
history命令,-r和-w.bash_history最大1000条变量HISTSIZE/etc/profile中修改HISTTIMEEFORMAT="%Y%m%d %H:%M:%S"永久保存chattr +a ~/.bash_history!!!n!word[root@localhost ~]#grep -rn "HISTFILESIZE" #命令或变量找不见时可以搜索...原创 2018-11-21 14:23:53 · 349 阅读 · 0 评论 -
shell-024 shell中的数组
1. 定义数组:[root@hao-01 ~]# a=(1 2 3 4 5) 2. 查看a数组的元素:[root@hao-01 ~]# echo ${a[*]} 3. 查看数组某个元素的值(数组从0开始值为1):[root@hao-01 ~]# echo ${a[1]} 4. 获取数组的元素 个数:[root@hao-01 ~]# echo ${#a[*]} 5. 如果下标不存在则会自动...原创 2018-11-23 09:47:35 · 128 阅读 · 0 评论 -
shell-023 shell中的函数
函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。#!/bin/bash#脚本名字为fun1.shfunction inp(){ echo "The first par is $1" echo "The second par is $2" echo "The third par is $3" echo ...原创 2018-11-23 07:59:53 · 221 阅读 · 0 评论 -
shell-022 三剑客grep sed awk
grep [-cinvABC] 'word' filename-c 行数-i 不区分大小写-n 显示行号-v 取反-r 遍历所有子目录-A 后面跟数字,过滤出符合要求的行以及下面n行-B 同上,过滤出符合要求的行以及上面n行-C 同上,同时过滤出符合要求的行以及上下各n行egrep=’egrep –color=auto’sed [-hnV...原创 2018-11-23 07:57:32 · 174 阅读 · 0 评论 -
shell-021 跳出、结束、退出循环-break、continue、exit
#!/bin/bash#执行过程sh -x break.sh:可以看到当i=3就跳出以下循环,直接运aaaaa结束for i in `seq 1 5`do echo $i if [ $i -eq 3 ] then break fi echo $idoneecho aaaaa#!/bin/bash#执行sh continue.sh ...原创 2018-11-23 07:57:12 · 1320 阅读 · 0 评论 -
shell-020 while循环
语法: while 条件; do 内容… ; done#!/bin/bash#执行sh -x while1.sh:每隔30秒检查系统负载,当负载达到10,发一份邮件 !while true #可以写成 while :do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1` if [ $lo...原创 2018-11-23 07:57:00 · 150 阅读 · 0 评论 -
shell-019 for循环
#!/bin/bash# 计算1到100所有数字和sum=0for i in `seq 1 100`do echo "$sum + $i" sum=$[$sum+$i] echo $sumdoneecho $sum#!/bin/bash#文件列表循环(常用)???cd /etc/for a in ls /etc/do if [ -d $a ]...原创 2018-11-23 07:56:48 · 125 阅读 · 0 评论 -
shell-018 case判断
格式:在case程序中,可以在条件中使用 | ,表示或的意思case 变量名 in value1) ---第一个判断 command ;; value2) ...原创 2018-11-22 10:08:48 · 444 阅读 · 0 评论 -
shell-017 if特殊用法
if [ -z "$a" ] 这个表示当变量a的值为空时会怎么样 zeroif [ -n "$a" ] 表示当变量a的值不为空 not zeroif grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样if [ ! -e file ]; then 表示文件不存在时会怎么样 取反if (($a<1)); then …等同于 if [ $a...原创 2018-11-22 10:08:31 · 153 阅读 · 0 评论 -
shell-015 Shell脚本中的逻辑判断
格式1:if 条件 ; then 语句; fi1. 创建if1.sh测试脚本:[root@hao-01 ~]# vi if1.sha=5,如果a大于3,满足这个条件,显示ok , 添加内容:#!/bin/basha=5if [ $a -gt 3 ]then echo okfi2. 执行if1.sh脚本:[root@hao-01 ~]# sh if1.sh格式2:i...原创 2018-11-22 10:07:52 · 391 阅读 · 0 评论 -
shell-016 文件目录属性判断
[ -f file ]判断是否是普通文件,且存在[ -d file ] 判断是否是目录,且存在[ -e file ] 判断文件或目录是否存在 exist[ -r file ] 判断文件是否可读[ -w file ] 判断文件是否可写[ -x file ] 判断文件是否可执行#!/bin/bash#判断/tmp/hao.txt是不是普通文件?是否存在?如果不存在,创建这个文件!...原创 2018-11-22 10:08:10 · 160 阅读 · 0 评论