跳到主要内容

Bash 命令速查:Linux 命令按场景查的实用指南

从 cd、ls、grep、find 到管道、重定向、变量和循环,这篇按真实场景整理 Bash 与 Linux 常用命令,附脚本基础和一行命令例子,翻一次就能上手。

发布于 作者 李雷
#bash #linux #shell #命令行 #脚本

Bash 命令速查:Linux 命令按场景查的实用指南

终端里敲命令这件事,熟了像呼吸,生疏起来又处处卡壳。我自己常年在服务器上排查问题,最大的体会是:不需要把几百条命令全背下来,需要的是按当下的场景,快速翻到那一条。下面这份整理就按场景来,从最常用的目录操作,到查找、管道、变量、循环和脚本基础,一路串下来。

移动和查看:cd、ls、cat

进出目录靠 cd,cd - 跳回上一个目录,cd ~ 回家目录。看当前位置用 pwd。列文件用 ls,我几乎只敲 ls -lah:-l 长格式,-a 显示隐藏文件,-h 把字节数换成人能读的 KB、MB。看文件内容,短的用 cat,长的用 less(按 q 退出,/关键词 向下搜),只看头尾用 head -n 20tail -n 50。盯着实时日志就 tail -f app.log

查找:grep 和 find

这两个是排查问题的主力。grep 在内容里搜文本,find 按文件属性搜文件。

最常用的一条是在当前目录递归搜某段文字:

grep -r "connection timeout" .
grep -rn "TODO" src/        # -n 带行号
grep -ri "error" logs/      # -i 忽略大小写

find 则按名字、类型、时间筛文件:

find . -name "*.log"              # 当前目录下所有 .log
find . -type f -mtime -1          # 最近一天改动过的文件
find . -name "*.tmp" -delete      # 找到并删掉临时文件

记不住具体选项很正常,把 Bash 速查表 开在旁边,搜「find」或「grep」直接拷例子,比翻 man 手册快得多。

管道和重定向:把命令串起来

Bash 真正的威力在于把小命令拼成流水线。管道 | 把前一条的输出喂给后一条:

ps aux | grep nginx              # 找 nginx 进程
cat access.log | grep " 500 " | wc -l   # 数有多少条 500 响应
history | tail -20               # 最近 20 条历史命令

重定向则控制输出去哪。> 覆盖写入文件,>> 追加,2> 单独收错误输出,2>&1 把错误并到标准输出,/dev/null 是丢弃一切的黑洞:

./build.sh > build.log 2>&1      # 正常和错误都写进同一个日志
command 2>/dev/null              # 只丢掉报错,保留正常输出

变量和循环:脚本的骨架

变量赋值不留空格:name="toolora",取值用 "$name",加引号是为了防止值里有空格或特殊字符出岔子。给个默认值用 ${name:-默认}

循环最常见的是 for 遍历:

for f in *.png; do
  echo "处理 $f"
done

按行读文件,要注意一个高频坑:别用 cat file | while read,那样循环跑在子 Shell 里,出了循环你加的计数器全归零。用重定向写法才稳:

count=0
while read -r line; do
  count=$((count+1))
done < access.log
echo "共 $count 行"

脚本基础:从一行命令到 .sh

把命令存成脚本,第一行写 #!/usr/bin/env bash 声明解释器。我个人养成的反射是,脚本顶上永远先写一行:

set -euo pipefail

-e 出错就停,-u 用未定义变量就报错,pipefail 让管道里任意一条失败都算整条失败。没有最后这个,curl 坏地址 | tee out.log 会照样报成功,坑过太多人。给脚本传参用 $1$2,$@ 是全部参数,$? 是上一条命令的退出码(0 表示成功)。

我常踩的一个坑

[[ ]] 里比较数字时,千万别用 >[[ "5" > "10" ]] 的结果是真,因为它在按字符串比大小,"5" 的字典序确实排在 "10" 后面。比数字要用算术写法 (( 5 > 10 )),这才是假。这个坑我自己第一次中招时盯着屏幕看了十分钟,完全没往字符串比较上想。

把速查当工作台

Bash 之外,文本处理还有更专精的搭档。grep 负责找行,真要切字段、批量替换,就交给 awksed。这两个的常用写法可以翻 awk 和 sed 速查表,和 Bash 速查表配合着用,日常运维里大半的文本活儿都能现查现用,不必死记。

命令行的熟练度不是一天攒出来的,但有一张按场景组织、能搜能拷的速查表在手,你就能把精力留给真正要解决的问题,而不是耗在「那个选项到底是 -r 还是 -R」上。


Made by Toolora · Updated 2026-06-13