这里有一篇介绍文章: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 开发指南(第十六篇 alias 和 eval 的用法)
Zsh 开发指南(第十七篇 使用 socket 文件和 TCP 实现进程间通信)
Zsh 开发指南(第二十一篇 测试方法以及编写可测试代码的方法)
选项
-c :只执行指定的命令后退出
-i :启用交互式shell功能
-s :强制从标准输入中读取命令
-o :指定命令行选项
部份内置命令
命令 | 描述 |
---|---|
alias | 设置别名 |
autoload | 预加载shell函数到内存中 |
bg | 后台执行作业 |
builtin | 执行内置命令,而不是同名的外部命令 |
command | 执行外部命令,而不是内置的同名命令 |
emulate | 仿真其他shell |
eval | 当前shell执行指定的命令和参数 |
exec | 执行命令和参数来替换当前的shell进程 |
zmodload | 加载额外的模块操作 |
bindkey | 将组合镇定和命令绑定到一起 |
byte | 与exit相同 |
dirs | 显示目录栈的内容 |
export | 环境变量 |
显示变量和文本 | |
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列出目录,输入数字直接进入目录