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

1、shell别名,管道,用户配置文件,变量,read-YHT的运维笔记

[复制链接]

尚未签到

发表于 2018-8-28 07:39:08 | 显示全部楼层 |阅读模式
  一.shell基础
  cat /etc/shells  当前操作系统可以使用的shell
  什么是shell
  实现某种功能的,有执行权限的文本文件
  命令行解释器
  内建命令 (系统内部提供的命令)
  外建命令 (安装对应的软件包才有的命令)
  type cd //查看cd是属于什么类型的命令
  支持快捷键
  支持tab健补全
  历史命令history -c    //清除历史命令
  -w    //马上保存刚执行的命令进.bash_history
  别名
  如何查看当有系统已有别名命令 alias
  如何自定义别名命令 如何删除自定义的别名命令 alias grep='grep --color'  unalias grep
  如何永久定义别名命令 /etc/bashrc   ~/bashrc
  定义的别名命令所有用户都可以使用 /etc/bashrc
  如何给某个用户设置别名命令  ~/.bashrc
  历史命令
  grep 1000 /etc/profile 保存一千条命令
  source /etc/profile 马上生效
  cat ~/.bash_history 存放的历史命令重启系统生效
  管道 |
  命令1 | 命令2 | 命令3
  重定向
  >            ping -c 3 loalhost > /dev/null
  >>     ping -c 3 localhost >> /tmp/err.txt
  <               mail -s "first mail' -u root < /etc/error.txt
      重定向错误输出,覆盖       cd /etc/ 2> /tmp/err.txxt
  2>>   追加
  &> /dev/null 无论对还是错都重定向到空
  &>>追加
  ``   执行命令本身的功能   echo `date + %m`
  ;    顺序执行命令,前面的命令出错不影响后面的命令执行    cd;ls;cd /etc/
  &&   前面的命令执行成功后面的命令才能执行  cd /asf &> /tmp/err.txt && ls
  ||   前面的命令失败才执行后面的命令 cd /asf &> /dev/null /|| echo "no file"
  检查主机在不在线
  ping -c 2 127.0.0.1 &> /dev/null && echo "yes" || echo "no"
  shell变量
  变量 用一串固定字符变化的值
  写脚本时把变化的数据用变量来表示
  shell变量类型
  1、自定义变量: 程序根据写脚本的需要定义的变量,定义变量时,要遵循变量的使用规则
  定义变量:
  变量名=变量值
  变量名的命名规则:
  1.可以用字母数字下划线,但不能以数字开头和纯数字
  2.同一个变量赋两个值,最后一个值生效
  3.给变量赋值时,两边不能有空格
  4.区分大小写
  set 显示当前系统内已经定义的所有变量
  set | grep name
  env 只显示系统已有的环境变量
  定义变量  (默认的变量的类型都是字符类型)
  变量名=变量值
  name=wsyht
  age=24
  使用变量 $变量名 $name
  输出变量的值 echo $变量名 echo $name $age
  撤消变量 unset 变量名 unset name
  2、系统环境变量:在系统启动时,加载系统配置文件定义的变量,
  变量名和变量值是系统设置,变量名通常用大写字母定义,变存量的值是规定的,通常
  情况下不建议修改系统环境变量的值
  3、预定义变量: 当前脚本使用的shell里预先定义好的变量,变量名是固定的,变量的值不修改
  预定义变量:预先定义好的变量,变量名和值都是固定的。
  $? 上一条命令执行结果的返回状态 0 执行成功
  非0 执行失败
  $0 当前执行脚本的脚本名和路径
  $! 当前终端后台最后一个运行的进程
  $$ 当前终端运行进程的pid号  //敲ps可查看进程pid号
  $# 脚本位置参数的个数
  $* 脚本所有位置参数的值
  4、位置变量:在执行脚本或调用函数时给自已传值
  $1... ...$n
  ${10}... ...${N}
  dirname $0   #获取脚本路径
  basename $0  #获取脚本名
  位置变量:
  $1~ $9  ${数字}
  $1  脚本的第一个位置变量
  $2  脚本的第二个位置变量
  $3  脚本的第三个位置变量
  当脚本的位置变量个数大于9时 要这样表示位置变量
  ${10}  脚本的第10个位置变量
  ${11}  脚本的第11个位置变量
  #!/bin/bash
  echo $#
  echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
  变量的生命周期
  在脚本里定义的变量,只在脚本执行过程中有效
  变量的作用范围:默认情况下只在当前shell里可以使用,
  要想定义的变量在所有的shell里被使用,要把变量定义为全局变量,
  格式
  1.
  export 变量名=值
  2.
  变量名=值
  export 变量名
  变量被定义为全局变量后,这个变量可以在当前shell和当前shell的
  子shell使用
  字符终端下,用户每打开一个新终端时加载的文件
  系统级配置文件(对登陆系统的所有用户都有效)
  1./etc/profile
  2./etc/bashrc
  /etc/profile.d/
  用户级配置文件(只针对对应的用户有效)
  3.~/.bashrc
  4.~/.bash_profile
  图形运行级别下,用户每打开一个新终端时加载的文件
  1、/etc/bashrc
  2、~/.bashrc
  source /etc/bashrc //马上生效
  编写shell脚本
  vim test.sh
  #!/bin/bash    //指定脚本的执行环境,默认是/bin/bash,可以省略,一般不省略
  #注释信息不会在执行脚本时显示出来,是程序员给自已看的
  脚本的功能体
  编写脚本的思路:
  1、明确脚本要实现的功能
  2、哪些数据是变化的,把变化的数据用变量来表示
  3、使用哪种流程控制
  4、使用哪些系统命令
  运行脚本
  1.sh xxx.sh 或 bash xxx.sh
  2.加x权限 ./xxx.sh  或 路径/xxx.sh
  3.source xxx.sh  或  . xxx.sh
  '' 禁止引用其他变量值,$视为普通字符       //不可以引用$变量,当做普通字符看待
  "" 允许通过$符号引用其他变量值   //可以引用$变量
  `` 将命令执行的结果输出给变量   //保持命令的功效,输出给变量
  命令 | awk '{print }'
  head -1 /etc/passwd | awk -F":" '{print $1}'
  free -m | grep Mem | awk '{print $3}'
  read 接收用户从健盘输入的数据
  read 选项 变量名
  -p “输出的提示信息”
  -t n 等待用户输入的超时时间
  接收用户从健盘输入的数据可用read 或 $#(位置参数)
  例:用位置参数接收数据
  #!/bin/bash
  #read -p "请输入要检测的ip地址:"  ipaddr
  [  $# -eq 0 ] && exit
  # [ -z $ipaddr ] && exit
  echo $1
  ping -c 3 $1 &> /dev/null && echo $1 is online" || echo "$1 not online"
  例2:用read接收数据
  #!/bin/bash

  read>  read -p "请输入你的名字" -t 30 name
  read -p "请输入你的年龄" -t 30 age
  echo $class $name $age


运维网声明 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-557468-1-1.html 上篇帖子: shell 复制外部命令和其共享库的脚本 下篇帖子: 2、shell条件测试,运算符,选择结构,for循环结构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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