Shell
1、Shell 的命令行性质
shell是一个用 C 语言编写的程序,它是用户使用 类Linux 的桥梁,可供用户交互式操作调用系统执行命令。在mac上,常见的shell GUI封装程序(或 终端模拟程序)是 “终端”、“iterm2”。
打开终端或者iterm2
用户 通过shell(pod)命令 调起 Ruby解析器 解析执行“pod”(ruby)脚本。
用户 通过shell窗口 直接调起可执行文件“qiyimac”。
2、Shell 既是一种命令语言,又是一种程序设计语言。
上面已经简单说明了shell作为命令语言的使用,这里简单说明shell的程序设计语言性质。
Sh 解释器是个可执行文件,可以把sh当做 zsh、bash的简化版
▪第一、shell脚本有如下编程语言的特征
▪第二、从进程的角度看
test.sh 如下
#!/bin/sh
echo $$ #输出当前进程PID
ps -a #输出当前活跃进程(controlling terminal 类型)
运行结果如下:
zsh test.sh 执行脚本 开启了ID 为 51139 新的 进程(zsh程序),当然 也可以 source 执行 test.sh。
3、 Mac 的zsh 和 bash
Z shell(Zsh)是一款可用作交互式登录的shell及脚本编写的命令解释器。Zsh对Bourne shell做出了大量改进,同时加入了Bash、ksh及tcsh的某些功能。
Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。Bash能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4起至macOS Mojave都将它作为默认shell。
自2019年起,自macOS Catalina, macOS的默认Shell已从Bash改为Zsh。
Zsh(shell) 的 startup 配置文件 是 .zshrc,在用户目录根目录下(可自行创建)
oh my zsh 使用
用户社区网站"Oh My Zsh"收集Z shell的第三方插件及主题。截止于2018年,其GitHub源共有超过1000位贡献者、200多款插件和超过140款主题。同时也带有更新已安装插件及主题的自动更新工具。
// Install oh-my-zsh via wget
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
// Install oh-my-zsh via curl
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
1、Oh my zsh 大致工作原理
1.通过安装脚本把 插件和主题 下载到 本地
https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
2.通过.zshrc的 startup 配置文件 配置 zsh
在.zshrc 中,可以看到 source $ZSH/oh-my-zsh.sh 命令,oh-my-zsh.sh的作用就是把上面的配置参数引入到zsh中,例如 ZSH_THEME="amuse", oh-my-zsh脚本会从.oh-my-zsh/themes 中查找amuse.zsh-theme。git 插件原理也是如此。
2、插件、主题目录管理
oh-my-zsh 插件和主题分为两类,一类是内置的,由oh-my-zsh做源文件管理;另一类是三方的,可由用户手动管理。
插件和主题目录管理如下图, 其中Zsh-autosuggestions 插件不属于 oh-my-zsh 内置的插件,是手动管理的插件,它处于custom目录之下。oh-my-zsh提供三方插件接入支持,只要把插件内容放到指定位置,即可像内置插件一样使用。目录位置如下图:
git 插件是内置插件、Zsh-autosuggestions 是外部插件
3、推荐的插件和主题
zsh-syntax-highlighting
https://github.com/zsh-users/zsh-syntax-highlighting
zsh-autosuggestions
https://github.com/zsh-users/zsh-autosuggestions
autojump
https://github.com/wting/autojump
Git
https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
rand-quote
https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/rand-quote
主题: robbyrussell、af-magic、bureau、amuse
Cowsay 和 quote组合
Cowsay 命令行使用
npm install -g cowsay // 安装
cowsay -f cat 'Hello world!' // 使用
把下面的命令放入 startup 配置文件 .zshrc 的最后,shell启动结果如下:
cowsay -f cat `quote`
或者 quote | cowsay
参考资料
Oh My Zsh 官网
Oh My Zsh github 文档
Oh My zsh 使用博客
Shell脚本
Asciiworld