终端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终端工具
相关文章
相关标签/搜索