什么是 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. 串口VMIN VTIME 详解

    原文地址: 以前跟着做过VxWorks的开发,主要通信方式是串口,因为底层BSP包已经做好了,串口通信非常简单.后来接触Linux,在一块OK6410上跑Linux串口通信,才发现原来天真的以为甚是简 ...

  2. Symmetric Tree(DFS,二叉树的构建以及测试代码)

    基础有待加强啊,由该题引发出来一些问题,现在来总结下. 首先是二叉树的结构: struct TreeNode { EleType val; TreeNode *left; TreeNode *righ ...

  3. jar word 模板操作比较好用的工具

    个人觉得比较好用的java word 模板 http://deepoove.com/poi-tl/

  4. 编译lua

    http://www.lua.org/ 新建一个 static library 工程,把解压得到的目录下的src子目录中的所有.h和.c文件拷贝到新工程目录下. 工程中删除自动生成的 main.c 文 ...

  5. Java-ArrayList使用技巧---从第一个List中去除所有第二个List中与之重复的元素

    需求:从 mAllList 中去除所有 mSubList 中与之重复的元素 测试数据:mAllList 中包含100000个无序无重复字符串,mSubList 中包含50000个无序无重复字符串 方法 ...

  6. android -- 存储byte

    public static String byteArrayToHexStr(byte[] byteArray) { if (byteArray == null){ return null; } ch ...

  7. 渗透测试思路 | Linux下自动化搭建FakeAP,劫持用户在Portal认证下的所有流量

    如何在linux下搭建一个fakeap,使得portal认证下的用户无法发现连接你的假AP,并且能够正常上网.先说一下portal认证.无线WIFI认证方式主要有wpa2 和 open两种,而port ...

  8. linux mysql-server can't find mysql_config

    linux mysql-server can't find mysql_config Ask Question up vote7down votefavorite 3 I have a running ...

  9. 淘宝HSF 框架使用 总结

    @(JAVA开发) 淘宝HSF 框架使用 总结 随着网站访问量增加,仅仅靠增加机器已不能满足系统的要求,于是需要对应用系统进行垂直拆分和水平拆分.在拆分之后,各个被拆分的模块如何通信?如何保证性能?如 ...

  10. redis 3.0.1 在CentOS上的安装

    一.下载 wget http://download.redis.io/releases/redis-3.0.1.tar.gz 二.解压 tar xzf redis-3.0.1.tar.gz 三.进入 ...