- 论坛徽章:
- 0
|
Korn Shell执行命令的顺序[/COLOR]\r\n1.关键字,如if,for,function等\r\n2.别名(Aliases)\r\n3.内部命令,如cd, whence和函数等\r\n4.函数Functions\r\n5.脚本Scripts、在PATH中的可执行程序\r\n※找到命令的根源用下面的命令:\r\n whence -v command\r\n或:\r\n type command\r\n[/COLOR]\r\n\r\nAlias(别名)[/COLOR]\r\nalias aliasname=command\r\n取消一个别名:\r\nunalias aliasname\r\n列出当前所有的别名:\r\nalias\r\n【TIP】\r\n用来显式当前目录下的所有目录的别名:alias ldir=\'ls -l|grep ^d\'\r\n提问:alias|grep ^ls会看到:ls=/usr/bin/ls,请问:系统为什么要定义这个别名?\r\n[/COLOR] \r\n\r\nFunctions(函数)\r\n定义的位置:\r\nFunction可以在命令行、.kshrc(ENV文件,见下篇)或在shell script中定义\r\n定义的方法:\r\nfunction funcname {\r\n shell commands\r\n}\r\n或:\r\nfuncname () {\r\n shell commands\r\n}\r\n列出所有当前的functions\r\nfunctions\r\n取消一个function\r\nunset -f funcname\r\n输出一个function:\r\ntypeset -fx funcname\r\n取消输出一个function:\r\ntypeset +fx funcname\r\n※function是\"typeset -f\"的预定义的别名\r\n\r\nKorn Shell 的选项\r\nKorn Shell有一些选项,如果在.kshrc(ENV文件,见下篇)中设定他们,那么他们就是全局的,并且可以传递给subshell。\r\n列出所有的Korn Shell选项:\r\nset -o\r\n设置一个选项\r\nset -o OptionName\r\n取消一个选项\r\nset +o OptionName\r\nKorn Shell 选项的意义\r\nallexport 自动export随后定义地所有变量(文件名中不含有.).(等于set -a)\r\nerrexit 如果一个命令的返回值不为0,就执行错误陷阱(ERR trap)。但对profile文件例外。(等于set -e) \r\nbgnice 后台进程以较低的优先级运行,这是缺省值\r\nemacs 使用emacs风格的行内编辑器\r\ngmacs 使用gmacs风格的行内编辑器\r\nignoreeof 遇到文件结束符时不退出shell。要想退出shell必须使用exit命令或者敲Ctrl-D 11次。\r\nkeyword 为了保持与Bourne shell的兼容性。(set -k)\r\nmarkdirs 在完成文件名替换后在目录名后面加一个斜线(/)。\r\nmonitor Runs background jobs in a separate process and prints a line upon completion. (set -m)\r\nnoclobber 不能用>重定向符覆盖已经存在的文件。只能用>|来重写已经存在的文件。noexec 读入命令只检查它的语法但不执行。 (set -n)\r\nnoglob 禁止文件名替换。(set -f)\r\nnolog 不在历史文件中保存函数的定义。\r\nnounset 在试图扩展没有定义的变量时显示错误信息。(set -u)\r\nprivileged 禁止执行HOME/.profile file 并且使用/etc/suid _profile 而不是ENV文件。 (set -p)\r\nverbose 显示shell读入的输入.(set -v)\r\ntrackall Designates each command as a tracked alias when first encountered.(set -h)\r\nvi 使用vi风格的行内编辑器\r\nviraw Processes each character as it is typed in vi mode. \r\nxtrace 在运行命令前,先显示命令.(set -x)\r\n※举例:使vi成为inline editor\r\nset -o vi\r\n\r\nDebuging(调试)\r\n调试一个shell script的方法:\r\n#set -o xtrace\r\n然后再运行shell\r\n或者直接执行\r\n#ksh -x shellprog args\r\n或\r\n#sh -v shellprog args\r\nDebug 一个function\r\n#typeset -ft funcname\r\n\r\nPrompts(提示)\r\nPS1 主shell提示符(普通用户缺省是 $,而root缺省是#)\r\nPS2 继续提示符( 缺省 > )\r\n什么是继续提示符?\r\n在命令行上输入\r\nfor i in 11 12 13 14 15 16\r\ndo\r\n lspv hdisk$i\r\ndone\r\n从第二行开始,屏幕最左面就是继续提示符。\r\nPS3 在选择循环中的选择提示符(缺省是 #? )\r\nPS4 调试提示符 (缺省是 + )\r\n【tip】:命令行上提示主机名称和当前目录\r\nexport PS1=\"[`hostname`-\"\'$PWD]\'\r\n注意:一定是\"\"包括``才能取得命令的结果,\'\'包括变量才能随时更改变量的值\r\n效果:\r\n[hostname-/tmp]\r\n\r\n【NEXT】定制你的环境 |
|