(原) “终极 Shell” zsh 与 oh my zsh

原创文章,请后转载,并注明出处。

这里有一篇介绍文章:http://macshuo.com/?p=676,据说是非常好使。

安装

Ubuntu安装zsh很简单:sudo apt-get install zsh

接下来安装oh my zsh,这是网友做的简化zsh的设置,应该添加了很多插件之类。

oh my zsh官网:https://ohmyz.sh/

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

配置zsh,在用户目录下的.zshrc中。我在此文件中也做了一些另名

alias -s go="/home/ease/tools/sub"  //go扩展名用此程序打开
alias -s gz='tar -xzvf'             //gz扩展名为tar -xzvf运行,意味着会自动解压后缀为gz的文件
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'

指定zsh为默认shell: chsh /bin/zsh,当然在安装oh my zsh时可以自动设置好。

我用cat /etc/shells 看了看,ubuntu下装了好多shell……

插件

这里讲了好一些插件

我只使用了 z web-search history 三个插件,外加一个运行插件incr,基本就满足使用了。

使用插件web-search,命令行直接输入baidu xx即可打开浏览器搜索。

使用插件z,直接跳转目录。看起来它是在根目录建立了一个.z文件,文件中记录了使用过的目录,而且记录了使用频率。你根本不用输入完整目录,它是根据这些信息来猜你想跳转到哪里的,当然也有猜错的时候了。

输入d命令可列出最新目录,然后输入对应数字即可进入目录。

-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..

添加history插件,则h命令将显示history记录,输入hsi可以进行历史记录搜索。

主题

oh my zsh 也提供了不少的主题,在~/.oh-my-zsh/themes目录下。

其中agnoster样子还是不错的,它需要特殊字符,因此要安装字体 sudo apt-get install fonts-powerline

吐槽

不过不爽的在于home目录下增加很多隐藏的配置文件,对于洁癖者比较痛苦。

另外网上一般的文章介绍得比较同质化,深入一些的没有介绍,比如插件和主题如何自己添加或修改。

另外,开启了自动提示等功能后,复制字符串命令行明显很慢(它依然会想去匹配,实际上它应该就此做判断),另外有些命令总是自以为是的给我,导致真正的命令却不能输入。(2020.2.5)


zsh shell

其实zsh与bash这种shell一样,都是壳,而oh my zsh只是在zsh上作了一些扩展,所以还是先学学zsh。一般搜索shell zsh往往被带到oh my zsh这个组合去了。

这是网友写的zsh,算是比较不错的,得空需好好学习一下。

Zsh 开发指南(第一篇 变量和语句)

Zsh 开发指南(第二篇 字符串处理之常用操作)

Zsh 开发指南(第三篇 字符串处理之转义字符和格式化输出)

Zsh 开发指南(第四篇 字符串处理之通配符)

Zsh 开发指南(第五篇 数组)

Zsh 开发指南(第六篇 哈希表)

Zsh 开发指南(第七篇 数值计算)

Zsh 开发指南(第八篇 变量修饰语)

Zsh 开发指南(第九篇 函数和脚本)

Zsh 开发指南(第十篇 文件查找和批量处理)

Zsh 开发指南(第十一篇 变量的进阶内容)

Zsh 开发指南(第十二篇 [[ ]] 的用法)

Zsh 开发指南(第十三篇 管道和重定向)

Zsh 开发指南(第十四篇 文件读写)

Zsh 开发指南(第十五篇 进程与作业控制)

Zsh 开发指南(第十六篇 alias 和 eval 的用法)

Zsh 开发指南(第十七篇 使用 socket 文件和 TCP 实现进程间通信)

Zsh 开发指南(第十八篇 更多内置模块的用法)

Zsh 开发指南(第十九篇 脚本实例讲解)

Zsh 开发指南(第二十篇 代码风格)

Zsh 开发指南(第二十一篇 测试方法以及编写可测试代码的方法)

选项

-c :只执行指定的命令后退出
-i :启用交互式shell功能
-s :强制从标准输入中读取命令
-o :指定命令行选项

部份内置命令

命令 描述
alias 设置别名
autoload 预加载shell函数到内存中
bg 后台执行作业
builtin 执行内置命令,而不是同名的外部命令
command 执行外部命令,而不是内置的同名命令
emulate 仿真其他shell
eval 当前shell执行指定的命令和参数
exec 执行命令和参数来替换当前的shell进程
zmodload 加载额外的模块操作
bindkey 将组合镇定和命令绑定到一起
byte 与exit相同
dirs 显示目录栈的内容
export 环境变量
print 显示变量和文本
printf C风格显示
read 读取一行
shift 读取并删除第一位参数
ttyctl 锁定和解锁显示
unalias 删除别名
unfunction 删除函数
wait 等待作业完成

操作模块

zmodload 查看已加载模块

zmodload zsh/zftp 加载模块

zmodload -u zsh/zftp 删除已加载模块

模块 描述
zsh/datetime 额外的日期和时间命令及变量
zsh/files 基本的文件处理命令
zsh/mapfile 通过关联数组来访问外部文件
zsh/mathfunc 额外的科学函数
zsh/pcre 扩展的正则表达式库
zsh/net/socket Unix域套接字支持
zsh/stat 访问stat系统调用来提供系统的统计状况
zsh/system 访问各种底层系统功能的接口
zsh/net/tcp 访问TCP套接字
zsh/zftp 专用FTP客户端命令
zsh/zselect 阻塞,直到文件描述符就绪才返回
zsh/zutil 各种shell实用工具

脚本编程

变量:整数、浮点数、字符串、数组、哈希表 (字符串中,双引号里可以使用变量)

数学运算:let命令或者双圆括号

数学函数:value1=$(( sqrt(9) )) //需加载zsh/mathfunc模块

结构化命令:if then else、for、while、until、select、case、repeat

函数: function xxx{} 或 xxx(){}

目录切换

dirs -v 列出使用过的目录

~4 进入第4个目录

使用了oh my zsh后,可以直接使用d列出目录,输入数字直接进入目录

相关文章