命令行工作的效率往往体现在对“重复性操作”的压缩上。以下几个技巧不求全面,但求立刻让日常工作感到明显提升。
历史命令:别重新敲已经输过的命令
Shell 会把你执行过的命令记录在历史文件中(通常是 ~/.bash_history),并提供了多种快速复用方式:
- 直接按 ↑ 或 ↓ 方向键,可以上下翻阅历史;
- 按 Ctrl+R,然后键入几个关键词,可以反向搜索最近的匹配命令,再按一次 Ctrl+R 继续向上翻;
- 使用历史扩展符号:
!!代表上一条命令,!$代表上一条命令的最后一个参数,!*代表上一条命令的全部参数,!nginx会执行最近一条以 nginx 开头的命令; history命令会列出历史记录,结合grep可以精确定位:history | grep "docker run"。
别名:给常用命令起个短名字
在 ~/.bashrc 或 ~/.bash_aliases 中定义别名,可以把复杂的长命令缩写成易记的单词:
alias ll='ls -alF'
alias la='ls -A'
alias gs='git status'
alias gp='git pull --rebase'
alias k='kubectl'
定义好后,执行 source ~/.bashrc 使其生效。别名的优点是不用反复敲参数,也避免了拼写错误。当需要临时取消某个别名时,只需执行 unalias gs 即可。
快捷键:双手不离开主键盘区
bash 默认使用 Emacs 风格的快捷键,熟记下面几个可以显著减少方向键的使用:
Ctrl + A:跳到行首;Ctrl + E:跳到行尾;Ctrl + W:删除光标前的一个词;Ctrl + U:删除光标前到行首的所有内容;Ctrl + K:删除光标后到行尾的所有内容;Ctrl + R:如前所述,搜索历史命令;Ctrl + L:清屏,等效于clear命令;Ctrl + C:终止正在运行的前台命令;Ctrl + D:退出当前 Shell(或发送 EOF)。
这些快捷键是内建在 readline 库中的,几乎适用于所有基于 readline 的工具(如 Python shell、mysql 命令行等),一次学习,多处受益。
终端复用 tmux:让终端会话永不丢失
当你远程登录服务器时,网络断开通常意味着当前执行的命令和窗口布局全部消失。tmux 能帮你解决这个问题:
- 会话保持:启动一个 tmux 会话(
tmux new -s mysession),即使你断网或关闭终端,里面的程序仍然在后台运行。下次连接时tmux attach -t mysession可以恢复整个工作现场。 - 多窗口/多窗格:在一个 ssh 连接里创建多个窗口(
Ctrl+b c新建,Ctrl+b n/p切换),或把屏幕切分成多个窗格(Ctrl+b %竖直分割,Ctrl+b "水平分割),方便同时监控日志、编辑代码、执行命令。 - 协作与持久化:多人可以接入同一个 tmux 会话进行协作演示,或者让长时间运行的脚本在 tmux 中执行,无需担心终端关闭导致中断。
最精简的日常用法:
tmux new -s dev # 新建名为 dev 的会话,立即进入
# 在 tmux 内部正常操作,需要离开时:
Ctrl+b d # 分离会话(Detach),所有程序继续运行
# 重新连接:
tmux attach -t dev # 恢复到之前的窗口和内容
即使不刻意学习高级配置,只要熟练掌握“新建-分离-重连”三部曲,就能立刻把脆弱的一次性终端体验变成可靠的工作环境。