• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

korn shell基础知识

发布: 2007-6-13 20:58 | 作者: admin | 来源: | 查看: 27次 | 进入软件测试论坛讨论

领测软件测试网

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]

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网