什么是 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/

安装完成后敲击以下内容到终端:

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/ 中看到它的身影,它简明意概的说明了它是一个开源的管理 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 哲学的最佳栖息地。

本文由个人 hexo 博客 co2fe.com 迁移

date: 2017-03-17 20:40:18

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

  1. zsh 简单介绍

    什么是 zsh,要想解释好这个问题,那么得先说明什么是 shell.不负责任的解释说法就是 shell 就是一个壳.这个壳可不是蜗牛的壳,而是计算机的一个壳,当然也不是计算机的外壳啦,这个壳是相对于计 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. iOS-iOS开发简单介绍

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

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

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

随机推荐

  1. AC日记——三连击 洛谷 P1008

    题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2: ...

  2. L1-2. 点赞【求多组数据中出现次数最多的】

    L1-2. 点赞 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持.每 ...

  3. Codeforces 875C National Property(拓扑排序)

    题目链接  National Property 给定n个单词,字符集为m 现在我们可以把其中某些字母变成大写的.大写字母字典序大于小写字母. 问是否存在一种方案使得给定的n个单词字典序不下降. 首先判 ...

  4. spring容器初始化bean和销毁bean之前进行一些操作的定义方法

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种:        第一种,通过在xml中定义init-method和destory-method方法        第二种, ...

  5. 深入理解Atomic原子类

    Atomic是基于unsafe类和自旋操作实现的,下面以AtomicInteger类为例进行讲解. 要理解Atomic得先了解CAS CAS CAS全程Compare And Swap ,是条并发原语 ...

  6. Ubuntu 16.04下使用Wine安装文件比对工具Beyond Compare 4

    说明: 1.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 2.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 下载: (链接 ...

  7. IIS下安装memcached管理工具—MemAdmin

    1.先看这篇文章 http://www.cnblogs.com/joylee/archive/2013/01/07/memadmin.html . 2.在IIS下安装的php-cgi.exe程序版本为 ...

  8. [bug]Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding

    写在前面 在mysql中这个异常是非常常见的,超时分为连接超时和执行超时,而连接超时,大部分原因是网络问题,或客户端到服务端的端口问题造成. bug场景 有的时候,使用MySqlDataReader在 ...

  9. 转: 多版本并发控制(MVCC)在分布式系统中的应用 (from coolshell)

    from:  http://coolshell.cn/articles/6790.html 问题 最近项目中遇到了一个分布式系统的并发控制问题.该问题可以抽象为:某分布式系统由一个数据中心D和若干业务 ...

  10. [Django] 查看orm自己主动运行的原始查询sql

    django的文档看了非常多.也用了不少,有的时候感觉性能非常不好,知道非常多地方是惰性查询.可是对于复杂的逻辑.仅仅是表面上发现执行非常慢,机器资源消耗非常多.却不知道orm究竟是什么来转化成sql ...