• 终端Terminal实战


    本文主要介绍终端和 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 的缩写,叫电传打字机,一个类似电报机的设备。这个也就是最早期的终端。
    Alt text

    它原本的用途是在电报线路上收发电报,但鉴于它既能通过键盘发送信号,又能将接受到的信号打印在纸带上,最最最重要的是价格低廉,它就被 Unix 的创始人 Ken Thompson 和 Dennis Ritchie 用于连接到计算机上,让多个用户都可以通过终端登陆操作主机,所以它就成了第一个 Unix 终端。

    控制台 CONSOLE

    CONSOLE 是控制台的意思,它是一种特殊的终端,特殊的地方是它和计算机主体是一体的,是专门用来管理主机的,只能给系统管理员使用,有着比普通终端高的权限。一般一台计算机上只有一个控制台,但可以连很多终端。 CONSOLETTY 都算是终端,硬要说区别就是亲儿子和干儿子或 root 和非 root 用户的关系。

    终端模拟器

    终端模拟器 Terminal Emulator 也叫终端仿真器。它加上键盘和显示器共同构建了以前的终端。它的工作流程如下:

    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 可以切回图形界面),这就是虚拟控制台。它是直接由操作系统内核直接提供的。

    实用终端

    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终端工具
  • 相关阅读:
    【转载】VM Role实战: Azure 平台上传虚拟机C 盘不能大于64GB
    Asp.Net MVC项目编译View
    Notepad测试数据库连接
    【转载】使用远程桌面Remote desktop访问Azure虚拟机
    【转载】Azure Blob Storage 云存储中实现大文件分块断点续传
    jQuery Mobile 笔记(1) jQuery Mobile页面结构
    【转载】使用Azure SDK 1.6 ,VM Role里加载Azure Drive方案
    大把大把的时间 你要怎么把握啊
    asp.net 本质论学习
    在客户端用javascript或VBSCRIPT生成WORD文档(转)
  • 原文地址:https://www.cnblogs.com/happy-island/p/14280227.html
Copyright © 2020-2023  润新知