发表于 2018-8-25 14:01:57

shell笔记[转]

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]
查看完整版本: shell笔记[转]