終端Terminal實戰

本文主要介紹終端和 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 的縮寫,叫電傳打字機,一個相似電報機的設備。這個也就是最先期的終端。
Alt textshell

它本來的用途是在電報線路上收發電報,但鑑於它既能經過鍵盤發送信號,又能將接受到的信號打印在紙帶上,最最最重要的是價格低廉,它就被 Unix 的創始人 Ken Thompson 和 Dennis Ritchie 用於鏈接到計算機上,讓多個用戶均可以經過終端登錄操做主機,因此它就成了第一個 Unix 終端。segmentfault

控制檯 CONSOLE

CONSOLE 是控制檯的意思,它是一種特殊的終端,特殊的地方是它和計算機主體是一體的,是專門用來管理主機的,只能給系統管理員使用,有着比普通終端高的權限。通常一臺計算機上只有一個控制檯,但能夠連不少終端。 CONSOLETTY 都算是終端,硬要說區別就是親兒子和乾兒子或 root 和非 root 用戶的關係。windows

終端模擬器

終端模擬器 Terminal Emulator 也叫終端仿真器。它加上鍵盤和顯示器共同構建了之前的終端。它的工做流程以下:bash

  1. 捕獲鍵盤輸入( STDIN )
  2. 將輸入發送給命令行程序( SHELL )
  3. 拿到命令行程序的輸出結果( STDOUT 和 STDERR )
  4. 調用圖形接口,將輸出結果渲染到顯示器上

終端窗口和虛擬控制檯

終端模擬器分爲兩種,一種是終端窗口,就是咱們通常運行在圖形用戶界面裏的,像 GNU/Linux 下的 gnome-termial, mac 下的 iterm2, windows 下的 wsl-terminal。另外一種叫虛擬控制檯,像 Ubuntu 系統中,經過 Ctrl+Alt+F1,F2...F6 等組合鍵能夠切換出全屏的終端界面( Ctrl+Alt+F7 能夠切回圖形界面),這就是虛擬控制檯。它是直接由操做系統內核直接提供的。curl

實用終端

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

      Alt text

    • 終端顯示行數

      Alt text

shell

shell 也叫命令解釋器,它經過解析命令來調用系統調用和 API 來操做內核,進而讀寫硬件完成任務。

Alt text

它能夠經過圖形化 shell,像 windows 裏的文件管理器 Explorer.exe, Linux 的桌面環境 GNOMEKDE 等完成操做,也能夠經過命令行 shell,像 windows 裏的 cmd.exe, Linux 裏的 bash, zsh 等。

zsh

bash 在 2019 年前幾乎是全部類型操做系統的默認 shell,可是 2019 年 Mac 的 Catalina 將 zsh 設置爲默認的 shell。爲何?由於 zsh 徹底兼容 bash,而且提供更多的功能。它提供如下功能:

  1. 內置的拼寫校訂
  2. 改進的命令行完成
  3. 主題支持
  4. 各類各樣的可加載插件

其安裝和切換命令以下:

# 安裝
brew install zsh
# 切換
chsh -s /bin/zsh

oh-my-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)"
  • 配置主題 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-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

    Alt text

參考文獻

  1. 命令行界面 (CLI)、終端 (Terminal)、Shell、TTY,傻傻分不清楚?
  2. iterm2官網
  3. iTerm2 + Oh My Zsh 打造溫馨終端體驗
  4. Mac終端工具
相關文章
相關標籤/搜索