当前位置:首页>Linux>Linux 命令行效率指南:20 个让你快到飞起的技巧

Linux 命令行效率指南:20 个让你快到飞起的技巧

  • 2026-10-11 08:29:12
Linux 命令行效率指南:20 个让你快到飞起的技巧

同事一行命令搞定的事,你要敲 10 分钟?看完这篇,你的终端操作速度至少翻倍。


⌨️ 基础提速:快捷键篇

这些快捷键大部分人不知道,但用过就回不去了:

光标移动

Ctrl + A    → 跳到行首
Ctrl + E    → 跳到行尾
Ctrl + W    → 删除前一个单词
Ctrl + U    → 删除光标前所有内容
Ctrl + K    → 删除光标后所有内容
Ctrl + Y    → 粘贴刚才删除的内容
Alt  + B    → 向前跳一个单词
Alt  + F    → 向后跳一个单词

历史命令

Ctrl + R    → 搜索历史命令(超高频!)
              输入关键字就能模糊匹配
!!          → 执行上一条命令
!$          → 上一条命令的最后一个参数
sudo !!     → 用 sudo 重新执行上一条命令

示例:

$ cat /etc/shadow
Permission denied

$ sudo !!
# 等于 sudo cat /etc/shadow

进程控制

Ctrl + C    → 中断当前命令
Ctrl + Z    → 暂停当前命令(fg 恢复)
Ctrl + D    → 退出当前终端
Ctrl + L    → 清屏(比 clear 快)

🗡️ 实战技巧:日常高频操作

技巧 1:快速查找文件

# find 太慢?用 fd(现代版 find)
$ fd "*.log" /var/log

# 或者用 locate(从索引查,秒出结果)
$ locate nginx.conf

技巧 2:文本搜索三件套

# grep:基础搜索
$ grep -rn "ERROR" /var/log/app/

# rg(ripgrep):更快的 grep
$ rg "NullPointerException" --type java

# ag(The Silver Searcher):也很快
$ ag "TODO" --java

技巧 3:批量操作文件

# 把所有 .txt 改成 .md
$ for f in *.txt; do mv "$f""${f%.txt}.md"; done

# 批量删除 7 天前的日志
$ find /var/log -name "*.log" -mtime +7 -delete

# 批量替换文件中的字符串
$ sed -i 's/old_string/new_string/g' *.conf

技巧 4:watch 持续监控

# 每 2 秒刷新一次,查看磁盘变化
$ watch -n 2 df -h

# 监控某个进程的内存占用
$ watch -n 1 "ps aux | grep java | grep -v grep"

# 监控日志增长
$ tail -f /var/log/app/app.log

技巧 5:xargs 批量处理

# 找到所有 Java 文件并统计行数
$ find . -name "*.java" | xargs wc -l

# 批量杀死某个进程
$ ps aux | grep zombie_process | grep -v grep | awk '{print $2}' | xargs kill -9

# 并行执行(-P 指定并发数)
$ find . -name "*.png" | xargs -P 4 -I {} convert {} -resize 50% {}

🛡️ 文本处理三剑客:grep + sed + awk

grep:过滤行

# 基础搜索
$ grep "ERROR" app.log

# 显示前后 3 行上下文
$ grep -C 3 "OutOfMemoryError" app.log

# 统计出现次数
$ grep -c "ERROR" app.log

# 排除某些内容
$ grep "ERROR" app.log | grep -v "HealthCheck"

# 正则匹配
$ grep -E "error|warn|fatal" app.log -i

sed:替换和编辑

# 替换(不修改原文件,只输出)
$ sed 's/http/https/g' config.yml

# 替换(直接修改文件)
$ sed -i 's/localhost/192.168.1.100/g' config.yml

# 删除空行
$ sed '/^$/d' file.txt

# 只看第 10-20 行
$ sed -n '10,20p' file.txt

# 在第 5 行后插入内容
$ sed '5a\新增的一行内容' file.txt

awk:列处理神器

# 打印第 2 列
$ awk '{print $2}' file.txt

