本文主要介紹終端和 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