设为首页 收藏本站
查看: 542|回复: 0

shell学习一

[复制链接]

尚未签到

发表于 2017-5-9 13:35:17 | 显示全部楼层 |阅读模式
  目录
  1. shell的作用和历史
  2. shell的常用功能 
  3. shell变量种类
  3. shell脚本的运行
  4. 编写简单的shell脚本
  Shell的作用及常见种类
  Shell的作用 -- 命令解释器,“翻译官”
  Bash的常用功能
  Tab键自动补齐
  命令历史
  命令别名
  标准输入输出
  重定向操作
  管道操作
  Bash的命令历史
  命令历史
  保存用户曾经执行过的命令操作
  存放位置:~/.bash_history 文件 
  查看历史命令 
  使用↑、↓按键逐条翻看,允许编辑并重复执行
  执行:history
  清除历史命令
  执行:history -c 
  Bash的命令历史
  调用历史命令
  !n:执行历史记录中的第n条命令
  !str:执行历史记录中以“str”开头的命令
  设置记录历史命令的条数
  修改 HISTSIZE 参数(默认为1000条) 
  Vi /etc/profile    设置:HISTSIZE=200
  Bash的命令别名
  命令别名
  为使用频率较高的复杂命令行设置简短的调用名称
  存放位置:~/.bashrc 
  Bash的标准输入输出
  交互式硬件设备
  标准输入:从该设备接收用户输入的数据
  标准输出:通过该设备向用户输出数据
  标准错误:通过该设备报告执行出错信息
  类型设备文件文件描述编号默认设备
  标准输入/dev/stdin0键盘
  标准输出/dev/stdout1显示器
  标准错误输出/dev/stderr2显示器
  Bash的重定向操作
  改变标准输入、标准输出、标准错误的方向
  类型操作符用途
  重定向标准输入<将命令中接收输入的途径由默认的键盘更改为指定的文件 
  重定向标准输出>将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上 
  >>将命令执行的结果追加输出到指定文件 
  重定向标准错误2>清空指定文件的内容,并将标准错误信息保存到该文件中
  2>>将标准错误信息追加输出到指定的文件中
  重定向标准输出和
  标准错误&>将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上
  Bash的管道操作
  管道操作符号“|” 
  [iyunv@localhost ~]# free –m | head -2
  [iyunv@localhost ~]# free –m | grep “Mem” | awk ‘{print $2,$4}’
  Shell变量的应用
  Shell变量
  为灵活管理Linux系统提供特定参数,有两层意思:
  1.变量名:使用固定的名称,由系统预设或用户定义
  2. 变量值:能够根据用户设置、系统环境变化而变化
  Shell变量的种类
  用户自定义变量:由用户自己定义、修改和使用
  环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改
  预定义变量:Bash预定义的特殊变量,不能直接修改
  位置变量:通过命令行给程序传递执行参数
  变量的赋值与引用
  定义新的变量
  变量名要以英文字母或下划线开头,区分大小写
  格式:变量名=变量值
  查看变量的值
  格式:echo  $变量名
  [iyunv@localhost ~]# DAY=Sunday
  [iyunv@localhost ~]# echo $DAY
  从键盘输入内容为变量赋值
   格式: read  [-p  "信息"]  变量名
  结合不同的引号为变量赋值
  双引号 “ ” :允许通过$符号引用其他变量值
  单引号 ‘ ’ :禁止引用其他变量值,$视为普通字符
  反撇号 ` ` :将命令执行的结果输出给变量
  设置变量的作用范围
  格式:export   变量名...
  export  变量名=变量值  [...变量名n=变量值n]
  清除用户定义的变量
  格式:unset   变量名
  变量赋值、引用和删除
  [iyunv@localhost ~]# echo $FILESVR
  filesvr.lamp.com
  [iyunv@localhost ~]# export FILESVR
  [iyunv@localhost ~]# zsh 
  [iyunv@localhost]~# echo $FILESVR
  filesvr.lamp.com
  [iyunv@localhost]~# exit
  [iyunv@localhost root]# unset  FILESVR
  [iyunv@localhost root]# echo $FILESVR
  数值变量的运算
  计算整数表达式的运算结果
  格式:expr  变量1   运算符  变量2  ...[运算符 变量n]
  expr的常用运算符
  加法运算:+ 
  减法运算: - 
  乘法运算: \*
  除法运算: / 
  求模(取余)运算: % 
  环境变量
  1.环境变量配置文件
  全局配置文件:/etc/profile 
  用户配置文件:~/.bash_profile 
  2.查看环境变量 
  set命令可以查看所有的Shell变量,其中包括环境变量
  环境变量
  常见的环境变量:
   $USER 、$LOGNAME
   $UID 、 $SHELL 、$HOME
   $PWD、 $PATH 
   $PS1、$PS2
  查看环境变量
  [iyunv@localhost ~]# echo $PATH
  /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  [iyunv@localhost ~]# PATH="/opt/bin:$PATH"
  [iyunv@localhost ~]# echo $PATH
  /opt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  位置变量
  表示为 $n,n为1~9之间的数字
  [iyunv@localhost ~]# ./exam01 one two three four 
  $0:当前执行的进程/程序名 exam01
  $1 表示one
  $2 表示 two
  依次类推
  查看当前所执行进程的名称、PID号
  [iyunv@localhost ~]#echo $0 $$
  bash 5887
  [iyunv@localhost ~]#echo $?
  127
  返回0表示上一条命令正常,返回非0表示上一条命令异常
  Shell脚本的概念
  Shell脚本
  1.用途:完成特定的、较复杂的系统管理任务
  2.格式:集中保存多条Linux命令,普通文本文件
  3.执行方式:按照预设的顺序依次解释执行
  编写可执行的Shell脚本
  建立包含执行语句的脚本文件 
  #脚本文件中包括的内容 
   运行环境设置:#!/bin/bash 
   注释信息:以#开始的说明性文字 
   可执行的Linux命令行
  为脚本文件添加可执行权限
  给shell脚本增加执行权限
  [iyunv@localhost ~]# vi repboot.sh
  #!/bin/bash
  # To show usage of /boot directory and mode of kernel file.
  echo "Useage of /boot: "
  du -sh /boot
  echo "The mode of kernel file:"
  ls -lh /boot/vmlinuz-*
  [iyunv@localhost ~]# chmod a+x repboot.sh 
  运行Shell脚本程序
  1.直接执行具有“x”权限的脚本文件
   例如:./repboot.sh 
  2.使用指定的解释器程序执行脚本内容
   例如:bash  repboot.sh、sh  repboot.sh
  3.通过source命令(或 . )读取脚本内容执行
   例如:souce  repboot.sh  或  .   hello.sh 
  Shell脚本应用示例
  示例一
  [iyunv@localhost ~]# vi /opt/ftpclean.sh
  #!/bin/bash
  date  >>  /var/log/pubdir.log
  ls  -lhR  /var/ftp/pub  >>  /var/log/pubdir.log
  rm  -rf  /var/ftp/pub/*
  示例二
  [iyunv@localhost ~]# vi /opt/dbbak.sh 
  #!/bin/bash
  DAY=`date +%Y%m%d`
  SIZE=`du -sh /var/lib/mysql`
  echo "Date: $DAY" >> /tmp/dbinfo.txt
  echo "Data Size: $SIZE" >> /tmp/dbinfo.txt
  cd /opt/dbbak
  tar zcvf mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt
  rm -f /tmp/dbinfo.txt 
  小结:
  1.shell的作用
  2.常用的shell类型
  3.熟练shell的常用功能
  4.shell变量的种类
  5.shell脚本的运行条件
  练习:
  1.对shell常用功能的操作
  2.练习shell的各种变量的定义、查看和使用
  3.写一个简单的多条命令的shell脚本
  4.如何去运行以上的那个shell脚本
  5.开机如何自动执行这个shell脚本
  练习一参考:
  查询命令相关
  1 查询data.f文件中字符串”abc”出现的行号以及内容
  grep –n ‘abc’ data.f 
  2 查询data.f文件中字符串”abc”出现的行的内容
  grep ‘abc’ data.f
  3 查询data.f文件中字符串”abc”出现的行数
  grep –n ‘abc’ data.f | cut –f 1 –d  ‘:’
  4 查询data.f文件中不包含字符串”abc”出现的行号以及内容
  grep –vn ‘abc’ data.f
  5 使用正则表达式写出与 grep –i “sept” data.f 作用相同的代码
  grep ‘[sS][eE][pP][tT]‘ data.f
  6 正则表达式 grep ‘48[34]’ data.f 的含义
  匹配’483’ or ‘484’
  7 正则表达式grep ‘^[^48]’ data.f的含义
  匹配不是以4或者8开头的行
  8 正则表达式grep ‘K…D’ data.f的含义
  .代表任意字符,也就是匹配K ____D
  9 正则表达式grep '[0-9][0-5][0-6]' data.f的含义,与grep '^[0-9][0-5][0-6]' data.f的区别?
  第一个:匹配3个连续的数字,第一位是0-9,第二位是0-5,第三位是0-6。
  第二个:匹配的3个数字必须在行首
  10 查询文件中空行的正则表达式
  grep '^\s*$' data
  11 正则表达式 grep "0:0" /etc/passwd | egrep -v '^root'的真正意图
  查找UID和GID都为0的非root用户。
  开机自动执行shell脚本
  source test.sh 将此命令添加到/etc/rc.local即可
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-375045-1-1.html 上篇帖子: 什么是shell?目前shell主要有几种版本 下篇帖子: shell编程入门 .
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表