Chinaunix首页 | 论坛 | 博客
  • 博客访问: 259395
  • 博文数量: 130
  • 博客积分: 4012
  • 博客等级: 上校
  • 技术积分: 2030
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-10 10:40
文章分类

全部博文(130)

文章存档

2010年(130)

我的朋友

分类: LINUX

2010-01-11 12:39:03

第六章 Shell编程 

  shell 不但是 Unix 的用户交互界面,还是一门程序设计语言,系统注册进入时就会执行一个shell命令文件 .profile ,下面对shell中的常用命令作简单介绍。 
  $n shell 程序命令行中的第n 个参数,n为0-9,当n 为0时表示命令名 
  $# 命令行中参数的个数 
  $$ 本shell 命令的进程号 
  $! 最后一个后台进程的代号 
  $* 所有命令行参数 
  $@ 与$*相似,但其值不同 
  $HOME 注册时进入的目录 
  $PATH 命令的搜索目录 
  $PS1 系统第一个提示符,一般为$ 
  $PS2 系统第二个提示符,一般为>; 
  shift [n] 将命令行参数往左移一位,但$0不变 
  变量名=字符串 将字符串赋予变量名,以后可用$变量名引用该变量 
  export 变量名表 将变量名表所列变量传递给子进程 
  read 变量名表 从标准输入读字符串,传给指定变量 
  echo 变量名表 将变量名表指定的变量显示到标准输出 
  set 显示设置变量 
  env 显示目前所有变量 

  if 条件执行,语法是: 
   if 条件 
    then 指令 
   fi 

  case 分支执行,语法是: 
   case 字符串变量 in 
    值1) 指令... 
    值2) 指令... 
    ... 
    esac 

  while 条件为真时循环,语法是: 
   while 条件 
   do 
    指令... 
   done 

  until 条件为假时循环,语法是: 
   until 条件 
   do 
    指令... 
   done 

  for 变量在表中时循环,语法是: 
   for 变量名 in 字组表 
    do 
     指令... 
    done 

  break 从循环中退出,语法:break n 
  n 表示跳出循环的层数 

  continue 继续循环,语法:continue n 
  n 表示退到包含continue 语句的第n 层继续循环 

  exit 退出shell 
  func shell内部可定义函数,语法: 
  func 函数名() 
  { 
   指令... 
  } 

  expr 将其后的串解释为表达式并计算其值,运算符前后需有空格 
  trap 捕获信号,语法 trap n ,捕获信号 n (信号说明参见kill) 

  test 条件测试,语法 test [选项] 参数 
  选项 -f 文件 若文件存在且可读则真 
  -w 文件 若文件存在且可写则真 
  -x 文件 若文件存在且可执行则真 
  -f 文件 若文件存在且为普通文件则真 
  -d 文件 若文件存在且为目录文件则真 
  -p 文件 若文件存在且为fifo文件则真 
  -s 文件 若文件存在且不空则真 
  -z 串 若串长度为0则真 
  -n 串 若串长度不为0则真 
  串 若串不是空串则真 
  串1=串2 若串1等于串2则真 
  串1!=串2 若串1不等于串2则真 
  n1 -eq n2 若n1与n2数值相当则真 
  n1 -ne n2 若n1与n2数值不相当则真 
  n1 -lt n2 若n1小于n2则真 
  n1 -le n2 若n1小于等于n2则真 
  n1 -gt n2 若n1大于n2则真 
  n1 -ge n2 若n1大于等于n2则真 
  可用 与 -a 或 -o 非 ! 将条件表达式连接起来 
 
[语法]: bc [-c] [-l] [文件...] 
[说明]: bc是一个交互式的高精度计算工具,采用类似于C语言的语法,能够从指定文件中读出命令执行,然后再进入交互式执行,事实上,bc是dc的预编译器,它自动激活dc,将语句经预编译后传递给dc,退出bc的命令是quit,bc中的ibase,obase,scale分别表示输入基数,输出基数,小数点右边的位数。 
  -c bc 只编译,而不将编译结果送dc,将其送到标准输出上 
  -l 预定义一个数学函数库,可在bc中使用以下函数 
  s(x) sine 
  c(x) cosine 
  e(x) exponential 
  l(x) log 
  a(x) arctangent 
  j(n,x) Bessel 