# 打印 CSV 的第 1 和第 3 列
$ awk -F',''{print $1, $3}' data.csv

# 统计日志中每个状态码的出现次数
$ awk '{print $9}' access.log | sort | uniq -c | sort -rn
# 输出:
#  15234 200
#   3021 304
#    892 404
#    156 500

# 计算某列的总和
$ awk '{sum += $3} END {print sum}' data.txt

# 过滤特定条件的行
$ awk '$3 > 1000 {print $1, $3}' data.txt

⚔️ 网络排查常用命令

# 查看端口占用
$ lsof -i :8080
$ ss -tlnp | grep 8080

# 测试端口连通性
$ telnet 192.168.1.100 3306
$ nc -zv 192.168.1.100 3306

# 查看网络连接状态
$ ss -s
# 输出各种状态的连接数量

# DNS 查询
$ nslookup www.example.com
$ dig www.example.com

# 下载文件
$ wget https://example.com/file.tar.gz
$ curl -O https://example.com/file.tar.gz

# 查看 HTTP 响应头
$ curl -I https://www.example.com

# 带参数的 POST 请求
$ curl -X POST -H "Content-Type: application/json" \
  -d '{"name":"test"}' https://api.example.com/users

🧰 系统排查常用命令

# CPU 和内存概览
$ top             # 实时监控
$ htop            # 更好看的 top

# 内存详情
$ free -h         # 内存使用
$ vmstat 1        # 每秒刷新一次

# 磁盘
$ df -h           # 磁盘空间
$ du -sh *        # 当前目录各文件夹大小
$ du -sh * | sort -rh | head -10  # Top 10 大文件夹

# IO
$ iostat -x 1     # 磁盘 IO 详情
$ iotop           # IO 版的 top

# 进程
$ ps aux --sort=-%mem | head -10   # 内存 Top 10
$ ps aux --sort=-%cpu | head -10   # CPU Top 10

⚡ 高级技巧

技巧 1:命令组合的管道艺术

# 找出访问量最高的 10 个 IP
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

# 实时统计接口 QPS
$ tail -f access.log | awk '{count++} 
  END{print count/NR, "req/s"}'
 RS='\n'

# 找到占用磁盘最大的 10 个文件
$ find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -10

技巧 2:后台运行 & 保活

# 后台运行(关掉终端也不停)
$ nohup java -jar app.jar > app.log 2>&1 &

# 更好的选择:screen
$ screen -S myapp
$ java -jar app.jar
# Ctrl+A, D 断开(进程继续跑)
$ screen -r myapp  # 重新连回来

# 最佳选择:tmux
$ tmux new -s work
# 干活...
# Ctrl+B, D 断开
$ tmux attach -t work  # 重新连回来

技巧 3:快速创建别名

# 在 ~/.bashrc 或 ~/.zshrc 中添加
alias ll='ls -alh'
alias gs='git status'
alias gp='git pull'
alias dc='docker compose'
alias k='kubectl'
alias ports='ss -tlnp'
alias myip='curl -s ifconfig.me'
alias cls='clear'

# 复杂操作也可以做成函数
mkcd() { mkdir -p "$1" && cd"$1"; }

📊 常用场景速查表

我想…
命令
找文件
find . -name "*.log"
 或 fd "*.log"
搜内容
grep -rn "keyword" .
 或 rg "keyword"
看大文件前几行
head -100 big.log
实时看日志
tail -f app.log
看磁盘满了没
df -h
找最大的文件
du -sh * | sort -rh | head
看谁占了端口
lsof -i :8080
杀进程
kill -9 <pid>
后台跑命令
nohup cmd &
 或 tmux
定时任务
crontab -e

🥋 今日心法

"命令行不是老古董,它是程序员手里最快的武器。GUI 能做的事,命令行都能做得更快;命令行能做的事,GUI 未必能做。"

每天学一个新命令,一年后你就是团队里的"终端魔法师"。


Coding猿击术 —— 程序员的修炼手册

最新文章

随机文章