发布于 

MIT Missing Semester

计算机教育中缺失的一课

资料:官方讲义仓库

中文:讲义双语字幕

课程概览与 Shell

一些类Unix shell的简单命令,包括重定向输入输出流和管道符

Shell 工具和脚本

bash作为脚本语言的一些基础操作和几种常用的shell工具

编辑器(Vim)

Vim 是程序员为程序员编写的编辑器

除了 Vim,Neovim,还有模拟 Vim 的插件,比如 IdeaVim,VSCodeVim,Vimium …

  • normal
  • insert
  • replace
  • visual
    • line
    • block
  • command-line

数据整理

将某种格式存储的数据转换成另外一种格式

正则表达式调试器:https://regex101.com/

  • 流编辑器:sed
  • 列流编辑器:awk
  • 排序工具:sort
  • 统计信息:wc
  • 统计整理工具:uniq
  • 查看:catheadtail
  • 合并工具:paste
  • 计算器:bc
  • xargs 可以将输入列表转换为参数

命令行环境

如何更加“优雅”地使用命令行环境

  • Job Control(任务控制)
    • 信号机制
  • Terminal Multiplexers(终端复用器)
    • tmux
  • Dotfiles(配置文件)
    • alias
    • ~/.bashrc~/.vimrc~/.config/...
    • 使用dotfiles仓库符号链接进行统一管理
  • Remote Machines(远程设备)
    • ssh
    • ssh-keygen
    • ssh-copy-id
    • scp
    • rsync
    • ~/.ssh/config
  • Shells & Frameworks(Shell和框架)
  • Terminal Emulators(终端模拟器)

版本控制(Git)

Git Version Control System

官方手册:https://git-scm.com/book/zh/v2

  • 数据模型
  • 分支、合并
  • 手动处理合并冲突
  • 远程仓库

Git 本地的三个工作区域:

  • 工作目录 (Working Directory)
  • 暂存区 (Stage/Index)
  • 资源库 (Repository/Git Directory)

文件的四种状态:

  • Untracked: 未跟踪,不参与版本控制,git add 变为 Staged
  • Staged: 暂存状态,git commit 同步到库中
  • Unmodified: 修改后变为Modified,git rm 移出版本库,变为Untracked
  • Modified: 文件已修改,git add 进入staged状态, git checkout 丢弃修改

调试及性能分析

  • 打印调试
  • 日志记录
  • 调试器
  • 专门工具
  • 静态分析
  • 性能分析

元编程

这里的“元编程” ,不是指用于操作程序的程序,更像是自动化流程

  • 构建系统
    • make
  • 依赖管理
  • 持续集成系统

安全和密码学

  • 散列函数
  • 密钥生成函数
    • 对称加密
    • 非对称加密
    • 混合加密

大杂烩

  • 修改键位映射
  • 守护进程
  • FUSE(用户空间文件系统)
  • 备份
  • API(应用程序接口)
  • 常见命令行标志参数及模式
  • 窗口管理器
  • VPN
  • Markdown
  • Hammerspoon (macOS桌面自动化)
  • 开机引导以及 Live USB
  • Docker, Vagrant, VMs, Cloud, OpenStack
  • 交互式记事本编程
  • GitHub

提问&回答