会员登陆  支付方式  联系我们  在线客服  网站地图       
首页 关于域浪 互联网数据中心业务、主机托管、主机租用、机架租用、带宽租用、机房介绍、机房对比、CCN网络加速 adsl专线、深圳adsl专线 虚拟主机、域名注册、数据库、企业邮局、动态域名 网络安全、网络临近平台、安全服务、防火去墙租用、安全产品、域浪抗DDOS防火墙、NetScreen防火墙 技术支持  
   当前位置:首页 >> 技术支持 >> SHELL技巧 >> 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技巧
 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]
  • 上一篇文章: Shell基础及编程(一)
  • 下一篇文章: shell编程例子 -- 一个简单的目录菜单
  • 域浪网络ISP经营许可证 深圳地址:深圳市罗湖区宝安北路国际商品交易大厦七楼C30室
    Tel:0755-82266883/82267566 Fax:0755-82261966
    邮编:518000 
                        Copyright © 2006-2008 elang.cn All Rights Reserved 深圳市域浪网络技术有限公司版权所有