什么是 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. [译] AR SDK的种类比你想得要多!这里介绍七个棒棒哒

    作者:Eddie Offermann 原文:There are dozens more Augmented Reality SDKs than you think! Here are seven gr ...

  2. (3)activiti流程的挂起和激活

    有时候,我们需要对一个已经执行的流程进行暂停,而不是删除它,这个时候就需要我们调用activiti暂停和激活的api来操作他们 每启动一个流程实例,都会在该流程实例下产生相应的流程任务,处于1*多的关 ...

  3. linux上安装Oracle 11g R2 标准版 64位

    一.Oracle 安装前的准备 检查一下包,必须全部安装: binutils-2.20.51.0.2-5.43.el6.x86_64 compat-libstdc++-296-2.96-144.el6 ...

  4. matlab中同一文件定义子函数的方法

    在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同在一个m文件中通常有两种定义子函数的方法: 1.嵌套定义 myfunc1会和主函数共享变量名.这种情况 ...

  5. bugly集成了Tinker热更新

    介绍 热更新能力是Bugly为解决开发者紧急修复线上bug,而无需重新发版让用户无感知就能把问题修复的一项能力.Bugly目前采用微信Tinker的开源方案,开发者只需要集成我们提供的SDK就可以实现 ...

  6. 可能是一份没什么用的爬虫代理IP指南

    写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...

  7. 浅谈Java单例模式

    关于基本的懒汉式,饿汉式等写法网上介绍多如牛毛,这里不再赘述,直接讨论加了volatile关键字的双重锁(Double check),静态内部类以及枚举等写法,如有不对,恳请读者指出,欢迎讨论. 1. ...

  8. shell-3

    每天学习一篇:利用跑代码或者空闲思考时间,启动环境时间等闲杂时间: http://blog.csdn.net/junjieguo/article/category/880326/2

  9. 第一章 Java语言概述2

    一.编写第一个Java应用程序 1.下载.安装JDK 官方网址:www.oracle.com java.sun.com 安装JDK 傻瓜式安装,下一步即可. 建议:安装路径不要有中文或者特殊符号,如空 ...

  10. 《剑指offer》— JavaScript(19)顺时针打印矩阵

    顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打 ...