Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

Z shell 简介

来源:IBM DW 中国 作者:Matt Chapman  时间:2007-04-22 点击: [收藏] [投稿]
根据 Matt Chapman 的观点,Z shell 可以提高 shell 的交互效率。现在正是将这个秘密公开的时候了!在本文中,不仅介绍了 Z shell,而且还探讨了比其它 shell(尤其是 Bash)优越的地方。

提高交互式 UNIX shell 的体验

大多数 Linux 的开发人员和用户都或早或晚地接触过 UNIX shell。其中比较典型的是 Bash shell,有时也会是 C shell,或 Tcsh,Korn shell(IBM AIX 操作系统的缺省 shell)。但它们都很少能象 Z shell 一样可以提高 shell 交互效率并节省您的输入!对于那些不愿意学习“全新 shell”的人而言,值得注意的是 Zsh 是最接近所有其它 shell 的超集,所以您可以直接开始了。

运行 Z shell

Z shell ("Zsh") 命令通常在系统中的 /bin/zsh 中。如果在安装 Linux 时没有安装它,那么可以在大多数发行版的安装磁盘中找到它。当然也可以从 http://www.zsh.org 下载。顺便提一下,它并不只限于 Linux - 其源代码可以在大多数 UNIX 平台(包括 AIX)上成功地编译,并且还有许多二进制文件。

在本文中涉及的所有 shell 命令和设置选项都可以放在 ~/.zshrc 文件中,这样就可以在每次启动交互式 shell 时使用它们了。您也可以建立一个既可以在交互式 shell 中使用又可以在非交互式 shell 中使用的 ~/.zshenv 文件(例如 shell 脚本)。欲了解 Zsh 启动过程详情,请参阅 Zsh 文档。

命令行编辑

可以缺省地使用光标和退格键来移动和编辑输入行,就象在 Bash shell 中一样。也可以使用命令 "bindkey -e" 来启用 Emacs 绑定。这些键顺序的示例包括 Control-A(跳至行首)和 Control-K(删除到行尾)。当然也可以使用 "bindkey -v" 命令来绑定 Vi。

Zsh 具有多行编辑模式,这特别适合于短小的 shell 脚本,如下例所示:

zsh% for x in 1 2 3
for> do
        
        [we're in the middle of a "for" command so
for> echo $x
        
        Zsh changes the prompt to remind us]
for> done
        
        [after entering this, Zsh knows we're done
1                
        so it can run the command]
2
3
zsh% <Cursor-Up>
                
        [or Control-P with Emacs bindings]
zsh% for x in 1 2 3
                
        [the whole four line script appears, and
do      
        you can then move all through it, editing
echo $x         
        as required]
done
      

在这里将不再详述 shell 脚本,但值得一提的是,对于单行的 "for" 循环,事实上可以忽略 "do" 和 "done" 部分。

所键入的命令可以储存在历史记录中,而且有很多方法可以访问它,例如在上面示例中的 Cursor-Up,它就允许您滚动浏览以前输入的命令(当然用 Cursor-Down 也可以的)。另外一些有用的小窍门是 "!!",它可执行前一命令,和 "^old^new",它将前一个命令中的 "old" 替换成 "new" 之后再执行该命令。这尤其适用于当您输错时,或仅仅想稍微修改一下命令 -- 这要比回想此命令再直接编辑它快得多。

Zsh 甚至还有一个可以校正各种错误的拼写检查器。但如果它把您的命令 "纠正" 成您事实上并不想要的意思的话就会很危险,所以在它检测校正后总是会提示您。另外此功能缺省设置为关闭,您必须用 "setopt CORRECT" 启用它。以下是一个示例:

zsh% setopt CORRECT
        
        [enable option]
zsh% chomd u+x file.sh
                
        [we've mistyped "chmod" here]
zsh: correct 'chomd' to 'chmod' [nyae]? y
        
        [Zsh detects this and asks if we want
				
        to correct it]
zsh%            
        [if yes, then the corrected command
				
        is executed]
			
      

TAB 键的魔力

最能干的 shell 用户是一个“懒惰”的家伙!您应该用尽可能少的输入来完成您想要的东西。通过本文您会发现 Zsh 对此很擅长。

文件名的完成并不是一个新的概念;许多 shell 可提供基本的完成格式,例如 Bash shell 可使用 TAB 键,如下例所示:

bash$ ls
another_file
this_is_a_file_with_a_long_name
bash$ more th<TAB>
        
        [press the TAB key]
bash$ more this_is_a_file_with_a_long_name
        
        [the shell magically fills in
				
        the rest!]
			
      

按下 TAB 键,shell 会为您完成文件名。考虑一下您刚才所节省的所有输入!(或者对于用鼠标从以前列表目录中剪切和粘贴文件名 - 考虑一下将手挪向鼠标然后再放回键盘所节约的时间。)

当然,它一点也不神奇,只是减少一些烦琐的工作 - 您正在输入一个以 "th" 开头的文件名,在当前目录下仅有一个文件是以 "th" 开头的, 因而这有可能就是您要的那一个。所以,让 shell 为您做这件事吧!

以上的示例是用 Bash shell, 当然 Zsh 也可以做到这一点!而且还可以做到更多。让我们来看一下另外一个示例:

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:动态iptables 防火墙   下一篇:使用Bash shell脚本进行功能测试

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号