MIT Missing Semester
计算机教育中缺失的一课
课程概览与 Shell
一些类Unix shell的简单命令,包括重定向输入输出流和管道符
Shell 工具和脚本
bash作为脚本语言的一些基础操作和几种常用的shell工具
- 查找文件:
find、fd - 查找代码:
grep、ack、ag、rg - 查找shell命令:
history | grep xxx、Ctrl + Rfzf、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(远程设备)
sshssh-keygenssh-copy-idscprsync~/.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