免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 992 | 回复: 0
打印 上一主题 下一主题

Korn Shell基础知识 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-09 14:52 |只看该作者 |倒序浏览
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]
  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP