Shell是在程序员与服务器间建立一个桥梁,它对外提供一系列命令,让我们得以控制服务器。常用的Bash就是Shell的一种,也是Linux下默认Shell程序。这里介绍一种更强大的、更人性化的Shell——oh-my-zsh。

Zsh是什么

Zsh属于Shell中的一种,但比Bash好用,而且完全兼容Bash,拥有及其丰富的插件、强大的自动补全能力、以及自定义功能,可以大大提供我们使用Linux的效率.

安装oh-my-zsh

Zsh虽然好用,但直接用起来比较麻烦,但是已经有大神配置好的框架:oh-my-zsh,专门为Zsh打造的。

sudo apt install git
sudo apt install zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
chsh -s /usr/bin/zsh

换回去

先查看有哪些shell

cat   /etc/shells

例如,换回Bash

chsh  -s  /bin/bash 

主题

oh-my-zsh自带100多个主题,主题的配置文件在 ~/.zshrc文件中,找到这一行:

ZSH_THEME="robbyrussell"

你可以将值改成任意主题,oh-my-zsh的主题可以在这里找到。保存好文件后,执行  source ~/.zshrc 使配置生效。如果你将值设为空,表示不使用任何主题;你也可以设置为"random",你每次打开都会随机选择一个主题。

推荐主题: agnoster

由于这个主题使用了一些特殊字符,需要安装字体:

sudo apt-get install fonts-powerline

命令补全

虽然Bash可以使用tab自动补全命令,但oh-my-zsh的补全功能更强。比如你想进入Nginx所在目录 /usr/local/nginx,输入 cd/u/l/n 按下tab系统就能自动将其补全为 cd /usr/local/nginx;比如,输入 git,按下tab,就给你返回关于git的命令;再比如,你要进入一个名字很长的文件夹,你只要输入前几个字符,再按tab就能补全。

你也可以使用 alias 命令查看,会发现oh-my-zsh默认已经把很多命令组合并取了别名。

在目录中穿越

我们通常会遇到这种情况:先进入一个很深的目录,又要换到另一个目录。通常我们会使用 cd - 回到最近的一次目录,或者使用 history 查看之前所有的目录。但是oh-my-zsh提供了更强大的 d 命令。

d 命令会列出最近进入的目录历史,并且会给这些目录加上序号,只要输入对应目录的序号,就能进入该目录。

使用前面提到的 alias 命令可以查看其它一些目录跳转的快捷方式:

 rogn@ubuntu  ~  alias
-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..

Git友好

使用Git做版本控制时,经常需要对仓库的代码进行 status、add、commit等操作,以及审视Git仓库的提交状态,oh-my-zsh对Git有很友好的支持。

如下图,我们 cd 到一个目录,发现命令行前多了一对括号,括号中的 master 表示当前目录是一个Git仓库,且在master分支下。如果当前分支有文件改动,master后面会增加一个*号,表示工作区有文件改动但没有执行 add。执行 git add后,*变成了 +,表示添加到了站暂存区。再执行git commit,master后面的符号消失,工作区又干净了。切换分支,括号里变成了dev,表示当前已经是dev分支。

参考链接:https://zhuanlan.zhihu.com/p/63585679

 

linux shell——zsh的安装与使用的更多相关文章

  1. 在 Linux Mint 19 上安装 zsh 和设置小键盘一步到位

    在 Linux Mint 19 上安装 zsh 和设置小键盘 安装 zsh 并设置 zsh 为默认 shell 安装 sudo apt install zsh 设置 zsh 为默认 shell,注意没 ...

  2. 【原】用PHP搭建基于swoole扩展的socket服务(附PHP扩展的安装步骤及Linux/shell在线手册)

    最近公司的一项目中,需要用PHP搭建一个socket服务. 本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信.经过多次尝试,最终选择了开源的PHP扩展:swoo ...

  3. 树莓派进阶之路 (035) - 基于linux的zsh安装脚本

    基于linux的zsh安装脚本: Ubuntu版本: #!/bin/sh cd #安装zsh sudo apt-get install zsh #查看zsh cat /etc/shells #更改zs ...

  4. Shell脚本实现在Linux系统中自动安装JDK

    A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本: 复制代码 代码如下: $ ...

  5. Arch Linux 硬盘引导-联网安装

    Arch Linux 硬盘引导-联网安装 ============https://www.archlinux.org/https://wiki.archlinux.org/https://wiki.a ...

  6. 终极 Shell——ZSH

    Shell是Linux/Unix的一个外壳,你理解成衣服也行.它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后 ...

  7. Linux Shell自动交互/人机交互的三种方法

    如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下. 一.背景 shell脚本在处理自动循环或大的任 ...

  8. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  9. linux shell 入门

    本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...

随机推荐

  1. scala 列表的子集判断

    val list1=List.range(0,5) val list2=List.range(0,2) val list3=List(0,6) list1.contains(2) list1.cont ...

  2. GreenPlum 大数据平台--安装

    1. 环境准备 01, 安装包准备: Greenplum :  >>>>链接地址 Pgadmin客户端 :  >>>链接地址 greenplum-cc-web ...

  3. (转)CentOS 7 sytemctl 自定义服务开机启动

    CentOS 7 sytemctl 自定义服务开机启动 原文:http://blog.csdn.net/ithomer/article/details/51766319 CentOS 7继承了RHEL ...

  4. 操蛋的Django model------select_related() 主要用于一对一和一对多

    实例: 创建表,表都是一对一,一对多 class Province(models.Model): name = models.CharField(max_length=10) class City(m ...

  5. Javascript 对象Object

    1.new构造函数法 2.对象字面量 对象字面量很好理解,使用key/value的形式直接创建对象,简洁方便.   这种方式直接通过花括号将对象的属性包起来,使用key/value的方式创建对象属性, ...

  6. C#编程的几个概念

    编译器(计算机) 开发人员 指令&对象 C# 有一批既定的指令, 关键字,方法.函数 变量.控件 通过指令去操作对象. 1. 熟记指令 2. 指令-对象的可操作关系 3. 合乎语法规范

  7. 课堂笔记&总结与遇错纠错篇

    一.课堂笔记 二.个人总结 在学习和工作JDK是必不可少的程序员必备工具,遇到问题可以在帮助文档寻找答案! 接受能力不足,老师讲的知识点过去了,我经常还在想上一个知识点.希望老师有时候重点可以讲慢点哈 ...

  8. Dozer 实现对象间属性复制

    使用场景:两个领域之间对象转换. 比如:在系统分层解耦过程中, 对外facade接口,一般使用VO对象,而内core业务逻辑层或者数据层通常使用Entity实体. VO对象 package com.m ...

  9. sql server 数据库代码备份及还原代码

    --备份 BACKUP DATABASE [库名称] TO DISK='E:\qq\ddd.bak' --备份并覆盖 BACKUP DATABASE [库名称] TO DISK='E:\qq\ddd. ...

  10. html 表格边框的设置

    对于很多初学HTML的人来说,表格<table>是最常用的标签了,但对于表格边框的控制,很多初学者却不甚其解. 一般我们用表格的时候总会给它个border属性,比如:<table b ...