终端效率翻倍:8个被低估的Linux命令
你是不是也这样:每天打开终端,cd进目录,ls看文件,然后继续cd、ls、cd……
循环往复,像个莫比乌斯环。
我有个朋友在一家创业公司做后端开发,每天花2小时在终端里翻文件、找日志、改配置。后来我给他安利了几个命令,现在他15分钟搞定,剩下时间摸鱼去了。
今天分享8个真正实用的Linux命令。不是那些教科书里的基础款,而是老鸟们私藏的效率神器。
1. fd:比find快10倍的搜索工具
find命令谁不会?但你知道它有多慢吗?
在十万级文件的项目里,find . -name "*.py" 可能要跑好几秒。fd 是Rust写的替代品,默认开启彩色输出、忽略.gitignore,速度飞起。
# 传统find
find . -name "*.json" -type f
# fd,简洁多了
fd ".json$"
# 只看前5个结果
fd ".py$" -d 3
# 配合grep,找包含特定字符串的文件
fd -x grep -l "TODO" .
安装:sudo apt install fd-find,然后用fdfind或别名alias fd=fd-find。
实际场景:上次我找一个配置项在哪,项目有8000个文件,find跑了12秒,fd用了0.3秒。
2. ripgrep(rg):代码搜索的终极武器
如果你还在用grep搜代码,真的该试试rg。
它是专门为源代码设计的搜索工具,自动忽略.gitignore里的文件,支持正则,速度快到离谱。
# 在项目里搜所有函数定义
rg "^func "
# 只搜Go文件
rg "database" --type go
# 显示匹配行号
rg "TODO" -n
# 替换预览(安全模式)
rg -l "old_pattern" | xargs sed -i 's/old_pattern/new_pattern/g'
安装:sudo apt install ripgrep
实际场景:重构代码时,我要把项目中所有getUserInfo改成fetchUserProfile。rg先找出所有匹配文件,确认无误后再批量替换。以前手动找要半小时,现在3分钟。
3. bat:带语法高亮的cat
cat命令的输出是纯文本,没有颜色,没有行号,没有git状态提示。
bat把这些全加了进去,而且兼容cat的参数。
# 替代cat,自带语法高亮
bat config.yaml
# 显示行号和git修改标记
bat -n --git main.go
# 复制到剪贴板(需配置)
bat file.txt | xclip
# 对比两个文件的差异
bat --diff file_old.txt file_new.txt
安装:sudo apt install bat
实际场景:看配置文件的时候,bat的高亮让key-value结构一目了然。特别是看JSON和YAML,再也不用眯着眼睛数括号了。
4. jq:命令行里的JSON手术刀
JSON数据在终端里就是一坨乱码。jq能把它切成你想要的形状。
# 格式化JSON
curl api.example.com/data | jq '.'
# 提取特定字段
curl api.example.com/users | jq '.[] | {name, email}'
# 过滤条件
jq '.users[] | select(.age > 25)' data.json
# 转换数组为CSV
jq -r '.[] | [.id, .name] | @csv' data.json
安装:sudo apt install jq
实际场景:调试API接口时,curl返回的JSON经常是压缩成一行的。用jq格式化后,一眼就能看出数据结构。配合管道,还能做各种筛选和转换。
5. entr:文件变化时的自动化执行
这个命令可能很多人没听过,但它能改变你的工作流。
entr的作用是:当指定文件发生变化时,自动执行某个命令。
# 文件变动时重新运行测试
ls *.go | entr go test ./...
# 监听CSS文件,自动编译
ls *.scss | entr sass style.scss style.css
# 配合watchdog做实时预览
ls templates/*.html | entr python -m http.server 8000
安装:sudo apt install entr
实际场景:写前端项目时,每次改完CSS都要手动刷新浏览器。装了entr之后,scss文件一保存,sass自动编译,浏览器热更新同步触发。开发体验提升不止一个档次。
6. fzf:模糊搜索的瑞士军刀
fzf是通用的命令行模糊搜索工具,可以搜索文件、历史命令、进程等等。
# 交互式文件搜索
fzf
# 搜索历史命令(按Ctrl+R增强版)
history | fzf
# 在管道中使用
ls -la | fzf --preview 'head -20 {}'
# 结合rg,搜索代码内容
rg --files | fzf | xargs code
安装:sudo apt install fzf,记得运行fzf --install配置shell绑定。
实际场景:项目里有几十个配置文件,每次改配置都要先找到对应的文件名。用ls *.yaml | fzf,输入关键字就能瞬间定位,比tab补全还快。
7. parallel:让CPU满血运行
单核跑任务?太浪费了。GNU parallel可以把一个命令并行化,充分利用多核CPU。
# 串行处理10个文件(慢)
for f in *.jpg; do convert "$f" "${f%.jpg}.png"; done
# 并行处理(快N倍)
ls *.jpg | parallel convert {} {.}.png
# 控制并发数
ls *.log | parallel -j 4 "gzip {}"
# 结合find,搜索+处理一条龙
find . -name "*.tmp" | parallel rm {}
安装:sudo apt install parallel
实际场景:有一次要处理500张截图转PDF,串行跑了40分钟。用parallel开了8个线程,3分钟搞定。老板以为我换了台新服务器。
8. tmux:终端里的多窗口管理器
tmux让你在一个终端窗口里开多个面板,断线重连也不丢会话。
# 启动tmux会话
tmux new -s work
# 分割窗口
Ctrl+b % (垂直分割)
Ctrl+b " (水平分割)
# 切换面板
Ctrl+b 方向键
# 退出但不关闭会话
Ctrl+b d
# 重新连接
tmux attach -t work
安装:sudo apt install tmux
实际场景:SSH连远程服务器开发,网络一断,所有进程全挂。用了tmux之后,断开重连,会话还在,程序还在跑,从容得像什么都没发生过。
总结:挑2-3个先用起来
8个命令全记住不现实。我的建议是:
- 立刻装fd + rg:搜索效率立竿见影
- 加上jq:处理API响应不再头疼
- 养成tmux习惯:远程开发必备
其他的,慢慢来。先用起来,再深入。
终端不是用来背命令的,是用来干活的。工具越多越好,但用得顺手的,两三个就够了。
你现在最常用的终端命令是什么?评论区聊聊。