会员登陆  支付方式  联系我们  在线客服  网站地图       
首页 关于域浪 互联网数据中心业务、主机托管、主机租用、机架租用、带宽租用、机房介绍、机房对比、CCN网络加速 adsl专线、深圳adsl专线 虚拟主机、域名注册、数据库、企业邮局、动态域名 网络安全、网络临近平台、安全服务、防火去墙租用、安全产品、域浪抗DDOS防火墙、NetScreen防火墙 技术支持  
   当前位置:首页 >> 技术支持 >> SHELL技巧 >> Korn Shell编程
 
精华文章
    AIX shell工具集  
    I/O重定向 详解及例子  
    Shell 编程实例集锦  
    Linux下Shell基础知识...  
    Linux下Shell基础知识...  
    Linux下Shell基础知识...  
    Linux下Shell基础知识...  
    Linux Shell 下的输出...  
    几个shell程序设计小知...  
    几种常见shell简介  
    shell基础十二篇  
    Shell编程基础  
    Bourne Shell及shell编...  
    shell命令(三)  
    shell命令(二)  
    shell命令(一)  
    shell基础:输入和输出...  
    shell命令  
    shell编程入门及脚本测...  
    Linux Shells简介  
    TCSH Shell编程  
    Korn Shell编程  
    Shell基础及编程(二)  
    Shell基础及编程(一)  
    shell基础知识  
    shell编程例子 -- 一个...  
    在LinuxShell程序中进...  
    SHELL病毒简介  
  更多>>  
   SHELL技巧
 Korn Shell编程
Korn Shell执行命令的顺序

  1.关键字,如if,for,function等

  2.别名(Aliases)

  3.内部命令,如cd, whence和函数等

  4.函数Functions

  5.脚本Scripts、在PATH中的可执行程序

  ※找到命令的根源用下面的命令:

  whence -v command

  或:

  type command

  

  Alias(别名)

  alias aliasname=command

  取消一个别名:

  unalias aliasname

  列出当前所有的别名:

  alias

  【TIP】

  用来显式当前目录下的所有目录的别名:alias ldir='ls -l|grep ^d'

  提问:alias|grep ^ls会看到:ls=/usr/bin/ls,请问:系统为什么要定义这个别名?

  

  Functions(函数)

  定义的位置:

  Function可以在命令行、.kshrc(ENV文件,见下篇)或在shell script中定义

  定义的方法:

  function funcname {

  shell commands

  }

  或:

  funcname () {

  shell commands

  }

  列出所有当前的functions

  functions

  取消一个function

  unset -f funcname

  输出一个function:

  typeset -fx funcname

  取消输出一个function:

  typeset +fx funcname

  ※function是"typeset -f"的预定义的别名

  

  Korn Shell 的选项

  Korn Shell有一些选项,如果在.kshrc(ENV文件,见下篇)中设定他们,那么他们就是全局的,并且可以传递给subshell。

  列出所有的Korn Shell选项:

  set -o

  设置一个选项

  set -o OptionName

  取消一个选项

  set +o OptionName

  Korn Shell 选项的意义

  allexport 自动export随后定义地所有变量(文件名中不含有.).(等于set -a)

  errexit 如果一个命令的返回值不为0,就执行错误陷阱(ERR trap)。但对profile文件例外。(等于set -e) 

  bgnice 后台进程以较低的优先级运行,这是缺省值

  emacs 使用emacs风格的行内编辑器

  gmacs 使用gmacs风格的行内编辑器

  ignoreeof 遇到文件结束符时不退出shell。要想退出shell必须使用exit命令或者敲Ctrl-D 11次。

  keyword 为了保持与Bourne shell的兼容性。(set -k)

  markdirs 在完成文件名替换后在目录名后面加一个斜线(/)。

  monitor Runs background jobs in a separate process and prints a line upon completion. (set -m)

  noclobber 不能用>重定向符覆盖已经存在的文件。只能用>|来重写已经存在的文件。noexec 读入命令只检查它的语法但不执行。 (set -n)

  noglob 禁止文件名替换。(set -f)

  nolog 不在历史文件中保存函数的定义。

  nounset 在试图扩展没有定义的变量时显示错误信息。(set -u)

  privileged 禁止执行HOME/.profile file 并且使用/etc/suid _profile 而不是ENV文件。 (set -p)

  verbose 显示shell读入的输入.(set -v)

  trackall Designates each command as a tracked alias when first encountered.(set -h)

  vi 使用vi风格的行内编辑器

  viraw Processes each character as it is typed in vi mode. 

  xtrace 在运行命令前,先显示命令.(set -x)

  ※举例:使vi成为inline editor

  set -o vi

  

  Debuging(调试)

  调试一个shell script的方法:

  #set -o xtrace

  然后再运行shell

  或者直接执行

  #ksh -x shellprog args

  或

  #sh -v shellprog args

  Debug 一个function

  #typeset -ft funcname

  

  Prompts(提示)

  PS1 主shell提示符(普通用户缺省是 $,而root缺省是#)

  PS2 继续提示符( 缺省 > )

  什么是继续提示符?

  在命令行上输入

  for i in 11 12 13 14 15 16

  do

  lspv hdisk$i

  done

  从第二行开始,屏幕最左面就是继续提示符。

  PS3 在选择循环中的选择提示符(缺省是 #? )

  PS4 调试提示符 (缺省是 + )

  【tip】:命令行上提示主机名称和当前目录

  export PS1="[`hostname`-"'$PWD]'

  注意:一定是""包括``才能取得命令的结果,''包括变量才能随时更改变量的值

  效果:

  [hostname-/tmp]
  • 上一篇文章: TCSH Shell编程
  • 下一篇文章: Shell基础及编程(二)
  • 域浪网络ISP经营许可证 深圳地址:深圳市罗湖区宝安北路国际商品交易大厦七楼C30室
    Tel:0755-82266883/82267566 Fax:0755-82261966
    邮编:518000 
                        Copyright © 2006-2008 elang.cn All Rights Reserved 深圳市域浪网络技术有限公司版权所有