shell学习笔记


        ++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

  ++把文件中的不规则数量(N个)的空格字符换成单个空格字符

  cat file |sed ’s/ \{2,\}/ /g’

  cat file |tr -s ‘‘

  ++如何在编写SHELL显示多个信息,用EOF

  cat <<EOF

  +————————————————————–+

  |? ?? ?? ?=== Welcome to Tunoff services ===? ?? ?? ?? ?? ?? ? |

  +————————————————————–+

  EOF


 » 相关连接:
用Expect实现命令行交互的自动化操 Linux SHELL if 命令参数说明 Shell扩展 引用字符
变量 Bash环境 Bash独有的特性 Shell特性
捕捉信号 变量进阶 shift内建命令 使用select内建命令来制作菜单
 » 本栏目最新帖:

Powered by PHPWind v6.0 Code © 2003-08