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

shell笔记[转]

[复制链接]
YunVN网友  发表于 2018-8-25 14:01:57 |阅读模式
shell笔记来自 http://blog.zhangjianfeng.com/article/388  August 3rd, 2006
  作者: Jeffrey
  出处:http://blog.zhangjianfeng.com/?p=388
  ++shell处理命令的顺序
  别名—关键词(if,function,while…)—函数—内置命令—可执行文件和脚本
  ++内置命令用法查询
  help command
  ++内置命令启用关闭
  enable -n pwd #关闭pwd命令
  enable pwd    #开启pwd命令
  ++控制通配符(Globbing)
  set noglob 或 set -f #关闭通配符,再试试”ls *”看看,呵.
  #恢复 set +f
  ++统计重复行
  sort file|uniq -c
  ++在文件的每一行的行尾,自动添加一个”;”符号
  sed ’s/$/;/’ sourefile > targetname
  ++if then else循环中,如果需要then部分不执行任何指令,
  if [ -d $tmp ]
  then
  :
  else
  mkdir -p $tmp
  fi
  ++$@等特定shell变量的含义
  $# 传递到脚本的参数个数
  $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
  $$ 脚本运行的当前进程ID号
  $! 后台运行的最后一个进程的进程ID号
  $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
  $- 显示shell使用的当前选项,与set命令功能相同
  $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
  ++PS1支持的变量说明
  默认: [\u@\h \W]\$
  \t  当前时间是HH:MM:SS格式
  \d  日期是”星期 月 日”格式
  \n  换行符
  \s    shell的名字,$0的基名
  \w  当前工作目录
  \W  当前工作目录的基名
  \u   当前用户名
  \h    主机名
  \#    该命令的编号
  \!     该命令的历史编号
  \$    如果UID是0,则为#,否则是$
  #以下为bash 2.x版才支持的
  \@   以12小时am/pm格式表示当前时间
  \H    主机名
  \T   以12小时格式表示当前时间
  ++取出两个目录中不同的文件
  cat dir1.list dir2.list  |sort|uniq -u
  ++ 使用 seq 来产生循环参数
  for a in `seq 80`      #或者 for a in $( seq 80 )  ,与  ” for a in 1 2 3 4 5 … 80 “相同  (少敲了好多字!).
  for a in `seq $BEGIN $END`     #传给 “seq” 两个参数, 从第一个参数开始增长, 一直增长到第二个参数为止.
  for a in `seq $BEGIN $INTERVAL $END`  #传给 “seq” 三个参数从第一个参数开始增长,并以第二个参数作为增量, 一直增长到第三个参数为止.
  ++输入时屏幕不显示(比较输入密码)
  stty -echo      #关闭屏幕的echo
  stty echo       #恢复屏幕原echo
  ++取得一个正在运行进程的PID
  pidof servername
  pgrep servername
  ++在单引号中引入$变量
  ls -l $PATH0$i |awk ‘{print $9}’|sed ’s/^/\\\\192.168.1.1\\Lib\\’$i’\\/’
  ++()和{}区别
  (cmds) 在子shell中执行
  {cmds}在当前shell中执行
  ++echo 相关参数
  -e 允许解释转义序列  -n 删除输出结果的换行符
  转义序列
  \a 报警  \b 退格 \n换行 \r回车 \t制表符
  ++read相关
  read -p “how old r u? ” age           #-p可以输出信息
  read -p “some words? ” -a words  #-a输入一组字节,需要echo ${words
  • }取出.
      read -p “Password: ” -s passwd     #-s 适合输密码,不回显于屏幕
      ++取得昨天的日期
      yesterday=`date -d “1 day ago” +%Y%m%d`
      ++脚本中实现pause效果
      read -n1 -p “Press any key to continue…”
      ++一个判断yes/no的脚本
      #!/bin/bash
      echo “please input ‘yes’ or ‘no’”
      read answer
      if [ “$answer” = “yes” ]; then
      echo “yes”
      else
      echo “no”
      fi


  • 运维网声明 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.iyunv.com/thread-556460-1-1.html 上篇帖子: Linux SHELL特殊变量 下篇帖子: shell基础篇一
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

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

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

    扫描微信二维码查看详情

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


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


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


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



    合作伙伴: 青云cloud

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