首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>软件应用>正文

终极Shell——Zsh

http://www.oklinux.cn  2008-08-05  linuxtoy   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

有句话这样说,zsh: The last shell you’ll ever need! Z是最后一个字母,所以是终极Shell。

我曾经搜索到一个比较各种Shell的文章,Zsh交互性是A 级别的,远高于其它Shell。在编程方面,Zsh是A级的吧,也是最高的。只是不知道出于什么原因,Zsh被严重的低估了。

大多数的Linux用户比较偏爱Bash,因为大多数的发行版默认的就是它。凭心而论,Bash确实比Csh之流的好用多了。不过Bash也有很多地方不尽人意,像自动补全的功能不够强大,定位较长路径不够方便等。

后来我使用Zsh。如果不调整一些必要的配置的话,Zsh甚至还不如Bash好用。这也是很多人尝试过并放弃过的原因。

不熟悉Zsh的人,对Zsh最深刻的印象应该就是它的命令提示符了。它支持右侧对齐的提示符,并且可以配置成这个样子的:

zsh1-thumb.gif

不过我还是喜欢比较简单的样式。

Zsh的自动补全功能十分的强大,如图所示:

zsh2-thumb.gif

它可以自动补全命令、参数、文件名、进程、用户名、变量、权限符等。

Zsh还有一个贴心的功能:路径别名。假设有一个很长的路径,例如/home/lighttpd/html,可以把这个路径命名为 ~WWW。

zsh3-thumb.gif

Zsh可以使用Emacs风格的键绑定,习惯Bash键绑定的朋友无需重新适应。Zsh兼容大多数主流Shell,像Bash、Csh等。

下面讲解一下Zsh配置文件:

#命令提示符 ( ^[ 是一个特殊字符 在vi插入模式下 按Ctrl v ESC 插入该字符)
PROMPT='%{ ^[[36m%}%n%{^[[35m%}@%{^[[34m%}%M %{^[[33m%}%D %T %{^[[32m%}%/
%{^[[31m%}>>%{^[[m%}'

#关于历史纪录的配置
# number of lines kept in history
export HISTSIZE=10000
# # number of lines saved in the history after logout
export SAVEHIST=10000
# # location of history
export HISTFILE=~/.zhistory
# # append command to history file once executed
setopt INC_APPEND_HISTORY

#Disable core dumps
limit coredumpsize 0

#Emacs风格键绑定
bindkey -e
#设置DEL键为向后删除
bindkey "\e[3~" delete-char

#以下字符视为单词的一部分
WORDCHARS='*?_-[]~=&;!#$%^(){}<>'

#自动补全功能
setopt AUTO_LIST
setopt AUTO_MENU
setopt MENU_COMPLETE

autoload -U compinit
compinit

# Completion caching
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path .zcache
#zstyle ':completion:*:cd:*' ignore-parents parent pwd

#Completion Options
zstyle ':completion:*:match:*' original only
zstyle ':completion::prefix-1:*' completer _complete
zstyle ':completion:predict:*' completer _complete
zstyle ':completion:incremental:*' completer _complete _correct
zstyle ':completion:*' completer _complete _prefix _correct _prefix _match _approximate

# Path Expansion
zstyle ':completion:*' expand 'yes'
zstyle ':completion:*' squeeze-shlashes 'yes'
zstyle ':completion::complete:*' '\\'

zstyle ':completion:*:*:*:default' menu yes select
zstyle ':completion:*:*:default' force-list always

# GNU Colors 需要/etc/DIR_COLORS文件 否则自动补全时候选菜单中的选项不能彩色显示
[ -f /etc/DIR_COLORS ] && eval $(dircolors -b /etc/DIR_COLORS)
export ZLSCOLORS="${LS_COLORS}"
zmodload zsh/complist
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'

zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric

compdef pkill=kill
compdef pkill=killall
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:processes' command 'ps -au$USER'

# Group matches and Describe
zstyle ':completion:*:matches' group 'yes'
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:options' auto-description '%d'
zstyle ':completion:*:descriptions' format $'\e[01;33m -- %d --\e[0m'
zstyle ':completion:*:messages' format $'\e[01;35m -- %d --\e[0m'
zstyle ':completion:*:warnings' format $'\e[01;31m -- No Matches Found --\e[0m'

#命令别名
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias ls='ls -F --color=auto'
alias ll='ls -l'
alias grep='grep --color=auto'
alias ee='emacsclient -t'

#路径别名 进入相应的路径时只要 cd ~xxx
hash -d WWW="/home/lighttpd/html"
hash -d ARCH="/mnt/arch"
hash -d PKG="/var/cache/pacman/pkg"
hash -d E="/etc/env.d"
hash -d C="/etc/conf.d"
hash -d I="/etc/rc.d"
hash -d X="/etc/X11"
hash -d BK="/home/r00t/config_bak"

##for Emacs在Emacs终端中使用Zsh的一些设置 不推荐在Emacs中使用它
if [[ "$TERM" == "dumb" ]]; then
setopt No_zle
PROMPT='%n@%M %/
>>'
alias ls='ls -F'
fi

共3页: 上一页 1 [2] [3] 下一页

上一篇:平铺式窗口管理器——Awesome   下一篇:用 LPVM 来修改用 Wubi 安装 Ubuntu 时分配的硬盘大小

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·用 LPVM 来修改用 Wubi 安装 Ubuntu 时分配的硬盘大小
·平铺式窗口管理器——Awesome
·Vi/Vim 命令壁纸图
·下一代输入法框架 ibus
·窗口管理器 Openbox 入门指南 (4)
·Pacman 3.2 的命令选项变化
·窗口管理器 Openbox 入门指南 (3)
·QQ for Linux使用手记
·乌龙:LinuxQQ rpm安装包表明License是GPL
·QQ for Linux 64位deb版(完美解决64位输入法问题)
·text-to-freemind: 将缩进文本转换成freemind
·窗口管理器 Openbox 入门指南 (2)
·窗口管理器 Openbox 入门指南 (1)
·NanoBlogger: Unix命令行打造的Blog引擎
·如何在 Sony Playstation 3 安装 Fedora 9
·Launchy 推出 Linux 版
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·用 LPVM 来修改用 Wubi 安装 Ubuntu 时
·平铺式窗口管理器——Awesome
·Vi/Vim 命令壁纸图
·下一代输入法框架 ibus
·窗口管理器 Openbox 入门指南 (4)
·Pacman 3.2 的命令选项变化
·窗口管理器 Openbox 入门指南 (3)
·QQ for Linux使用手记
·乌龙:LinuxQQ rpm安装包表明License是G
·QQ for Linux 64位deb版(完美解决64位
·text-to-freemind: 将缩进文本转换成fr
·窗口管理器 Openbox 入门指南 (2)
  阅读排行
·基于libmad 的简单MP3流媒体播放器的实
· Oracle 10g for ubuntu 安装指南
· 下BT聊QQ !PS3安装Linux ubuntu 7.10
·Wine的安装配置
·Linux下tar bz gz等压缩包的压缩和解压
· Samba使用大全 Samba服务器应用介绍
·一步一步安装服务器监视软件MRTG
·用Geronimo部署blog 和wiki 模块
·嵌入式Linux 中的应用中的GTK+
·Linux 上的数据可视化工具
·Linux 的版本控制
· linux下查看进程/线程
·充分利用Linux操作系统安全防护工具
·使用自由软件Rexx 的实现来编写脚本
·Fedora 7下常用软件及字体的安装方法介
网摘收藏: