MIT Missing Semester
计算机教育中缺失的一课
课程概览与 Shell
一些类Unix shell的简单命令,包括重定向输入输出流和管道符
Shell 工具和脚本
bash作为脚本语言的一些基础操作和几种常用的shell工具
- 查找文件:
find
、fd
- 查找代码:
grep
、ack
、ag
、rg
- 查找shell命令:
history | grep xxx
、Ctrl + R
fzf
、fish
、 zsh-autosuggestions
- 目录导航:
fasd
、autojump
、tree
、broot
、nnn
、ranger
编辑器(Vim)
Vim 是程序员为程序员编写的编辑器
除了 Vim,Neovim,还有模拟 Vim 的插件,比如 IdeaVim,VSCodeVim,Vimium …
- normal
- insert
- replace
- visual
- line
- block
- command-line
数据整理
将某种格式存储的数据转换成另外一种格式
正则表达式调试器:https://regex101.com/
- 流编辑器:
sed
- 列流编辑器:
awk
- 排序工具:
sort
- 统计信息:
wc
- 统计整理工具:
uniq
- 查看:
cat
、head
、tail
- 合并工具:
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