我用了十年终端,今天才真正学会使用它

📅 2026/7/4 4:14:38
我用了十年终端,今天才真正学会使用它
上个月我看到一位资深开发者在90秒内修复了一个线上的问题让我深受震撼。因为他没有谷歌搜索没有翻看小抄只是流畅地在终端里敲击就像在进行一场对话。我原以为他有什么秘密武器结果没有。跟他交流玩才知道他只是比我更懂终端。我意识到大多数开发者使用终端的方式和他们再网上看的教程里学到的一模一样输入命令回车重复。这确实能工作但很慢。日积月累那些微小的延迟变成了真正的阻力。真正让我恍然大悟的是这个认知终端不仅仅是一个工具它是一个环境。一旦你开始把它当作环境来对待一切都会改变。下面是我在日常工作中真正用到的技巧分享给大家。停止重复输入你已经敲过的命令sudo !!这个技巧让我在刚学会时惊叹不已。你刚运行了一个长命令因为权限问题失败了。现在你想用sudo重试它不需要按上箭头然后把光标移动到开头增加sudo只需运行sudo !!。!!会展开成你完整的最后一条命令。就两个字符不用重新敲整个命令。mkdir my-project cd !$!$给你的是上一条命令的最后一个参数。当你连续操作时这个非常有用。你刚创建了一个文件夹并跳进去却不用再输入文件夹名。我一天大概要用!$二十次虽然小但它消除的摩擦感是实实在在的。CtrlR是你的终端搜索引擎大家都知道上箭头循环浏览历史记录但那是线性的你得不停地按上直到找到想要的。CtrlR进行反向搜索贯穿你的整个历史记录。开始输入任何命令的片段它就会找到最近匹配的那个。按CtrlR再次循环到更老的匹配项回车运行它按Esc则可以先编辑。这一个改变每天就能为你节省几分钟。如果你频繁使用长docker、git或ssh命令你会惊讶于自己以前是怎么忍受的。顺便说一句增加你的历史记录大小这样你才能真正搜索得更远。把下面这些加到你的.bashrc或.zshrcHISTSIZE1000HISTFILESIZE2000HISTCONTROLignoredups:erasedups现在你的历史记录能回溯一万条命令并且不会因为重复而混乱。搜索才能真正发挥作用。即时修复拼写错误你刚运行了一个带拼写错误的命令。经典的例子git chekcout main。与其按上箭头手动编辑不如用^old^new替换技巧^chekcout^checkout它会将上一条命令中的chekcout替换为checkout并立即运行。当你团队成员看到并停下来问“等等你怎么做到的”你会很乐意解释。别名免费的生产力工具每个你一周敲超过五次的命令都值得一个别名。别名存放在你的~/.bashrc(Linux) 或~/.zshrc(macOS) 文件里。下面是我实际在用的“起手式”# 导航alias..cd ..alias...cd ../..alias~cd ~alias-- -cd -# 回到上一个目录# 列出文件aliasllls -alFaliasltls -ltr# 按时间排序最新的在最后# 安全网覆盖前请求确认aliasrmrm -ialiascpcp -ialiasmvmv -i# Git 快捷aliasgsgit statusaliasgagit add .aliasgcgit commit -maliasgpgit pushaliasglgit log --oneline --graph --decoratealiasgcogit checkout# Docker 快捷aliasdpsdocker psaliasdcdocker-composealiasdcudocker-compose up -daliasdcddocker-compose down# 开发快捷aliasninpm installaliasnrdnpm run devaliasnrbnpm run build# 重载 shell 配置aliasreloadsource ~/.bashrc添加完后运行source ~/.bashrc或者你添加了reload别名后用这个就能立即生效。alias -- -cd -这个命令能带你回到上一个目录就像浏览器的后退按钮我每天都用。你可能忽略的键盘快捷键终端里充满了大多数开发者从未学过的键盘快捷键。这些是我常用的一些Ctrl A→ 跳到行首Ctrl E→ 跳到行尾Ctrl W→ 向后删除一个词Ctrl U→ 清除光标前所有内容Ctrl K→ 清除光标后所有内容Ctrl L→ 清屏Ctrl C→ 取消当前命令Ctrl Z→ 挂起当前进程用fg恢复Alt F→ 向前跳一个词Alt B→ 向后跳一个词我最常用的组合是CtrlA跳到行首然后CtrlK删除整行比一直按退格键快多了。AltF和AltB在编辑长命令时非常有用不用再按住箭头键了。tmux别让你的工作随终端窗口消失如果你在远程服务器上工作或者只是想要多个终端窗格而不用切换窗口tmux 就是那个改变一切的工具。它重要的原因在于没有 tmux如果你的 SSH 连接断开你的进程就会终止。有了 tmux它会持续运行。你重新连接后可以精确地回到你离开的地方。基本 tmux 工作流# 启动一个命名的会话tmux new-smyproject# 从会话分离所有内容继续运行Ctrl B,thenD# 稍后重新连接tmux attach-tmyproject# 列出所有会话tmuxls在 tmux 内部你可以把终端分割成窗格Ctrl B, then %→ 垂直分割Ctrl B, then → 水平分割Ctrl B, then 方向键→ 在窗格间切换你可以让服务器运行在一个窗格日志流在另一个编辑器在第三个——全都在同一个窗口里。我见过开发者开了五个浏览器标签页的SSH会话一旦他们看到 tmux就再也回不去了。让cd ls变成一个命令这是一个你会注意到“先cd到某处紧接着ls”这个模式有多频繁的命令。把它们变成一个函数加到你的.bashrc或.zshrcfunctioncl(){cd$1ls-la}现在cl my-project会切换进文件夹并立刻列出其内容。fzf让一切变得可模糊搜索的工具如果要从这个列表中只选一个工具安装那就是fzf。fzf 是一个命令行模糊查找器。它可以搜索文件、命令历史、git 分支、运行的进程——任何列表形式的东西。安装后brew install fzf或sudo apt install fzfCtrlR会变成一个超级强大的交互式历史搜索而不是简单的反向搜索。你能立刻看到所有匹配项实时过滤用箭头浏览。你也可以把任何东西通过管道输送给它# 模糊搜索并打开一个文件vim$(fzf)# 交互式切换 git 分支gitcheckout$(gitbranch|fzf)# 交互式终止进程kill$(psaux|fzf|awk{print $2})管道到pbcopy/xclip告别手动选中文本你想把命令输出复制到剪贴板。常规方式运行命令手动选中输出右键复制。终端的方式# macOScatsome-file.txt|pbcopy# Linuxcatsome-file.txt|xclip-selectionclipboard现在输出瞬间就在剪贴板里了不需要鼠标。这对复制 SSH 密钥、API 令牌、构建输出或任何需要粘贴到别处的长字符串都极其有用。真正的转变我逐渐意识到大多数开发者把终端当作自动售货机——输入命令得到输出重复。但那些在终端里看起来毫不费力的开发者和终端建立了一种关系。他们花时间定制它学习它的快捷键投资于那些能随着时间带来复利的小工具。这些技巧没有一个很难大约需要几分钟来设置。回报是数月乃至数年更流畅的工作。从CtrlR开始如果你还没在用的话。或者设置别名。如果你想要单个最大的升级就装 fzf。终端是一个工具。但工具会回应熟悉它的双手。