[例子]: 
  bc -l 进入bc 
  scale=10 将小数位定为10位 
  e(1) 计算e的小数点后10位 
  quit 退出bc 

dc也是unix的一个数学计算命令
vi 
[语法]:vi [-wn] [-R] 文件... 
[说明]: vi 是一个基于行编辑器 ex 上的全屏幕编辑器,可以在vi中使用ex,ed的全部命令,vi选项中 -wn 指将编辑窗口大小置为n行,-R为将编辑的文件置为只读模式, vi工作模式分为命令模式和输入模式,一般情况下在命令模式下,可敲入vi命令,进入输入模式下时可以编辑要编辑的文本,命令 a A i I o O c C s S R 可进入输入模式,在输入模式下按 ESC 键可推出输入模式,回到命令模式,在命令模式中敲入:命令,则可进入ex方式,在屏幕底部出现提示符 : ,此时可使用任意ex命令,屏幕底行也用来作/ ? ! 命令的提示行,大多数命令可以在其前面加数字,表示命令执行的重复次数,下面简单介绍一下vi 的命令集,^ 表示(CTRL)键 
  ^B 退回前一页,前面加数字表示重复次数,每次换页时保留上一页的两行 
  ^D 在命令模式下,表示下滚屏幕的一半,在输入模式下,表示回退至左边的自动缩进处 
  ^E 显示屏幕底线之下的一行 
  ^F 前进一页,前面加数字表示重复次数,每次换页时保留上一页的两行 
  ^G 显示当前文件名,当前行号和文件总行数,并用百分号当前行在整个文件中的位置 
  ^H(退格) 在命令模式下,光标左移一格;在输入模式下,删去前面的字符 
  ^I(TAB) 在输入模式下,产生一串空格 
  ^J(LF) 光标下移一行 
  ^L 刷新屏幕,即将屏幕重新显示 
  ^M(回车) 在命令模式下,光标移动至下行开头在输入模式下,开辟一新行 
  ^N 光标下移一行 
  ^P 光标上移一行 
  ^Q 在输入模式下,将其后的非打印字符作为正文插入 
  ^R 刷新屏幕 
  ^U 屏幕上滚一半,前面加数字时表示上滚的行数,此数字对以后的^D ^U 命令有效 
  ^V 在输入模式下,将其后的非打印字符作为正文插入 
  ^W 在输入模式下,使光标回退一个字 
  ^Y 显示屏幕底线之上的一行 
  ^Z 暂停编辑,退回上层Shell 
  ^[(ESC) 退出输入模式,回到命令模式 
  ! 暂时退出编辑,执行Shell命令 
  "(双引号) 用于标志有名缓冲区,编号缓冲区1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定义的正文 
  $ 将光标移动到当前行尾,前加数字则表示前移行数,如2$表示移动到下一行行尾 
  % 将光标移动到配对的小括号()或大括号{}上去 
  ( 退回句子开头 
  ) 前移到句子开头 
  - 退到上一行第一个非空格字符 
  . 重复上一次改变缓冲区内容的命令 
  / 模式 向前搜索模式,将光标移动到模式出现处,模式是一个正规表达式,(参看 grep) 
  : 在屏幕底部提示:,其后可使用ex命令 
  ? 功能同 / ,但方向是向前查找 
  [[ 光标回退至前一节分界处 
  \ 转意符 
  ]] 光标前移至节分界处 
  ^(不是CTRL) 光标移至当前行第一个非空字符上 
  ' 连续两个''表示将光标移至其移动前的位置,'后跟字母表示光标字母标记的行首(参看 m 命令) 

  A 在行尾插入正文,进入输入模式 
  B 光标回退一个字 
  C 替换光标后的内容 
  D 删除光标后的内容 
  E 光标前移到字尾 
  F 字符 在当前行向左查找指定字符 
  G 光标移动到其前面数字指定的行,若未指定则移动到最后一行 
  H 光标移动到屏幕顶行,若前面有数字,则移动到屏幕上该数字指定的行 
  I 在行开头插入正文 
  J 连接两行,若前面有数字则连接数字指定的行 
  L 光标移动到屏幕底行,若前面有数字,则移动到屏幕底线往上数该数字指定的行 
  M 光标移动到屏幕中线 
  N 使用模式查找/或?时,重复找下一个匹配的模式,但方向与上次相反,其功能同 n ,但方向相反 
  O 在当前行上开辟一新行 
  P 将上次被删除的正文插入光标前面,可在其前面加缓冲区编号,编号1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定义的正文 
  Q 从vi 推出进入ex命令状态 
  R 替换字符串 
  S 替换整行 
  T 字符 向左查找字符 
  U 将当前行恢复至第一次修改前的状态 
  W 光标移至下一个字首 
  X 删除光标前的字符 
  Y 将当前行存入无名缓冲区,前面加数字表示存入的行数,也可用有名缓冲区来保存,以后可用命令p或P将其取出 
  ZZ 存盘退出vi 
  a 光标后插入正文 
  b 光标回退至上一个字首 
  cw 替换当前字 
  c) 替换当前句子 
  dw 删除一个字 
  dd 删除一行 
  e 光标移到下一个字末 
  f 字符 在当前行向前查找字符 
  h 光标左移一格 
  i 在光标前插入正文 
  j 光标下移一行 
  k 光标上移一行 
  l 光标右移一格 
  m 字母 用字母标记当前行,以后可用 '字母使光标移动到当前行,(参看'命令) 
  n 重复上次 / 或 ? 命令 
  o 在当前行下开辟一新行 
  p 将用户缓冲区内容放到光标位置(参看P命令) 
  r 替换当前字符 
  s 用一串字符替换当前字符 
  t 字符 光标移动至字符前 
  u 取消上次操作 
  w 光标移至下一字首 
  x 删除当前字符 
  yw 将当前字存入无名缓冲区,前面可加"x,表示存入名字为x的有名缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命令取出 
  yy 将当前行存入无名缓冲区,用法参看yw 
  { 光标移动至前一段开头 
  | 光标移至行首,若前面加数字,则移到数字指定行的行首 
  } 光标移至下一段开头在:提示符下,常用命令如下: 
  :w 当前文件存盘 
  :w! 强制存盘 
  :w 文件 将内容写入指定文件 
  :w! 文件 强制写入指定文件 
  :x,y w 文件 将 x至 y 行写入指定文件中 
  :r 文件 将文件读到光标位置 
  :r ! 命令 将系统命令的输出读到光标位置 
  :q 退出编辑 
  :q! 强制退出 
  :x 与命令ZZ相同 
  :e 文件名 编辑另一文件 
  :e ! 重新编辑文件,放弃任何改变 
  :sh 执行sh,结束后回到编辑 
  :! 命令 执行命令后回到编辑 
  :n 编辑下一文件 
  :n 文件表 重新定义待编辑文件表 
  :set 设置 vi 的选项,例如 set nu 表示每行前显示行号,在选项前加no则表示清除该选项,例如 set nonu 表示每行前不显示行号,下面是一些常用的选项: 
  ai 自动缩进 
  aw 编辑下一文件前自动存盘 
  ic 查找字符串时不区分大小写 
  nu 每行前显示行号 
  sm 输入)及}时显示与之配对的( 或 { 
  slow 插入时延迟屏幕刷新 
  ws 使查找能绕过文件尾从头进行 
  wa 写文件之前不作对文件的检查 
附录 UNIX 常用命令简介 

UNIX 命令大多数可用联机帮助手册 man 获得帮助,下面是常用命令及简单说明,可供用户快速查找使用。 

命令 功能简述 
  acctcom 等于进程记帐文件 
  accton 启动或中止记帐进程 
  adb 汇编语言调试工具 
  admin 创建和管理SCCS文件 
  ar 档案文件和库文件管理程序 
  as 汇编器 
  asa 回车控制 
  at 在指定时间执行程序 
  awk 模式搜索和处理语言 
  banner 制作标题 
  basename 生成文件基本名(无前。后缀) 
  batch 命令的延迟执行 
  bc 计算器 
  bdiff 大型文件比较 
  bfs 大文件搜索 
  break 退出循环 
  cal 打印日历表 
  calendar 打印日历表 
  cancel 取消打印任务 
  case 分支语句 
  cb C语言整理程序 
  cd 改变当前目录 
  cc C语言编译器 
  cdc SCCS实用程序 
  cflow 生成C语言流程图 
  checkeq 数学公式排版命令 
  chgrp 改变文件组 
  chmod 改变文件存取模式 
  chown 改变文件主 
  chroot 改变根目录 
  cksum 显示校验和 
  clri 清除指定的I节点 
  cmp 文件比较 
  col 过滤反向换行 
  comb SCCS实用程序 
  comm 显示两个排序文件的公共行 
  command 执行简单命令 
  continue 进入下一循环 
  cp 复制文件 
  cpio 复制文件档案 
  cpp C语言预处理程序 
  crash 检查系统内存映象 
  create 建立临时文件 
  cref 生成交叉引用表 
  cron 在指定时间执行一组命令 
  crontab 为命令cron 准备crontab文件 
  crypt 加密/解密 
  csplit 将一个文件分解 
  ct 远程终端注册 
  ctags 创建供vi使用的标识符 
  cu 呼叫另一UNIX系统 
  cut 断开一文件中所选择的字段 
  cxref 生成C程序交叉访问表 
  date 打印和设置时间 
  dc 桌面计算器 
  dd 转换和复制文件 
  delta SCCS实用程序 
  deroff 去掉排版格式 
  devnm 标识设备名 
  df 显示可用磁盘空间 
  diff 显示两个文件的差异 
  diff3 显示三个文件的差异 
  dircmp 目录比较 
  dis 反汇编程序 
  du 显示对磁盘的占用情况 
  dump 对指定文件备份 
  echo 回显指定参数 
  ed 行编辑器 
  edit 文本编辑器 
  egrep 在文件中查找指定模式 
  env 设置命令执行环境 
  eqn 数学公式排版命令 
  eval 执行指定命令 
  ex 行编辑器 
  exec 执行指定命令 
  exit 进程中止 
  expand 使表格占满行宽 
  export 将变量传递给子程序 
  expr 计算表达式值 
  factor 因式分解 
  false 返回FALSE 
  fgrep 在文件中查找指定模式 
  file 确定文件类型 
  find 查找符号条件的文件 
  fmt 安排简单的文本格式 
  fold 折行 
  for 循环语句 
  fsck 文件系统检查和修复 
  fsdb 文件系统调试程序 
  fumount 强制性拆协指定资源 
  function 函数说明 
  fuser 列出使用文件的进程 
  fwtmp 产生记帐记录 
  get SCCS实用程序 
  getconf 查找配置参数 
  getopt 获得命令中的选择项 
  getopts 获得命令中的选择项 
  getty 设置终端类型、模式、行律等 
  grep 在文件中查找指定模式 
  head 打印文件的头若干行 
  hexdump 按十六进制转储文件 
  id 显示用户号 
  if 条件语句 
  init UNIX 初启进程 
  install 安装一个文件到文件系统 
  ipcrm 删除IPC队列 
  ipcs 显示IPC状态 
  join 连接两个文件(关系操作〕 
  kill 中止指定进程 
  killall 中止所有活动进程 
  labelit 给文件系统提供标号 
  ld 目标文件链接编辑器 
  lex 词法分析程序 
  line 读一行 
  link 连接文件 
  lint C程序检查程序 
  ln 链接文件 
  local 建立局部变量 
  logger 显示注册信息 
  login 注册 
  logname 获取注册名 
  look 在排序文件中查找某行 
  lorder 查找目标库的次序关系 
  lp 打印文件 
  lpr 打印文件 
  lpstat 显示打印队列状态 
  ls 目录列表 
  mail 发送或接收电子邮件 
  mailx 发送、接收或处理电子邮件 
  make 执行有选择的编译 
  makekey 生成加密码 
  man 显示命令用法 
  mesg 接收或取消对话方式 
  mkdir 建立目录 
  mkfifo 建立FIFO文件 
  mkfs 建立文件系统 
  mknod 建立文件系统的I节点 
  mount 安装文件系统 
  mv 移动文件 
  mvdir 移动目录 
  ncheck 按节点号生成节点名清单 
  neqn 数学公式排版命令 
  newgrp 把用户加入到新组 
  news 打印消息 
  nice 改变命令执行优先级 
  nl 给文件加行号 
  nm 显示目标文件符号表 
  nohup 忽略挂起或退出执行命令 
  nroff 文本文件排版 
  od 按八进制转储文件 
  pack 压缩文件 
  passwd 改变口令 
  paste 文件合并 
  pax 可移植档案管理程序 
  pcat 显示压缩格式文件 
  pg 分屏显示 
  pr 按打印格式显示文件 
  pstat 报告系统信息 
  pwck 口令文件校验程序 
  pwd 显示当前工作目录 
  quot 检查文件系统所有权 
  ratfor 转换成标准FORTRANC程序 
  read 从标准输入读一行 
  readonly 标记变量为只读 
  red 文本编辑器 
  regcmp 正规表达式编辑 
  restor 文件系统恢复程序 
  restore 文件系统恢复程序 
  return 返回语句 
  rev 颠倒文件中每行字符次序 
  rm 删除文件 
  rmdel SCCS使用程序 
  rmdir 删除目录 
  rsh(net) 远程SHELL 
  rsh(sec) 受限SHELL 
  runacct 运行日常记帐程序 
  sact SCCS实用程序 
  sag 打印系统活动图 
  sar 报告系统活动 
  sccsdiff SCCS实用程序 
  sdb 符号调试器 
  sdiff 并列显示两个文件的差别 
  sed 流编辑器 
  sendto 发送邮件 
  set 设置选项或参数 
  setmnt 建立文件系统安装表 
  sh SHELL解释器 
  shift 命令行参数移位 
  shl SHELL层(layer)管理程序 
  shutdown 关机 
  size 显示目标文件长度 
  sleep 挂起进程一段时间 
  sort 文件排序和合并 
  spell 拼写错误检查程序 
  spellin 拼写错误检查 
  spellout 拼写错误检查 
  spline 按平滑曲线输出数据 
  split 分解一个文件 
  strings 在目标文件中寻找可打印字符 
  strip 删除符号表 
  stty 设置终端模式 
  su 改变用户 
  sum 显示文件校验和及块数 
  sync 更新磁盘 
  tabs 设置制表符 
  tbl 表格排版 
  tee 在管道上建立多通路 
  tic 终端数据库编译程序 
  time 打印执行命令所花时间 
  tiemx 报告命令所花时间及活动 
  touch 更新文件时间 
  tput 恢复终端或查询数据库 
  tr 转换字符 
  trap 捕获信号 
  troff 文本文件排版 
  true 返回TRUE 
  tsort 拓扑排序 
  tty 显示终端设备名 
  umask 设置文件掩码 
  umount 拆卸文件系统 
  uname 显示系统名 
  unget SCCS实用程序 
  uniq 删除文件中重复行 
  units 度量单位转换 
  unlink 删除文件 
  unpack 将压缩文件还原 
  until 循环语句 
  update 更新磁盘 
  val SCCS实用程序 
  vc SCCS实用程序 
  vi 全屏幕编辑器 
  volcopy 文件系统的文字拷贝 
  wait 等待所有字进程结束 
  while 循环语句 
  who 显示谁在使用系统 
  whodo 显示哪些用户在做什么 
  write 和另一用户直接对话 
  xargs 建立参数表并执行命令 
  yacc 语法分析程序生成器 

 
阅读(736) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~