本文主要介绍终端和 shell 的一些基本概念,并着重介绍了 zsh - 目前最强大方便的 shell 以及它的配置,但愿能够提升咱们码农的工做效率。html
终端 Terminal
是一种用于与计算机进行交互的输入输出设备,它自己不提供运算处理功能。在大型机和小型机的时代,计算机是很是昂贵巨大的。一般计算机会被安置在单独的房间里,而操做计算机的人在另外的房间经过终端设备 TTY
/ CONSOLE
与计算机进行交互。如今因为我的电脑的普及,基本很难看到专门的终端设备。负责输入的键盘,负责输出的显示器,再加上一个与硬件基本无关的虚拟终端终端模拟器
这三者共同构成了传统意义上的终端。git
TIPS: 埃尼阿克埃尼阿克
ENIAC
是世界上第一台现代电子数字计算机,诞生于1946 年 2 月 14 号美国宾夕法尼亚大学。
它长 30.48 米,宽 6 米,高 2.4 米,占地面积约 170 平方米,30 个操做台,重达 30 英吨,耗电量 150 千瓦,造价 48 万美圆。计算速度是每秒 5000 次加法或 400 次乘法。github
TTY
TTY
是 TeleTYpe 的缩写,叫电传打字机,一个相似电报机的设备。这个也就是最先期的终端。shell
它本来的用途是在电报线路上收发电报,但鉴于它既能经过键盘发送信号,又能将接受到的信号打印在纸带上,最最最重要的是价格低廉,它就被 Unix 的创始人 Ken Thompson 和 Dennis Ritchie 用于链接到计算机上,让多个用户均可以经过终端登录操做主机,因此它就成了第一个 Unix 终端。segmentfault
CONSOLE
CONSOLE
是控制台的意思,它是一种特殊的终端,特殊的地方是它和计算机主体是一体的,是专门用来管理主机的,只能给系统管理员使用,有着比普通终端高的权限。通常一台计算机上只有一个控制台,但能够连不少终端。 CONSOLE
和 TTY
都算是终端,硬要说区别就是亲儿子和干儿子或 root 和非 root 用户的关系。windows
终端模拟器 Terminal Emulator
也叫终端仿真器。它加上键盘和显示器共同构建了之前的终端。它的工做流程以下:bash
终端模拟器分为两种,一种是终端窗口,就是咱们通常运行在图形用户界面里的,像 GNU/Linux 下的 gnome-termial
, mac 下的 iterm2
, windows 下的 wsl-terminal
。另外一种叫虚拟控制台,像 Ubuntu 系统中,经过 Ctrl
+Alt
+F1,F2...F6
等组合键能够切换出全屏的终端界面( Ctrl
+Alt
+F7
能够切回图形界面),这就是虚拟控制台。它是直接由操做系统内核直接提供的。curl
安装工具
# 经过brew安装 brew cask install iterm2 # 经过iterm2官网下载安装
配置字体
字体 Courier New
+ meslo
# 拉取字体厂库 git clone https://github.com/powerline/fonts.git --depth=1 # install 安裝 cd fonts && ./install.sh
终端配色
# 拉取终端配色厂库 git clone https://github.com/mbadolato/iTerm2-Color-Schemes.git --depth=1
shell
也叫命令解释器,它经过解析命令来调用系统调用和 API 来操做内核,进而读写硬件完成任务。
它能够经过图形化 shell,像 windows 里的文件管理器 Explorer.exe
, Linux 的桌面环境 GNOME
, KDE
等完成操做,也能够经过命令行 shell,像 windows 里的 cmd.exe
, Linux 里的 bash
, zsh
等。
bash
在 2019 年前几乎是全部类型操做系统的默认 shell,可是 2019 年 Mac 的 Catalina 将 zsh
设置为默认的 shell。为何?由于 zsh
彻底兼容 bash
,而且提供更多的功能。它提供如下功能:
其安装和切换命令以下:
# 安装 brew install zsh # 切换 chsh -s /bin/zsh
oh-my-zsh
是一个工具,它能够帮助用户更轻松的启用 zsh 插件,在预制的主题间切换,快速自定义 shell。
安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
插件为 zsh 提供了无限可能。
git
默认安装,会提示分支等信息
语义高亮 zsh-syntax-highlighting
# git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
自动提示 zsh-autosuggestions
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
自动跳转 autojump
# 安装autojump brew install autojump # 在~/.zshrc中添加 [ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh