什么是Shell?

相对于内核来说,Shell是Linux/Unix的一个外壳,它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。

简单的说,shell就是那“黑乎乎”的命令行。

Shell的分类

Linux/Unix提供了很多种Shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash;

想知道你的系统有几种shell,可以通过以下命令查看:

  1. cat /etc/shells

显示如下:

  1. /bin/bash
  2. /bin/csh
  3. /bin/ksh
  4. /bin/sh
  5. /bin/tcsh
  6. /bin/zsh

bash这个是目前大多数Linux系统默认使用的shell,全名是BourneAgain Shell,一共有40个命令。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。

在 Linux 里执行这个命令和 Mac 略有不同,你会发现 Mac 多了一个 zsh,也就是说 OS X 系统预装了个 zsh,它是什么呢?

zsh介绍

zsh 是一款功能强大的 shell 软件,它可以兼容 bash,并且提供了很多高效的改进。它是Linux里最庞大的一种shell,它有84个内部命令,也提供了更为强大的功能:

  • 更好的自动补全
  • 更好的文件名展开
  • 丰富的插件
  • 强大的定制性

但是由于配置过于复杂,一般情况下,我们不会使用该shell,直到「oh my zsh」的出现。

zsh安装

如果你用 Mac,就可以直接看下一节,Mac默认已经安装;

如果你用 Redhat Linux,执行:sudo yum install zsh;

如果你用 Ubuntu Linux,执行:sudo apt-get install zsh;

oh my zsh

