首页 | 资讯动态 | 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

效果超炫的提示符:

#效果超炫的提示符

function precmd {

local TERMWIDTH
(( TERMWIDTH = ${COLUMNS} - 1 ))

###
# Truncate the path if it's too long.

PR_FILLBAR=""
PR_PWDLEN=""

local promptsize=${#${(%):---(%n@%m:%l)---()--}}
local pwdsize=${#${(%):-%~}}

if [[ "$promptsize $pwdsize" -gt $TERMWIDTH ]]; then
((PR_PWDLEN=$TERMWIDTH - $promptsize))
else
PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize $pwdsize)))..${PR_HBAR}.)}"
fi

###
# Get APM info.

#if which ibam > /dev/null; then
#PR_APM_RESULT=`ibam --percentbattery`
#elif which apm > /dev/null; then
#PR_APM_RESULT=`apm`
#fi
}

setopt extended_glob
preexec () {
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek$CMD\e\\"
fi
}

setprompt () {
###
# Need this so the prompt will work.

setopt prompt_subst

###
# See if we can use colors.

autoload colors zsh/terminfo
if [[ "$terminfo[colors]" -ge 8 ]]; then
colors
fi
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
(( count = $count 1 ))
done
PR_NO_COLOUR="%{$terminfo[sgr0]%}"

###
# See if we can use extended characters to look nicer.

typeset -A altchar
set -A altchar ${(s..)terminfo[acsc]}
PR_SET_CHARSET="%{$terminfo[enacs]%}"
PR_SHIFT_IN="%{$terminfo[smacs]%}"
PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
PR_HBAR=${altchar[q]:--}
#PR_HBAR=" "
PR_ULCORNER=${altchar[l]:--}
PR_LLCORNER=${altchar[m]:--}
PR_LRCORNER=${altchar[j]:--}
PR_URCORNER=${altchar[k]:--}

###
# Decide if we need to set titlebar text.

case $TERM in
xterm*)
PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
;;
screen)
PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
;;
*)
PR_TITLEBAR=''
;;
esac

###
# Decide whether to set a screen title
if [[ "$TERM" == "screen" ]]; then
PR_STITLE=$'%{\ekzsh\e\\%}'
else
PR_STITLE=''
fi

###
# APM detection

#if which ibam > /dev/null; then
#PR_APM='$PR_RED${${PR_APM_RESULT[(f)1]}[(w)-2]}%%(${${PR_APM_RESULT[(f)3]}[(w)-1]})$PR_LIGHT_BLUE:'
#elif which apm > /dev/null; then
#PR_APM='$PR_RED${PR_APM_RESULT[(w)5,(w)6]/\% /%%}$PR_LIGHT_BLUE:'
#else
PR_APM=''
#fi

###
# Finally, the prompt.

PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}\
$PR_CYAN$PR_SHIFT_IN$PR_ULCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
$PR_GREEN%(!.%SROOT%s.%n)$PR_GREEN@%m:%l\
$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_HBAR${(e)PR_FILLBAR}$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
$PR_MAGENTA%$PR_PWDLEN<...<%~%<<\
$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_URCORNER$PR_SHIFT_OUT\

$PR_CYAN$PR_SHIFT_IN$PR_LLCORNER$PR_BLUE$PR_HBAR$PR_SHIFT_OUT(\
%(?..$PR_LIGHT_RED%?$PR_BLUE:)\
${(e)PR_APM}$PR_YELLOW%D{%H:%M}\
$PR_LIGHT_BLUE:%(!.$PR_RED.$PR_WHITE)%#$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_NO_COLOUR '

RPROMPT=' $PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_BLUE$PR_HBAR$PR_SHIFT_OUT\
($PR_YELLOW%D{%a,%b%d}$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_CYAN$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR'

PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT(\
$PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\
$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
}

setprompt

Zsh还有一些功能,也是比较实用的:

错误校正

crct1.jpg

-- directory -- 是补全类型提示

/etc/x11 [tab] 后被修正为 /etc/X11。

补全类型提示变成了 -- corrections --

crct2.jpg

不是单纯的修正大小写,而是各种拼写错误。比如说上面的例子,如果输入的是11或者s11,它一样会修正为X11。

有一个前提,就是每次修正,只允许有一处字符错误。两个以上的错误,除非可以匹配其它的选项,否则就不能修正
12 就不能修正为X11 ,除非候选里有 X12、Y12、Z12……

在配置文件里找到这一行,修改容错字数:

zstyle ':completion:*:approximate:*' max-errors 1 numeric

当然可以把容错字数改大一些,不过太大了也没有意义了。随便输点什么,就可以匹配所有的,和没有一样。

强大的重定向功能

同时重定向stdout和stderr到file: command |& >file

同时重定向到多个文件: command >file.1 >file.2

比如装系统的时候,可以用这个命令:

blkid >> /boot/grub/menu.lst >> /etc/fstab

补全类型控制

共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下常用软件及字体的安装方法介
网摘收藏: