zsh与oh-my-zsh Mac下默认的终端使用的是bash,有没有更好的? 是zsh. 安装zsh brew install zsh 配置zshLinuxTOY 是一个致力于提供 Linux 相关资讯的专题站点。如果您发现了好用好玩的 Linux 东东并愿意发扬自由、分享的精神,可以点击顶部导航 Contact 按钮进行投稿。 捐助本站 Subscribe in a reader (original feed) Subscribe by Email Follow us on Twitter Follow us on Identi.ca Linuxtoy on G+ Windows Errors Brocken RAID Data Recovery Popular entries Archlinux 安装指南 Unix/Linux 命令速查表 高效率编辑器 Vim Wget 使用技巧 玩转 MPlayer 平铺式窗口管理器 Awesome 三款 Linux 下的免费桌面级杀毒软件 窗口管理器 Openbox 入门指南 最小化安装 Ubuntu 五个你可能不知道的 Linux 桌面环境 7 个致命的 Linux 命令 很轻很强大:轻量级桌面环境比较 GNOME Shell 介绍 终极 Shell——Zsh 6 款高品质的免费 Linux CAD 应用程序 25+ 个值得跟随的 Linux 相关 Twitter 帐号 Linux 下的三款 Flash 独立播放器 Linux 下的几个游戏模拟器 平铺式窗口管理器 Musca 初体验 History(历史)命令用法 15 例 Fluxbox 配置 bash 使用技巧 10 本 O'Reilly 出版的免费好书 终极Shell——Zsh 2008-08-05 Kardinal Posted in Apps, CliRSSTrackback [撰文/Kardinal] 子曾经曰过,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的人,对Zsh最深刻的印象应该就是它的命令提示符了。它支持右侧对齐的提示符,并且可以配置成这个样子的: 不过我还是喜欢比较简单的样式。 Zsh的自动补全功能十分的强大,如图所示: 它可以自动补全命令、参数、文件名、进程、用户名、变量、权限符等。 Zsh还有一个贴心的功能:路径别名。假设有一个很长的路径,例如/home/lighttpd/html,可以把这个路径命名为 ~WWW。 Zsh可以使用Emacs风格的键绑定,习惯Bash键绑定的朋友无需重新适应。Zsh兼容大多数主流Shell,像Bash、Csh等。 错误校正 -- directory -- 是补全类型提示 /etc/x11 [tab] 后被修正为 /etc/X11 补全类型提示变成了 -- corrections -- 请注意,这个功能不是单纯的修正大小写,而是各种拼写错误 比如说上面的例子,如果输入的是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 补全类型控制 例如: compctl -g '.tar.gz *.gz.tgz' + -g '*(-/)' tar zxvf 过滤候选项 tar zxvf [tab] 候选菜单中只出现扩展名为 .tar.gz .gz .tgz 的文件 不过这个功能比较复杂,容易引起混乱,通常需要脚本配合 代码: compctl -g '.tar.bz2 *.tar.gz *.bz2 *.gz *.jar *.rar *.tar *.tbz2 *.tgz *.zip *.Z' + -g '(-/)' extractextract() { if [[ -z "$1" ]] ; then print -P "usage: \e[1;36mextract\e[1;0m < filename >" print -P " Extract the file specified based on the extension" elif [[ -f $1 ]] ; then case ${(L)1} in .tar.bz2) tar -jxvf $1 ;; .tar.gz) tar -zxvf $1 ;; .bz2) bunzip2 $1 ;; .gz) gunzip $1 ;; .jar) unzip $1 ;; .rar) unrar x $1 ;; .tar) tar -xvf $1 ;; .tbz2) tar -jxvf $1 ;; .tgz) tar -zxvf $1 ;; .zip) unzip $1 ;; .Z) uncompress $1 ;; ) echo "Unable to extract '$1' :: Unknown extension" esac else echo "File ('$1') does not exist!" fi } 考虑到使用的不多,配置又麻烦,我没有配置这个功能 不过我想肯定有人愿意在这上面花点时间 将Zsh设置为默认Shell(不建议更改root用户的默认shell) usermod -s /usr/local/bin/zsh Read More: No related posts Tags: Shell, Zsh 0分享 0收藏 53评论 aqqq 我一直都用zsh,但是用的很肤浅,受教了。 顶回复1329天前 cabrio 我一直想用,但是不知道如何将我现在的用户从bash变成zsh,我只会在新建用户时指定shell 顶回复1329天前 mengnan 貌似很复杂 菜鸟我还是用bash比较顺手 顶回复1329天前 tdsparrow toy用的什么terminal呀,urxvt?一直想要有这种多window的效果. 顶回复1329天前 aqqq @cabrio chsh 可以做到。 顶回复1329天前 walkerxk 右侧对齐的提示符没有什么意思, bash可以补全命令、参数、文件名、用户名 那个路径别名一直在bash下使用,输入~然后按tab。 顶回复1329天前 来自评论啦 anton 1. chsh 可以更換 login shell. 2. /etc/DIR_COLORS 可以不用存在啊~ 參考 dircolors 去 export LS_COLORS 就好了。 3. 一個可以直接 dl 下來的 .zshrc 試用好像比較方便點。 4. zsh "好像" 跟 screen 衝突... Orz 我再調整看看~ 因為我非要 screen 不可。 顶回复1329天前 tdsparrow 原来答案就在下一篇,呵呵。原来看见这种平铺式的布局出现在mrxvt的todo list中,一直很期待,甚至都想contribute一下,好像现在都还没有release。 顶回复1329天前 Jarod 修改/etc/passwd文件就可以修改默认的SHELL了. 顶回复1329天前 华华 bash 的全能补全也是被低估了吧 顶回复1329天前 来自评论啦 cabrio @aqueura @anton 谢谢,回去马上试试 顶回复1329天前 kardinal to:10 雪梨 BASH也可以补全变量啊用户啊什么的,但是要按特殊的组合键,看过王垠那篇火星文的都知道 ZSH会自动根据上下文补全,所有可能出现的东西 bash_completion我也不是没有用过(用的时间挺长的应该说) 如果够好了,我为什么要用ZSH 仔细看看关于Zsh的讨论部分,常见的质疑都有回答:D http://forum.ubuntu.org.cn/viewtopic.php?t=138936&postdays=0&postorder=asc&start=15 顶回复1329天前 kardinal to:walkerxk 右侧对齐的提示符本身并不实用,它只是提供了一种可能。例如能将提示符配置成第一幅图中的下面那种 bash可以补全命令、参数、文件名、用户名,这个看过王垠那篇火星文的都知道,但是要按特殊的组合键 bash的路径别名还真不知道,以前用bash的时候搜遍大江南北也没找到这个功能:D to:anton 配置文件整理后上传 Ubuntu论坛上的roylez兄同时使用zsh和screen,他提供了一个解决方案 http://forum.ubuntu.org.cn/viewtopic.php?t=138936&postdays=0&postorder=asc&start=15 顶回复1329天前 anton 谢谢 kardinal ,啧啧啧,这连结里附的影片 screen 跟 zsh 搭的真漂亮。 真想跟他要 screenrc 跟 .zshrc/.zprofile 来玩。 roylez 真是行~ 顶回复1329天前 HK zsh 能不能像 fish 一样实现彩色的命令行提示? 之前想换掉 bash,一直也听说 zsh 比较强大,可是实在要花些时间研究,所以就用 fish 去了。总的来说还是不错,我自己也没什么很高深的应用需求,fish 基本都没能满足了。但是有几个实在无法忍受的 bug,比如非 X 环境一登录就卡死…… 顶回复1329天前 itroad8 不如来个比较bash,cshell,zshell的文章吧 顶回复1329天前 kardinal to:k 应该是可以的,不过配置可能比较麻烦。google一下说不定能找到答案 其实颜色太多也不好,gentoo的emerge开始觉得挺不错,色彩比较丰富,就是有点晃眼……最近又用archlinux,觉得不用彩色显示更好,可以看自己想看的信息,而不是被强迫看作者认为重要并彩色标示出来的信息 fish运行起来感觉还是比较迟钝的,而zsh的速度感觉比bash还要快,哪怕是比较大的配置文件:D to:itroad8 有比较各种shell的文章,但每个人关注的侧重点不一样。大的方面比较,结论在文章的开头给出了: Zsh交互性是A+级别的,远高于其它Shell。在编程方面,Zsh是A级的吧,也是最高的。只是不知道出于什么原因,Zsh被严重的低估了。 顶回复1329天前 kardinal to:anton 本文介绍的功能,基本上是每个人都需要的功能。无论怎么配置zsh,这些功能都是不可少的 至于其它功能,自己想办法吧:D 顶回复1329天前 Jan zsh的completion比bash的强大太多,bash+bash_completion我以前也用过很长时间 那个花里胡哨的提示符看久了有点儿腻,而且如果是screen+zsh的用户有些信息(比如时间)会和screen的提示栏重复 顶回复1329天前 HK Criteria Nb sh ksh bash zsh csh tcsh Configurability 1 - + ++ +++ + ++ Execution of commands 2 + + + ++ + ++ Completion 3 -- + ++ +++ + ++ Line editing 4 - + ++ ++ - ++ Name substitution 5 + + ++ ++ + ++ History 6 -- + ++ ++ + ++ Redirections and pipes 7 + + + ++ + + Spelling correction 8 -- -- -- + -- + Prompt settings 9 + + + ++ + ++ Job control 10 -- + + + + + Execution control 11 + + + + + + Signal Handling 12 + + + + - - 来源: http://www.hep.phy.cam.ac.uk/lhcb/LHCbSoftTraining/documents/ShellChoice.pdf 顶回复1329天前 You-Can-Fly (do one thing and do it well.) 其实我是被zsh里更好的补全功能而吸引的! 顶回复1329天前 来自豆瓣 AutumnCat bash 用起来已经够舒服了,换来换去反而不习惯。 to 4楼:很多东西都可以做到,但是其实不方便,因为窗变小了。 顶回复1329天前 liufeng 其实我挺怀念高中时玩FreeBSD里面的csh的…… 顶回复1329天前 来自评论啦 gsj987 纠正错别字 引用框下第一行“凭心而论”应作“平心而论” :D 顶回复1329天前 ~toy @gsj987: 谢谢,已纠正。 顶回复1328天前 来自评论啦 fisher bash 也有基于 context 的上下文补齐啊: M-/ 顶回复1328天前 HK 请教一下,在 fish 里面,如果我输入“.pekwm”,再按向上箭头,fish 只会列出包含“.pekwm”的历史记录,比如“vim ~/.pekwm/mouse”,或“cd .pekwm”。在 zsh 里面要怎样配置才能实现这样的功能? 顶回复1328天前 kardinal to:K 这个似乎得用搜索了 和bash差不多 按Ctrl-r输入关键字搜索,再按Ctrl-r向前搜索,backspace向后搜索 顶回复1328天前 daily post 08/0 [...] 终极Shell——Zsh — LinuxTOY [...] 顶回复1328天前 Rainux 确实比 bash 舒服多了,目录补全的时候可以循环枚举,而且循环时可以输入 / 进入当前目录开始循环枚举下一层目录。 另外配置文件中要求 /etc/DIR_COLORS 存在,似乎是不必要的吧,直接 eval dircolors 的输出就可以了。 [ -f /etc/DIR_COLORS ] && eval $(dircolors -b /etc/DIR_COLORS) 改成 eval $(dircolors -b) 顶回复1326天前 f0g 最简单的能满足要求的就是最好的。 顶回复1316天前 najja 弱问作者给的配置文件文件头和尾的一堆^@是什么?我都删掉鸟。。。其他很好用 顶回复1304天前 kardinal @Rainux:很好很强大^_^ 收录到《旅行手册》里了 @najja:这里给出的配置文件不再维护,以《旅行手册》里的为准 ^_^ 顶回复1219天前 kelen 试了一段时间, 发现用dpkg -l apt* 时, *通配符无效, 但在bash里有效. 不晓得应如何设置? 顶回复1190天前 eshizhan 不错,挺好使的 Zsh配置文件试用的文件扩展名有问题,落了一个"." mv zshrctar.gz zshrc.tar.gz 顶回复1127天前 ibex @kelen: 我是加引号解决的 顶回复1022天前 coos 言论不严谨。用没有出处的搜索到的文章和评论来充当论据,完全没有说服力。而且用配置过的zsh和未经配置的bash做比较也有欠公平。虽然我相信zsh是有它强大的地方的,但是经过配置过的任何shell都也足能够完成日常作业。 顶回复767天前 rouken 我在使用fish的时候, 不能设置 set -o vi 顶回复650天前 cyden 还能实现中文输入 顶回复478天前 henrylj2g 真难看 顶回复476天前 更多评论... 评论表情 链接 评论啦 « 用 LPVM 来修改用 Wubi 安装 Ubuntu 时分配的硬盘大小

发表回复