Oh My Zsh(http://ohmyz.sh/)是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。

Oh My Zsh只是一个对zsh命令行环境的配置包装框架,但它不提供命令行窗口,更不是一个独立的APP。

安装

官网推荐安装方式:

Via curl:

  1. $ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Via wget:

  1. $ sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

切换系统shell:

  1. $ chsh -s /bin/zsh

配置

zsh的配置文件存在当前用户目录中的.zshrc文件,如果你发现切换了shell之后,以前的配置的环境变量不生效了,可以打开 .zshrc文件,找到:

  1. # User configuration
  2. source ~/.bash_profile

指定配置的环境变量文件,之后运行:

  1. source .zshrc

主题设置

在.zshrc文件中找到主题的配置项

  1. # Set name of the theme to load. Optionally, if you set this to "random"
  2. # it'll load a random theme each time that oh-my-zsh is loaded.
  3. # See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
  4. ZSH_THEME="ys"

这里可以设置主题的名字,那么这些主题的名字从哪里找呢?

进入Oh My Zsh的配置目录中:

  1. ls /Users/用户/.oh-my-zsh/themes

可以看到内置了许多主题,根据主题文件的名字替换就可以了;

  1. 3den.zsh-theme essembeh.zsh-theme junkfood.zsh-theme rgm.zsh-theme
  2. Soliah.zsh-theme evan.zsh-theme kafeitu.zsh-theme risto.zsh-theme
  3. adben.zsh-theme example.zsh-theme kardan.zsh-theme rixius.zsh-theme
  4. af-magic.zsh-theme fino-time.zsh-theme kennethreitz.zsh-theme rkj-repos.zsh-theme
  5. afowler.zsh-theme fino.zsh-theme kiwi.zsh-theme rkj.zsh-theme
  6. agnoster.zsh-theme fishy.zsh-theme kolo.zsh-theme robbyrussell.zsh-theme
  7. alanpeabody.zsh-theme flazz.zsh-theme kphoen.zsh-theme sammy.zsh-theme
  8. amuse.zsh-theme fletcherm.zsh-theme lambda.zsh-theme simonoff.zsh-theme
  9. apple.zsh-theme fox.zsh-theme linuxonly.zsh-theme simple.zsh-theme
  10. arrow.zsh-theme frisk.zsh-theme lukerandall.zsh-theme skaro.zsh-theme
  11. ....

或者我们将主题设置为随机('random'),每次打开命令行窗口,都会随机在默认主题中选择一个,如果遇到你喜欢的主题,可以输入命令查看其名字:

  1. $ echo $ZSH_THEME

插件开启

Oh My Zsh 默认自带了一些默认主题,存放在~/.oh-my-zsh/plugins目录中。我们可以查看这些插件

  1. $ ls ~/.oh-my-zsh/plugins
  2. adb brew coffee dirpersist fastfile gitignore httpie last-working-dir nanoc pod rebar sprunge terminitor vault zeus
  3. ant brew-cask colemak django fbterm git-prompt iwhois lein nmap postgres redis-cli ssh-agent terraform vim-interaction zsh-navigation-tools
  4. apache2-macports bundler colored-man-pages dnf fedora git-remote-branch jake-node lighthouse node pow repo stack textastic vi-mode zsh_reload
  5. archlinux bwana colorize docker forklift glassfish jhbuild lol npm powder rsync sublime textmate virtualenv
  6. asdf cabal command-not-found docker-compose frontend-search gnu-utils jira macports nvm powify ruby sudo thefuck virtualenvwrapper
  7. autoenv cake common-aliases emacs gas go jruby man nyan profiles rvm supervisor themes vundle
  8. autojump cakephp3 compleat ember-cli geeknote golang jsontools marked2 osx pyenv safe-paste suse thor wakeonlan
  9. autopep8 capistrano composer emoji gem gpg-agent jump mercurial pass pylint sbt svn tmux wd
  10. aws cask copydir emoji-clock git gradle kate meteor paver python scala svn-fast-info tmux-cssh web-search
  11. battery catimg copyfile emotty git-extras grails kitchen mix pep8 rails scd symfony tmuxinator wp-cli
  12. bbedit celery cp encode64 gitfast grunt knife mix-fast per-directory-history rake screen symfony2 torrent xcode
  13. bgnotify chruby cpanm extract git-flow gulp knife_ssh mosh perl rake-fast scw systemadmin tugboat yii
  14. boot2docker chucknorris debian fabric git-flow-avh heroku laravel mvn phing rand-quote sfffe systemd ubuntu yii2
  15. bower cloudapp dircycle fancy-ctrl-z github history laravel4 mysql-macports pip rbenv singlechar taskwarrior urltools yum
  16. branch codeclimate dirhistory fasd git-hubflow history-substring-search laravel5 n98-magerun pj rbfu spring terminalapp vagrant z

我们打开.zshrc配置文件,定位到plugins

  1. plugins=(
  2. git )

可以看到默认只开启了git插件,我们可以将要使用的插件的名字以空格相隔接在后面就可以了,比如:

  1. plugins=(
  2. git adb)

如果我们要下载第三方的插件,只需要把插件下载存放到~/.oh-my-zsh/plugins中,然后在上面加上插件的名字即可;

推荐插件

zsh-autosuggestions

它是Oh-myszh的一个插件,作用基本上是根据历史输入指令的记录即时的提示,能够很大的提高效率。

1.克隆到插件目录:

  1. git clone git://github.com/zsh-users/zsh-autosuggestions

2.修改配置文件.zshrc:

  1. plugins=(git zsh-autosuggestions)

zsh-syntax-highlighting

这是一个命令高亮插件,输入为绿色时表示可用命令,路径带有下划线时表示可用路径

1.克隆到插件目录:

  1. git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

2.修改配置文件.zshrc:

  1. plugins=(git zsh-syntax-highlighting)

最后别忘了让配置生效

  1. source .zshrc

引用:

终极 Shell.

利用Oh-My-Zsh打造你的超级终端

Oh-My-Zsh的配置与使用的更多相关文章

  1. zsh+on-my-zsh配置教程指南(程序员必备)

    本文以CentOS 7/Mac 为例,介绍zsh的配置使用教程. 准备 查看当前环境shell echo $SHELL <!-- more --> 查看系统自带哪些shell cat /e ...

  2. mac zsh环境配置java_home环境变量

    用zsh,修改-/.zshrc 修改这些文件之后,重修打开terminal,配置不会丢 首先确保已经安装了jdk: ## check the present running java which ja ...

  3. Mac下在zsh中配置adb命令

    Mac下自带的终端默认黑白色的,对于一个技术宅来说不能忍啊.然后换成了iTerm,安装上了zsh,安装后界面如下: 这里写图片描述 但是常用的adb命令却找不到了,还向github上提了issue,下 ...

  4. Mac下安装oh my zsh之后配置环境变量失效问题

    背景:在刚拿到mac 的时候,使用了默认的bash,由于工作需要在电脑上安装了maven,在~/.bash_profile 文件中添加了maven的配置如下 $ cat ~/.bash_profile ...

  5. oh-my-zsh配置你的zsh提高shell逼格终极选择

    抱歉,这篇博文推迟发布了,人都是有惰性的...看在这个牛逼闪闪的标题就原谅我吧! 为何这篇文章要归类到 mac 下? 第一个问题,稍后我们说明下. zsh是个什么东东? 第二个问题... 你应该稍微接 ...

  6. 转载:(Mac)在bash和zsh配置环境变量path的几种方法

    参考文献 老习惯,列出本文参考或引用或转载的文档和博客,致以崇高的敬意,感兴趣的可以去看看 1.http://postgresapp.com/ 2.http://postgresapp.com/doc ...

  7. Liunx 安装配置zsh和oh-my-zsh 替换 bash

    一.前言 本文将基于 Liunx 环境安装配置zsh 和 oh-my-zsh 替换 bash oh my zsh Liunx默认shell是单调的bash,而zsh比较高大上,bash有的功能,zsh ...

  8. Linux 安装并配置zsh

    1. 安装zsh,配置agnoster主题 1.1 安装zsh $ sudo apt-get install -y zsh 1.2 安装oh-my-zsh $ sh -c "$(curl - ...

  9. Linux、Ubuntu、CentOS安装和配置zsh

    目录 01 zsh的安装 02 配置zsh 2.1 安装oh-my-zsh 2.2 查看oh-my-zsh目录 2.3 oh-my-zsh 插件的管理 2.3.1 添加插件 2.3.2 zsh-aut ...

  10. 安装更强大更美观的zsh,配置oh my zsh及插件

    安装更强大更美观的zsh,配置oh my zsh及插件 #0x0 安装zsh #0x1 安装oh my zsh #0x2 配置zshrc #0x3 配置主题 #0x4 安装插件 #0x5 小结 #0x ...

随机推荐

  1. spark 在yarn模式下提交作业

    1.spark在yarn模式下提交作业需要启动hdfs集群和yarn,具体操作参照:hadoop 完全分布式集群搭建 2.spark需要配置yarn和hadoop的参数目录 将spark/conf/目 ...

  2. nginx 配置实例-负载均衡

    1.实现效果 (1)浏览器地址栏输入地址 http://www.123.com/edu/a.html,负载均衡效果,平均 8080 和 8081 端口中 2.准备工作 (1)准备两台 tomcat 服 ...

  3. Java基本数据类型转换二

    public class TestConvert2 { /** * @param args */ public static void main(String[] args) { // TODO Au ...

  4. luoguP3346 [ZJOI2015]诸神眷顾的幻想乡

    题意 学习了广义后缀自动机. 广义后缀自动机与普通后缀自动机的区别在于它是对多个串建的,于是可以处理多个串. 广义后缀自动机和普通后缀自动机的区别在于两个特判,可以见这篇题解 对于这题,因为叶子数量小 ...

  5. Django views 中的装饰器

    关于装饰器 示例: 有返回值的装饰器:判断用户是否登录,如果登录继续执行函数,否则跳回登录界面 def auth(func): def inner(request, *args, **kwargs): ...

  6. appium--使用PyYAML封装Capability

    前戏 YAML 语言的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下. YAML大小写敏感: 使用缩进代表层级关系: 缩进只能使用空格,不能使用TAB,不要求空 ...

  7. 最小费用最大流 学习笔记&&Luogu P3381 【模板】最小费用最大流

    题目描述 给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 题目链接 思路 最大流是没有问题的,关键是同时保证最小费用,因此,就可以把 ...

  8. 第四组 团队Git现场编程实战

    组员职责分工 组员 分工 林涛(组长) 分配任务.整理数据.写博客 童圣滔 UI界面制作 林红莲 UI界面制作 潘雨佳 测评出福州最受欢迎的商圈 于瀚翔 测评出福州最受欢迎的商圈 覃鸿浩 测评出福州人 ...

  9. OpenGL ES 入门

    写在前面 记录一下 OpenGL ES Android 开发的入门教程.逻辑性可能不那么强,想到哪写到哪.也可能自己的一些理解有误. 参考资料: LearnOpenGL CN Android官方文档 ...

  10. 【新特性速递】树控件结构由单层 TR 改为 TR-TD-TABLE 层级嵌套

    FineUIPro/Mvc/Core的下个版本(v6.1.0),我们对树控件进行了优化,由原来的单层 TR 改为 TR-TD-TABLE 层级嵌套,从而做到表里如一. 上个版本(v6.0.0),我们对 ...