MIT Missing Semester:那些没人教但你必须会的工具
本文最后更新于 32 天前,如有失效请评论区留言。

最近在跟 MIT 的 Missing Semester 课,说实话这课名起得就很直白——”缺失的课程”,意思就是学校里那些没人教但你天天在用的工具。Shell、Git、Vim、tmux、正则表达式… 这些东西你迟早得会,不如早点系统学一下。

为什么这门课重要

我在学 CS61A 的时候就发现了,课程默认你会用终端、会用 Git 提交作业。但是学校真的没教过这些啊… 幸好 MIT 把这门课公开了,而且内容非常实用,不是那种念 PPT 的水课。

“The missing semester of your CS education” — 这门课的 slogan 简直太真实了

Shell:你和电脑对话的方式

很多人觉得终端很可怕,黑乎乎的窗口、看不懂的命令。但其实 Shell 就是你和电脑之间的”直接通道”,比点鼠标快多了。

几个我觉得最有用的命令:

  • find — 在文件系统里搜索文件,比 GUI 的搜索快得多
  • grep — 在文件内容里找关键词,写代码调试必备
  • xargs — 把前一个命令的输出当成后一个命令的参数
  • pipe (|) — 把命令串起来,Unix 哲学的核心

举个实际例子,假如你想找到项目里所有包含 “TODO” 的 Python 文件:

find . -name "*.py" -exec grep -l "TODO" {} ;

一行搞定,不用一个个文件打开看。

Git:不只是 commit 和 push

之前写过一篇 Git Workflow 的文章,但 Missing Semester 里讲的更底层一些。比如 git rebasegit reflog 这两个东西,很多人不敢用,但其实理解了就很安全。

关于 git rebase,我的理解是:它把你的分支”搬到”另一个分支的最新提交上,让历史变得线性。听起来很危险?其实只要记住一个原则——

不要 rebase 已经推送到远程的分支,只 rebase 本地的。这样就不会出问题。

git reflog 就是你的”后悔药”。不管你做了什么骚操作(reset、rebase、甚至误删分支),reflog 都记录着所有 HEAD 的移动历史。找到对应的 commit hash,checkout 回去就行。

tmux:终端里的”多窗口”

这个工具我之前完全没听过,用了之后发现真香。简单说,tmux 让你在一个终端窗口里开多个面板,还能断开 SSH 之后保持会话不中断。

最常用的场景:SSH 到服务器,开了一个长时间运行的任务,结果网断了——没有 tmux 的话任务直接没了。有了 tmux,重新连上 tmux attach 就回来了。

# 新建会话
tmux new -s mysession

# 断开后重新连接
tmux attach -t mysession

# 分屏
Ctrl+b %  # 左右分屏
Ctrl+b "  # 上下分屏

正则表达式:看起来像乱码但超好用

正则表达式(Regex)可能是最让人又爱又恨的工具了。第一次看 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$ 这种东西,谁不迷糊?

但你不需要记住所有语法,常用的就那么几个:

  • . — 匹配任意单个字符
  • * — 前一个字符出现 0 次或多次
  • + — 前一个字符出现 1 次或多次
  • d — 匹配数字
  • w — 匹配字母和数字
  • ^$ — 行首和行尾

我的经验是,先从简单的开始,比如 grep -E "error|warning" log.txt,然后慢慢加复杂度。不要一上来就想写一个完美的正则,那样你会疯的。

Vim:编辑器之神还是神之编辑器

Vim 的争议很大,有人说它过时了,有人说它是最好用的编辑器。我的看法是:你不需要日常用 Vim,但至少得会基本操作。因为你迟早会遇到只能用终端编辑文件的情况(比如 SSH 到服务器改配置)。

最基本的几个操作:

  • i — 进入插入模式(开始编辑)
  • Esc — 回到普通模式
  • :w — 保存
  • :q — 退出
  • :wq — 保存并退出
  • dd — 删除一行
  • /keyword — 搜索关键词

掌握了这些,至少不会出现”我被困在 Vim 里出不来了”的尴尬场面。

写在最后

Missing Semester 这门课最大的价值不是教你某个具体工具,而是让你意识到:工具是可以被系统学习的。很多人(包括之前的我)都是遇到问题才去搜一下,用完就忘。但如果你花时间系统学一遍,效率提升是指数级的。

课程链接:https://missing.csail.mit.edu/,强烈推荐过一遍。不用全部看完,挑你最不熟的部分先学就行。

版权声明:除特殊说明,博客文章均为原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