本文主要介紹終端和 shell 的一些基本概念,並着重介紹了 zsh - 目前最強大方便的 shell 以及它的配置,希望可以提高我們碼農的工作效率。
終端
終端 Terminal 是一種用於與計算機進行交互的輸入輸出設備,它本身不提供運算處理功能。在大型機和小型機的時代,計算機是非常昂貴巨大的。通常計算機會被安置在單獨的房間裏,而操作計算機的人在另外的房間通過終端設備 TTY / CONSOLE 與計算機進行交互。現在由於個人電腦的普及,基本很難看到專門的終端設備。負責輸入的鍵盤,負責輸出的顯示器,再加上一個與硬件基本無關的虛擬終端終端模擬器這三者共同構成了傳統意義上的終端。
TIPS: 埃尼阿克埃尼阿克
ENIAC是世界上第一台現代電子數字計算機,誕生於1946 年 2 月 14 號美國賓夕法尼亞大學。
它長 30.48 米,寬 6 米,高 2.4 米,佔地面積約 170 平方米,30 個操作枱,重達 30 英噸,耗電量 150 千瓦,造價 48 萬美元。計算速度是每秒 5000 次加法或 400 次乘法。
終端 TTY
TTY 是 TeleTYpe 的縮寫,叫電傳打字機,一個類似電報機的設備。這個也就是最早期的終端。

它原本的用途是在電報線路上收發電報,但鑑於它既能通過鍵盤發送信號,又能將接受到的信號打印在紙帶上,最最最重要的是價格低廉,它就被 Unix 的創始人 Ken Thompson 和 Dennis Ritchie 用於連接到計算機上,讓多個用户都可以通過終端登陸操作主機,所以它就成了第一個 Unix 終端。
控制枱 CONSOLE
CONSOLE 是控制枱的意思,它是一種特殊的終端,特殊的地方是它和計算機主體是一體的,是專門用來管理主機的,只能給系統管理員使用,有着比普通終端高的權限。一般一台計算機上只有一個控制枱,但可以連很多終端。 CONSOLE 和 TTY 都算是終端,硬要説區別就是親兒子和乾兒子或 root 和非 root 用户的關係。
終端模擬器
終端模擬器 Terminal Emulator 也叫終端仿真器。它加上鍵盤和顯示器共同構建了以前的終端。它的工作流程如下:
- 捕獲鍵盤輸入( STDIN )
- 將輸入發送給命令行程序( SHELL )
- 拿到命令行程序的輸出結果( STDOUT 和 STDERR )
- 調用圖形接口,將輸出結果渲染到顯示器上
終端窗口和虛擬控制枱
終端模擬器分為兩種,一種是終端窗口,就是我們一般運行在圖形用户界面裏的,像 GNU/Linux 下的 gnome-termial, mac 下的 iterm2, windows 下的 wsl-terminal。另一種叫虛擬控制枱,像 Ubuntu 系統中,通過 Ctrl+Alt+F1,F2...F6 等組合鍵可以切換出全屏的終端界面( Ctrl+Alt+F7 可以切回圖形界面),這就是虛擬控制枱。它是直接由操作系統內核直接提供的。
實用終端
mac 神器 - iterm2
-
安裝
# 通過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
shell 也叫命令解釋器,它通過解析命令來調用系統調用和 API 來操作內核,進而讀寫硬件完成任務。
它可以通過圖形化 shell,像 windows 裏的文件管理器 Explorer.exe, Linux 的桌面環境 GNOME, KDE 等完成操作,也可以通過命令行 shell,像 windows 裏的 cmd.exe, Linux 裏的 bash, zsh 等。
zsh
bash 在 2019 年前幾乎是所有類型操作系統的默認 shell,但是 2019 年 Mac 的 Catalina 將 zsh 設置為默認的 shell。為什麼?因為 zsh 完全兼容 bash,並且提供更多的功能。它提供以下功能:
- 內置的拼寫校正
- 改進的命令行完成
- 主題支持
- 各種各樣的可加載插件
其安裝和切換命令如下:
# 安裝
brew install zsh
# 切換
chsh -s /bin/zsh
oh-my-zsh
oh-my-zsh 是一個工具,它可以幫助用户更輕鬆的啓用 zsh 插件,在預製的主題間切換,快速自定義 shell。
-
安裝
oh-my-zshsh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" - 配置主題 annoster
插件
插件為 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-autosuggestionsgit 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
參考文獻
- 命令行界面 (CLI)、終端 (Terminal)、Shell、TTY,傻傻分不清楚?
- iterm2官網
- iTerm2 + Oh My Zsh 打造舒適終端體驗
- Mac終端工具