使用 Zsh 的九个理由

简介:

像大部分 *nix 用户,我之前用 bash 很多年,期间也有过小的不爽,但一直都忍过来,或者是说没想过这些不爽的地方能解决,比如 cd 到一个深目录时得哐哐猛敲 。这么多年里我也尝试过其他 shell。比如 ksh/tcsh 以及今天要说的 zsh,但最终都没坚持下去,因为心中始终还是认为 bash 是最正统的 shell,不愿意去主动深入学习其他 shell。直到前几天逛 GitHub,发现 排名第 6 的开源项目 oh-my-zsh,下来试用了一把,顿时觉得 bash 各种操作不爽到无法忍受。

放弃 bash 的各种内牛满面的理由

这里有个 youtube 上的视频,短短 4 分钟就已经抛出了几十个让 bash 用户切换到 zsh 中的理由。视频链接

 

理由 0:zsh 兼容 bash

兼容 bash 意味着我不需要太多学习成本就可以切换过来,意味着我以前在 bash 下积累的 shell 语法、基本操作都不会荒废。在我心里 bash 还是最通用和标准的 shell 环境,因此兼容 bash 让我切换到 zsh 时没有太多后顾之忧。

 

理由 1:zsh 的补全模式更方便

zsh 中按两下 tab 键可以触发 zsh 的补全,所有待补全项都可以通过键盘方向键或者  来选择。

nine reasons to use zsh

nine reasons to use zsh

 

理由 2:zsh 支持命令选项补全

zsh 除了支持目录的补全,还支持命令选项的补全,例如 ls - 会直接列出所有 ls 的参数,再也不会出现一个命令打到一半,忘记参数导致重开一个 terminal man 一把。

nine reasons to use zsh

nine reasons to use zsh 2

 

 

理由 3:zsh 支持命令参数补全

以前想 kill 掉一个进程,我的做法是 ps aux | grep "进程名" 然后记下 id,再 kill id。在 zsh 下,只需要 kill 进程名,zsh 就会自动补全进程的 pid。

nine reasons to use zsh

nine reasons to use zsh 3

其余我常用的补全还有:

·ssh  时 zsh 会自动列出你访问过的主机和用户名来补全 ssh 的参数。
·brew install  来补全软件包名,除了 homebrew 以外,同样支持 port/apt-get 等其他包管理器。

 

理由 4:zsh 支持更加聪明的目录补全

以前比如想进入一个比较深的目录,比如 /Users/pw/workspace/project/src/main/webapps/static/js,就得在 bash 下面打半天,不停的 tab 去补全一个正确的路径出来。在 zsh 下,只需要输入每个路径的头字母然后 tab 一下: cd /u/p/w/p/s/m/w/s/j

 

理由 5:zsh 强大的快速目录切换

以前最苦逼的事情莫过于频繁在两个工作目录下切换,总要打一长串 cd 路径。也尝试过 popd 和 pushd 来解决这个问题,但往往是目录已经切换了才想起来没用 pushd。而 zsh 会记住你每一次切换的路径,然后通过 1 来切换到你上一次访问的路径,2 切换到上上次……一直到 9,还可以通过 d 查看目录访问历史。

zsh 还可以配合 autojump 一起使用,autojump 会记录下每一个你访问过的目录,然后通过 j 来快速跳转。

 

理由 6:zsh 支持全局 alias 和后缀名 alias

bash 的 alias 只能做命令的缩写,而 zsh 更进一步,使 alias 可以缩写命令的一部分,例如参数或环境变量设置。

$ alias -s log=less
$ ~/package/tomcat/log/catalina.log # 相当于 less ~/package/tomcat/log/catalina.log
$ alias -g PR=http_proxy=127.0.0.1:8087
$ PR curl https://twitter.com # 相当于 http_proxy=127.0.0.1:8087 curl https://twitter.com
 

理由 7:zsh 有着丰富多彩的命令行提示符

bash 下通过设置 $PS1 已经可以实现很丰富的提示符了,而 zsh 更进一步,可以实现诸如多行提示符、提示符右对齐等功能。oh-my-zsh 配置文件中提供了非常丰富的提示符 theme 供选择,我使用的是 gentoo 主题,比较简洁,还可以显示当前 git 仓库的状态。

 

理由 8:zsh 有更多优雅的语法

例如修改 PATH,bash 下设置 $PATH 要求所有路径都要写在一行里,目录多了以后看起来就很难看。zsh 支持更加符合程序员审美观的设置方式。

path=(
    ~/bin
    $path
    ~/package/smartsprites/bin
)

 

安装 zsh

Linux 用户通过各自发行版的包管理器直接安装即可。

Mac 自带一个 4.x.x 版本的 zsh,可以直接使用,也可以通过 homebrew 安装最近刚刚发布的 5.0.0 版本。推荐使用最新的 5.0 版本,对多字节字符提供了完整的支持,这一点对于国内用户来说很重要。详细的 release note

 

