什么是 zsh,要想解释好这个问题,那么得先说明什么是 shell。不负责任的解释说法就是 shell 就是一个壳。这个壳可不是蜗牛的壳,而是计算机的一个壳,当然也不是计算机的外壳啦,这个壳是相对于计算机内核的一个壳。是指“提供使用者使用界面”的软件,也可以说是一种命令解析器,它将人类输入的字符变成计算机可以识别的字符,或者是展现出计算机所计算出来的结果。

同时 shell 也是一种脚本语言,可以有很多有意思的用法。传统意义上的 shell 指的是命令行形式的 shell,在 Unix/Linux 系统下常用的 shell 有 bash/zsh/ksh/sh/csh 等等不一而同。

我们最常用的也是很多操作系统默认的 shell 就是 bash,它是一个为 GUN 计划编写的 shell,全称为 Bourne-Again SHell。而今天的主角显然不是这位默认集成的 bash,今天的主人翁是以拥有更加强大功能著称的 zsh。

zsh 是一款功能强大的 shell 软件,它可以兼容 bash,并且提供了很多高效的改进:
- 更好的自动补全
- 更好的文件名展开
- 强大的定制性
## 将 zsh 作为默认终端
首先先看看当前系统中有哪些可以使用的终端:
`cat /etc/shells`
我的电脑中显示如下:
```
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
```
在 Mac 下已经默认安装了,
一般的安装方法就是:
`sudo yum install zsh`
`sudo apt-get install zsh`
更多的安装方法可以查看这个网址:[http://www.zsh.org/](http://www.zsh.org/)

安装完成后敲击以下内容到终端:
`chsh -s /bin/zsh`
如果一切顺利,那么再次打开终端的时候 zsh 就会是默认的终端。

安装 Oh-My-Zsh

单单是用 zsh 是一件非常苦恼的事情,对于非程序员光是 shell 就已经算是很难以使用了,不过我想应该不会有非程序员使用终端吧。
zsh 相对于 bash 来说增加了很多的功能,所以是使用难度也自然而然的就提升了很多。还好有一群爱折腾的年轻小伙子,开发了一款 zsh 的插件集合——
“Oh My ZSH”

>Oh-My-Zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and a few things that make you shout...

这是 Oh My ZSH 的官方介绍,可以在 [http://ohmyz.sh/](http://ohmyz.sh/) 中看到它的身影,它简明意概的说明了它是一个开源的管理 zsh 配置框架,它内置了非常多的插件、主题、functions等等。安装 oh my zsh 也是一件非常简单的事情,只要在终端中键入:(需要有 git 环境。安装同 zsh,只要把 zsh 替换成 git 即可)
`wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh`
当然我们也可以选择使用原码安装:
`git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh`
`cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc`
这些命令都不复杂,如果一切顺利的话,安装完成之后我们再次打开终端时,我们的终端就会变得和原来大不一样,终端会以多彩的形式呈现出来。oh my zsh 有很多强大的配置,这里就不展开说了,zsh 的配置主要集中在用户当前目录的 .zshrc 里了,我们可以根据官网的介绍来配置我们的 zsh。

主题

好马配好鞍,有了一个强大的终端之后怎么可以没有一个配套的主题和第三方终端工具呢?按照我的审美习惯我从众多的 zsh 的主题中选择了 agnoster 这个主题以及一款非常好用的终端工具 iTerm。具体怎么安装和配置我就不在这里展开了,百度一下就可以有非常多的答案越于眼前了。在 Mac 系统下一般遇到的错误都是没有安装苹果自家的 Command line 引起的,只要安装了已经基本就不会遇到什么错误了。跟着晚上的教程一步一步做准没错。

autojump

在我们使用终端的时候往往会为频繁的输入路径而烦恼,虽然 zsh 已经有非常强大的路径补全功能,但任然不能满足我们对于效率的追求。而这么强大的 zsh 这么可能会没有解决方案呢?答案是肯定有,是有的。在 zsh 的众多插件当中,一款名为 autojump 的插件满足了我们的需求。autojump - a faster way to navigate your filesystem,这是一款非常好用的插件,它通过记录我们常用目录并通过一定的算法分析我们将要去的目录,以达到快速到达的目的。比如说我要启动 MySql 数据库,那么我就得这样:

`cd /usr/local/mysql/support-files/`
`mysql.server start`
而如果我们使用 autojump 的话,这一操作将变得极其简单,打开 MySQL 将会变成这样:
`j mysql`
`mysql.server start`
因为我经常访问这个目录,所以 aotojump 会记录下这个路径,这样在我键入 `j mysql` 的时候,它就会自动帮我跳转到这个目录下。可以说是非常的方便。我们也可以为某个目录设置权重,这样就可以方便的“初始化”想要快速到达的目录了。autojump 不仅仅支持 zsh,像 bash,fish都是支持的。

结束语

使用好终端可以方便我们的操作,可以让我们以一种不同角度去感受计算机,这里要感谢 Mac OS,如果不是它我也不会踏上 shell 这一条道路上来,让我感受到了 Unix/Linux 的魅力所在。以前也常常使用虚拟机折腾 Linux 系统,但往往都是一时热情,毕竟对于一个并不是很懂 Linux 的人来说,很多问题都会让自己很沮丧。而 Mac 这种开箱即用,并不需要折腾的系统或许是体验 Unix 哲学的最佳栖息地。

zsh 简单介绍的更多相关文章

  1. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  2. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  3. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  4. yii2的权限管理系统RBAC简单介绍

    这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...

  5. angular1.x的简单介绍(二)

    首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...

  6. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  7. iOS-iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  8. iOS开发多线程篇—多线程简单介绍

    iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...

  9. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

随机推荐

  1. 《Effective Objective-C 2.0》 读后总结

    感觉自己最近提升很慢了.然后去找了一些面试题看看.发现自己自大了.在实际开发中,让我解决bug.编写功能,我有自信可以完成.但是对项目更深层的思考,我却没有.为了能进到自己的目标BAT.也为了让自己更 ...

  2. mybatis随笔四之MapperProxy

    在上一篇文章我们已经得到了mapper的代理对象,接下来我们对demoMapper.getDemo(1)这种语句进行分析.由于返回的mapper是个代理对象,因此会进入invoke方法,接下来我们来看 ...

  3. DFS 分布式文件系统 选型笔记

    需求按优先级顺序如下: 1)存放3TB以上中小型文件,图片为主,平均在500~700k,一般在1M以内. 2)要集群化,支持负载均衡,高可用高性能.有大企业使用背书最好. 3)提供Java程序上传文件 ...

  4. 配置opencv环境

    包含目录:解决代码报错问题 F:\ndk\opencv-windows\opencv\build\include;F:\ndk\opencv-windows\opencv\sources\includ ...

  5. 【异构计算】在Windows下使用OpenCL配置

    前言 目前,NVIDIA 和 AMD 的 Windows driver 均有支持OpenCL(NVIDIA 的正式版 driver 是从自195.62 版开始,而 AMD则是从9.11 版开始).NV ...

  6. JVM内存分配与回收策略

    对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配. 当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC. Minor GC:新生代GC,指发生在新生代的垃圾收集动作 ...

  7. [译]AngularJS 1.3.0 开发者指南(一) -- 介绍

    [译]AngularJS 1.3.0 开发者指南(一) -- 介绍 Angular是什么 ? AngularJS是一款针对动态web应用的结构框架. 它可以让像使用模板语言使用HTML, 并且可以扩展 ...

  8. 导航原理实验系统软件——node-webkit初探

    最近,和同学接手了一个某军校<导航原理>课程的教学实验平台软件开发工作. 本项目在客户端主要用到的技术便是node-webkit,使用它能够以Web的方式开发桌面应用程序.下面,就以本项目 ...

  9. 存储过程与SQL语句如何选择

    58到家数据库30条军规,有一条是“禁止使用存储过程.视图.触发器.Event”, 高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”, 并发量大的情况下,这些功能很可能 ...

  10. 每天一个Linux命令(15)--tail命令

    tail 命令从指定点开始将文件写到标准输出.使用  tail  命令的  -f  选项可以方便的查阅正在改变的日志文件 , tail  -f  filename  会把  filename  里最尾 ...