设置为默认 shell

通过命令 chsh 修改默认登录 shell,需要注意的是,如果通过 homebrew 安装了最新版本的 zsh,则需要 sudo 编辑 /etc/shells 加入一行 /usr/local/bin/zsh。然后再通过 chsh 来修改默认 shell,否则会提示 /usr/local/bin/zsh 不是合法的 shell。

 

安装 oh-my-zsh 配置

对于每一个像我这样的 zsh 初级用户来说,oh-my-zsh 就是救人于水火中的大杀器,强烈建议使用此配置上手 zsh。

作者提供了傻瓜安装命令:

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh 

也可以手工安装,具体步骤

 

几个必备的插件

autojump

帮助快速目录跳转的小工具。首先要安装 autojump,然后在 .zshrc 中开启 autojump 插件。它会记录下来每个你进入过的目录,随后通过 j 目录名称的一部分就可快速跳转到该目录。 Youtube 视频介绍

git

Git 命令补全,除了可以补全 git 的子命令、命令开关等常规补全项以外,还可以补全分支名等内容,用 git 必开的插件。

osx

提供一些与 Mac OSX 系统交互的命令,比如:

● man-preview 通过 preview 程序查看一个命令的手册,例如 man-preview git

● quick-look 快速预览文件

● pfd 返回当前 finder 打开的文件夹的路径

● cdf 切换到当前 finder 所在的目录

原文发布时间为:2013-05-12

本文来自云栖社区合作伙伴“Linux中国”


目录
打赏
0
0
0
0
325
分享
相关文章
Ubuntu 源码编译指定版本 make:神秘代码背后的激情冒险,等你来战!
【9月更文挑战第8天】在Ubuntu中,编译指定版本的源码`make`是一项挑战但也极具价值的任务。它允许我们根据特定需求定制软件,提升性能与功能适配。首先需安装必要工具包如GCC等;接着下载所需源码并阅读相关文档以了解编译要求。通过运行`./configure`、`make`及`sudo make install`命令完成编译安装流程。过程中可能遇到依赖项缺失或编译选项设置不当等问题,需根据错误提示逐一解决。对于大型项目,可利用多核编译加快速度。掌握这一技能有助于更好地探索开源世界。
75 3
ZSH、oh-my-zsh安装教程及插件和主题推荐
ZSH、oh-my-zsh安装教程及插件和主题推荐
1318 0
三招教你轻松扩展 git bash 命令(上)(二)
GitBash 是 Windows 系统安装 Git 时默认集成的命令行工具,提供运行 Git 命令的集成环境.
三招教你轻松扩展 git bash 命令(上)(二)
【技术分享】Mac终端bash和zsh切换
【技术分享】Mac终端bash和zsh切换
336 0
三招教你轻松扩展 git bash 命令(中)(二)
在上一篇文章中我们介绍了第一种方式实现轻松扩展 GitBash 命令,首先简单回顾一下主要知识. GitBash 命令行工具是 Windows 电脑安装 Git 时默认集成的终端工具,与此同时还有双胞胎兄弟 GitGUI 图形化工具.
三招教你轻松扩展 git bash 命令(中)(二)
三招教你轻松扩展 git bash 命令(上)(一)
GitBash 是 Windows 系统安装 Git 时默认集成的命令行工具,提供运行 Git 命令的集成环境.
三招教你轻松扩展 git bash 命令(上)(一)
三招教你轻松扩展 git bash 命令(中)(一)
在上一篇文章中我们介绍了第一种方式实现轻松扩展 GitBash 命令,首先简单回顾一下主要知识. GitBash 命令行工具是 Windows 电脑安装 Git 时默认集成的终端工具,与此同时还有双胞胎兄弟 GitGUI 图形化工具.
三招教你轻松扩展 git bash 命令(中)(一)
三招教你轻松扩展 git bash 命令(下)(一)
在上一节中我们已经介绍了两种方式来扩展 git bash 命令,解决了一般性命令不足的问题,最后我们还留下了一个疑问,如果两种方式均无法扩展某些命令又该怎么办? 再介绍最后一个大招之前,我们首先来回忆一下前面两种扩展方式.
三招教你轻松扩展 git bash 命令(下)(一)
三招教你轻松扩展 git bash 命令(下)(二)
在上一节中我们已经介绍了两种方式来扩展 git bash 命令,解决了一般性命令不足的问题,最后我们还留下了一个疑问,如果两种方式均无法扩展某些命令又该怎么办? 再介绍最后一个大招之前,我们首先来回忆一下前面两种扩展方式.
三招教你轻松扩展 git bash 命令(下)(二)
zsh 使用通配符功能
zsh 使用通配符功能
334 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等