最近后台收到不少读者私信,说网上的“Linux 命令大全”太多,动不动就是几百条,看着压力很大,真到用的时候还是想不起来。我自己也经历过这个阶段,刚接触 Linux 那会儿,收藏夹里塞满了“XX 条常用命令整理”,结果打开编辑器和服务器,大脑一片空白。后来才慢慢意识到,Linux 常用指令这东西,靠背是背不下来的,它必须在具体场景里反复用,才能变成自己的肌肉记忆。
这篇博文就是我现阶段整理的 Linux 常用指令汇总,标题写着“正在整理”,是因为我还在持续往里面补充自己的使用心得和踩坑记录,并不会把它写成一本字典。我按实际工作中最常遇到的场景来做分类,而不是按字母表硬排,每一类里面我会标出哪些是“必须熟练”,哪些是“知道有这个东西、用的时候能查就行”。如果你是刚接触服务器的新手,或者准备运维、后端岗位面试,又或者只是想把日常操作从“能跑”提升到“顺手”的程度,这份汇总应该能帮你省下不少绕弯路的功夫。
1. 这份指令整理,不是命令大全,而是一套排障习惯
先聊聊我为什么拒绝“命令大全”这种形式。早些年我也尝试过把网上流传的几百条命令整理成表格,一列是命令,一列是解释,最后发现根本记不住,因为脱离了场景的命令就是一堆符号。后来我把思路反过来,不再问“有哪些命令”,而是问“我遇到一个问题时,先用哪条命令、再看什么输出、然后再执行什么”,整理出来以后好用得多。
1.1 为什么要“按场景”而不是“按字母表”整理
举个例子,“查看磁盘占用”这件事,新手可能会去搜“linux 查看磁盘命令”,搜出来 df、du、fdisk、lsblk 一堆结果,不知道用哪个。如果按场景来组织,你会这样记录:
- 只看磁盘容量和挂载点:
df -h - 想确认某个目录到底占了多少空间:
du -sh 目录名 - 想看这个目录下面哪个子目录最占空间:
du -h --max-depth=1 目录名 | sort -hr - 想给新硬盘分区、格式化:才会用到 fdisk 或 parted
我把这些归到“磁盘排查”场景下,以后遇到“磁盘满了”的问题,直接走这套流程就行,不需要现场纠结。这篇博文整理的也是这个逻辑,每一类就是一类真实问题,指令只是解决这个问题的工具。
1.2 我的指令分档标准:必会、高频、了解
我在整理时给每条指令打了标签,这个习惯推荐大家也试试:
必会:几乎天天用,写脚本、排查问题绕不开,记不住自己都难受。例如 ls、cd、grep、tail、ps、df。高频:每周都会用几次,平时可以查,但最好熟练。例如 find、sed、awk、scp、systemctl。了解:特定场景才用到,知道“有这个东西”即可,遇到再查 man 或 --help。例如 fdisk、parted、tcpdump。
这个分档标准很重要,因为它能帮你把精力花在刀刃上。很多人学 Linux 学得很累,就是因为他试图把“了解”级别的命令背到“必会”,把精力耗在了十年都用不上一次的冷门参数上。我的建议是,先抓住“必会”和“高频”,剩下的交给搜索引擎和 man 手册。
另外,任何一条命令的细节你都可以通过 man 命令名 查看完整手册,大部分 GNU 工具也支持 命令名 --help 快速查看参数摘要。这不是废话,我见过太多人卡在“记不住参数”上,而实际上参数根本不需要记,能进到正确的场景里用 --help 查就足够了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录:先把手上的操作练顺
文件操作是 Linux 的日常,同时它也是新手最容易犯“致命错误”的重灾区。这里说的不是使用频率最高的 ls、cd 这些基础中的基础,而是“你以为你会了,但实际上没完全会”的细节。
2.1 路径与跳转:pwd、cd、ls 里容易忽略的小技巧
刚上手时,我习惯在终端里敲一下 pwd 确认自己当前在哪个目录,这个习惯到现在都保留着。cd 有几个非常实用的变体:
cd ~:回到当前用户的家目录,等价于直接敲cd不带参数。cd -:回到上一次所在的目录。这个在两边目录来回切换时特别好用,不用重复敲长路径。cd ..和cd ../..:回到上级和上上级目录,这个不难,但很多人不知道可以连续跳多层。
ls 也不是只有 ls 和 ls -l。我最常用的组合是:
ls -l:查看权限、属主、大小、修改时间。ls -a:显示隐藏文件(以点开头的文件)。ls -lh:大小用人类可读的单位显示(K、M、G),比默认的字节数直观得多。ls -lt:按修改时间倒序排列,调试程序时快速找到刚生成的文件,这个特别好使。
ls -l 的输出里有几个字段,很多新手不知道怎么看。随便截一行:
code复制-rw-r--r-- 1 zhangsan devs 4096 Jan 12 10:30 app.log
从左到右分别是:文件类型与权限(-rw-r--r--)、硬链接数(1)、属主(zhangsan)、属组(devs)、大小(4096 字节)、最后修改时间(Jan 12 10:30)、文件名。第一列里第一位是文件类型,- 表示普通文件,d 表示目录,l 表示符号链接。这个字段我在讲权限那部分还会再展开,先把结构看懂。
2.2 复制移动删除:cp、mv、rm 的坑与参数
先说 cp。复制单个文件很简单,但复制目录时注意加 -r,不然会报错“omitting directory”。我个人的习惯是复制时直接加 -a,这个参数等价于 -r 加保留权限、属主、时间戳等属性,比裸的 -r 更“原汁原味”。写成 cp -a 源目录/ 目标目录/,我踩过的坑是忘记末尾的斜杠,导致把目录复制到了目标目录的“子目录”里,排错排了半天。
mv 看起来比 cp 简单,因为它对目录不需要特殊参数,直接 mv old_dir new_dir 就行。但注意一个细节:mv 跨文件系统移动时,本质是“复制 + 删除”,大文件时会看到明显的等待过程;如果提示cross-device link相关的错误,通常就是跨文件系统了,这种情况建议改用 cp -a 再删除源文件。
rm 是重灾区。rm -rf 这条命令在国内外运维圈里不知道误删了多少生产数据,我自己的服务器上也手滑过。这里给出几个安全习惯:
- 删除目录必须加
-r,否则提示“cannot remove ‘目录名’: Is a directory”。 - 普通删除文件不需要
-f,-f的含义是“忽略不存在的文件、不提示确认”,非必要别加。 - 如果你要删除的路径比较深,比如
rm -rf /home/zhangsan/project/build,建议先ls /home/zhangsan/project/build确认路径存在且内容符合预期,再执行删除。 - 更稳妥的做法是设置别名:
alias rm='rm -i',每次删除前让你确认一遍。我至今都开着这个别名,多敲一个 y 的成本,远低于误删后恢复不了的成本。
2.3 查找文件:find、locate、which 的取舍
查找文件的场景分三种,工具也不同:
which 解决的是“这个命令在哪个路径”的问题。比如你要确认 python3 到底指向哪个版本,或者你改完 PATH 后想知道新命令在哪,which python3 直接给出绝对路径。它只搜索 PATH 环境变量里的目录,所以 /usr/local/bin 下的程序也能查到。如果要看命令的更多信息,可以试试 type -a 命令名,它会显示别名、函数、内建命令、外部命令的所有命中项,排查诡异环境问题时很管用。
locate 依靠预建的数据库来查文件名,速度极快,但缺点是新创建的文件可能查不到,需要先 updatedb 更新数据库。很多精简版系统没有预装这个命令,所以它的存在感不如 find 强。
find 才是真正的全能型选手,它的核心价值在于可以按各种属性组合查找。我给你列几个高频用法组合:
bash复制find /var/log -name "*.log" # 按名字模糊匹配
find /home -type d -name "cache" # 只找目录,不找文件
find /tmp -size +100M # 查找大于 100M 的文件
find /data -mtime -3 -type f # 三天内修改过的文件
find . -name "*.log" -exec rm -rf {} \; # 找到后删除,注意结尾的 {} 和 \;
-mtime -3 表示修改时间在 3 天以内,+3 表示 3 天以前。这个在清理过期日志时特别好用,比人工去翻目录高效得多。需要提醒的是,find 在有大量文件的目录里执行会比较慢,尽量把搜索范围缩到最小,别一上来就从 / 开始全盘扫。
3. 文本查看与处理:日志排查的看家本领
如果说文件操作是 Linux 的地基,那文本处理就是 Linux 的“看家手艺”。服务器上的日志、配置文件、数据导出结果,绝大多数都是纯文本格式。你看一个运维或后端老手的工作方式,往往就是几条查看命令加几条处理命令的组合。
3.1 查看文件:cat、less、more、tail、head 怎么选
这几个命令都能“看文件”,但侧重点完全不一样:
cat:最简单粗暴,把整个文件内容全部打印到屏幕。适合看小文件,比如.gitignore、某个短配置文件。一旦文件超过一屏,cat 的输出就没法好好读了,因为它会哗啦啦全滚过去。less:看大文件的首选。它支持上下翻页(方向键、PageUp/PageDown)、按/搜索关键词、按q退出。我查看日志的时候几乎只用 less,因为它不会像 vi/vim 那样把文件“锁住”,你只是浏览,不会误改内容。more:早期的分页工具,只能往下翻,不能往回翻,功能比 less 弱很多。网上有个段子说“ less 是 more 的加强版”,这不是玩笑。所以如果你看到这里,直接记住用 less 就好,more 只需要知道它存在。tail:看文件尾部,特别适合测试追加写入的日志。tail -f 日志文件可以实时跟踪文件新增内容,程序在跑的时候,新日志会一行接一行滚出来,排查报错、确认流程走到哪一步都靠它。head:看文件头部,head -n 5 文件表示只看前 5 行,适合快速瞄一眼格式。
实际排障时我最常用的组合是:先用 tail -f 盯实时的输出,等程序跑完或报错后,再用 less 去日志里搜索关键词,定位上下文。
3.2 grep:过滤与正则的实战
grep 是文本处理里最核心的指令,它的作用是从文本里“筛”出目标内容。我列几个实际工作里用到烂的参数:
bash复制grep "error" app.log # 在单个文件里找包含 error 的行
grep -r "error" /var/log/nginx/ # 递归搜索目录下所有文件
grep -i "error" app.log # 忽略大小写
grep -v "^#" /etc/nginx/nginx.conf # 反向匹配,过滤掉以 # 开头的注释行
grep -E "error|warning" app.log # 扩展正则,同时匹配多个关键词
grep -n "error" app.log # 显示匹配到的行号
正则表达式是 grep 的灵魂,但新手不需要马上去啃完整的正则语法。你先掌握几个最常用的元字符就够用了:^ 表示行首,$ 表示行尾,. 表示任意单个字符,* 表示前面的字符重复任意次,[] 表示字符集合(比如 [0-9] 匹配任意数字)。举一个实际例子:你想从日志里筛出所有带 IP 地址的行,就可以用:
bash复制grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" app.log
这套写法在后续写脚本、排查问题时都非常常用。另外提醒一句:日志文件很大时,grep 全部量会比较慢,最好配合 tail 先截取一段,比如 tail -n 10000 app.log | grep "error",只处理最后一万行。
3.3 sed 与 awk:改一行、取一列
sed 和 awk 是文本处理里的“两座大山”,很多人一看就头大,其实日常使用只需要掌握很小的一部分能力。
sed 最常见的用途是“替换”。语法是:
bash复制sed 's/要被替换的内容/替换成什么/g' 文件
末尾的 g 表示“全局替换”,不加的话每行只替换第一处匹配。举个例子,你把配置文件里的旧域名替换成新域名:
bash复制sed 's/old.example.com/new.example.com/g' /etc/app/config.ini
注意:这样只是在终端打印替换后的结果,并不会直接修改原文件。想原地修改需要加 -i 参数,强烈建议写成 -i.bak 的形式,也就是 sed -i.bak 's/old/new/g' config.ini,它会在修改前自动生成一个带 .bak 后缀的备份文件。这个习惯救过我好几次,改坏了还能秒回滚。
awk 的核心能力是“按列取内容”。默认情况下它以空格或制表符作为分隔符,$1 表示第一列,$2 表示第二列,$NF 表示最后一列。最常见的例子是看 /etc/passwd 文件,它用冒号分隔用户信息,取出所有用户名:
bash复制awk -F: '{print $1}' /etc/passwd
-F: 的意思是显式指定冒号为分隔符,{print $1} 表示打印第一列。再比如你 ps aux 查看进程时,想只关心 CPU 占用最高的进程名,可以用 ps aux | awk '{print $3, $11}' | sort -nr 这样的组合,第三列是 CPU 使用率,第十一列是命令。管道符 | 在这里把前一个命令的输出交给下一个命令处理,这是 Linux 文本处理里最核心的组合思路。
4. 用户、权限、进程与服务:服务器管理的骨架
文件操作和文本处理解决的是“我在消费数据”的问题,但到了服务器管理层面,你就得面对用户、权限、进程、服务这些“真正的骨架”。很多人从个人电脑转到服务器运维时会非常不适应,是因为这里的一切都是有“身份”和“边界”的。
4.1 用户与组:useradd、usermod、passwd
创建用户最常见的场景是:新同事来了,你需要给他开一个账号;或者某个新服务需要用自己的账号运行,而不是直接用 root。
bash复制useradd -m -s /bin/bash zhangsan # 创建用户并创建家目录,指定 shell
passwd zhangsan # 设置或修改密码
usermod -aG sudo zhangsan # 把用户加入 sudo 组,允许提权
id zhangsan # 查看用户的 uid、gid 和所属组
userdel -r zhangsan # 删除用户并一并删除家目录
这里的 -m 会自动创建 /home/zhangsan 家目录,很多发行版不加这个参数就不会建家目录,导致用户登录后直接落在 /,非常别扭。-s /bin/bash 指定默认 shell,如果你漏掉,系统可能给用户配上 nologin,完全没法正常登录命令行。
实际管理服务器时,我基本不会用 root 做日常操作,而是创建自己的普通用户,再通过 sudo 临时提权。“最小权限”原则不只是一句口号,它能在你手滑执行危险命令时,保住服务器的命。
4.2 权限位:chmod、chown 与 umask
先看一段 ls -l 的输出:
code复制-rwxr-xr-x 1 root root 12345 Jan 1 00:00 run.sh
从第二个字符开始,每三个字符一组,分别对应“属主权限”“属组权限”“其他用户权限”。r 表示读(4),w 表示写(2),x 表示执行(1),- 表示无权限。所以 rwxr-xr-x 翻译成数字就是 755,rw-r--r-- 翻译成数字就是 644。
chmod 755 run.sh:设置属主可读可写可执行,组和其他用户可读可执行。这是常见的脚本权限。chmod +x run.sh:只给所有角色加上执行权限,写法更口语化。chown zhangsan:devs app.log:把文件属主改成 zhangsan,属组改成 devs。改属主基本上必须用 root 权限。chown -R zhangsan:devs 项目目录/:递归修改目录及其内部所有文件。
umask 决定了新建文件的默认权限,多数系统默认 022,所以新建文件默认是 644,目录默认是 755。如果你们团队有特殊的安全要求,需要让新建文件不向“其他用户”开放读权限,那就把 umask 改成 027。可以临时执行 umask 027,也可以写进 /etc/profile 永久生效。
4.3 进程与服务:ps、top、kill、systemctl
查看进程状态是我服务器排障里最高频的动作之一。基础的两条命令:
ps aux:列出所有进程的完整信息,第二列和第三列分别对应 PID 和 CPU 占用。ps -ef:另一种格式的进程列表,和 aux 输出内容基本相同,只是排版不同,我建议你记住其中一个就行。
top 是动态版的任务管理器,默认每几秒刷新一次,按 P 按 CPU 排序,按 M 按内存排序,按 q 退出。排查“机器为什么卡”时,我会先 top 看一眼整体负载,然后找 CPU 占用最高的进程再深入处理。
结束进程用的是 kill PID,结束不了的可以 kill -9 PID。-9 发送的是 SIGKILL 信号,强杀无商量,进程没有机会做清理工作。我的建议是:先用普通 kill,等几秒,不行再用 -9。直接上 -9 容易留下未保存的数据或僵尸进程。
服务管理在各大主流发行版上已经统一到 systemd,核心命令是 systemctl:
bash复制systemctl status nginx # 查看服务运行状态
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl enable nginx # 设置开机自启
systemctl restart nginx # 重启服务
排查服务故障时,systemctl status 只是第一站,它会告诉你服务的当前状态和最近几行日志。如果这里看不出问题,再用 journalctl -u 服务名 -n 50 拉取该服务的最近 50 行系统日志,通常能找到报错原因。
5. 磁盘、网络与软件安装:把生产环境管起来
等你能熟练操作文件、进程和用户之后,接下来要面对的是“生产环境”级别的管理问题——磁盘满了、网络不通、软件装不上。这一节把这三类高频问题串起来,每类给一套可复用的排查链路。
5.1 磁盘空间:df、du、lsblk 的排查链路
我接到过太多次“服务器磁盘满了”的通知,处理顺序基本是固定的。
首先用 df -h 看整体情况,它显示每个文件系统的容量、已用、可用和挂载点,-h 用 G/M 单位显示,直观很多。如果某个挂载点(比如 / 或 /data)使用率到了 100%,进入下一步。
然后定位大文件,用 du。我常用的套路是:
bash复制du -sh * # 当前目录下所有子目录占用的总大小
du -h --max-depth=1 /data | sort -hr # 深入一层看谁最占地方
du -sh * 会列出一堆目录和大小,一眼就能看到哪个目录是“元凶”,再逐级深入。如果发现日志文件特别大,可以直接用 truncate -s 0 日志路径 把日志文件清空,而不是用 rm 删掉,因为某些进程会一直持有文件句柄,直接删除后空间并不会立刻释放,而且需要重启进程才能重新写日志。
这里有个和 df 不一致的经典案例:df -h 显示磁盘满了,但 du -sh * 加起来总大小远远对不上。这种情况基本是有文件被删除后,进程仍然占用着句柄。用 lsof | grep deleted 找到残留的进程,重启它,空间就正常了。
lsblk 是查看块设备的命令,它比 fdisk 更清晰,直接以树状显示磁盘和分区,适合在挂载新硬盘、确认设备名(比如 /dev/sda、/dev/nvme0n1)时使用。
5.2 网络连接:ssh、scp、curl、wget 与端口查看
远程管理服务器靠 ssh,最基本的登录命令:
bash复制ssh 用户名@服务器IP -p 端口号
如果端口是默认的 22,可以不写 -p。配置免密登录最简单的方式是执行 ssh-copy-id 用户名@服务器IP,它会自动把你的公钥追加到服务器的 authorized_keys,之后登录就不需要再输密码了。
跨服务器传文件用 scp。传单个文件:
bash复制scp 本地文件 用户名@服务器IP:/目标/路径/
传整个目录加 -r。大文件传输时如果网络不稳定,建议改用 rsync,它支持断点续传,比 scp 对网络抖动更友好。比如:
bash复制rsync -avP 本地文件 用户名@服务器IP:/目标/路径/
-P 表示显示进度并支持断点续传,-a 是归档模式保留属性,-v 显示详细过程。rsync 命令参数我记不住,但每次用到都直接 --help 或查资料,完全不影响使用。
日常排查网络,ping 测连通性(注意它测的是 ICMP 协议,某些云服务器会禁 ping,不通不代表服务不可用);curl 和 wget 测 HTTP 服务。curl -I 域名 可以只看响应头,确认服务是否正常返回 200;curl -v 地址 可以看完整的请求和响应过程,排查接口报错时非常有用。wget URL 是下载文件的利器,支持断点续传(-c)和递归镜像网站(-r),日常下载软件包、备份数据都靠它。
查看端口占用情况,你先用 ss -ltnp 看本机监听了哪些端口,-t 表示 TCP,-l 表示 listen 状态,-n 不解析服务名,-p 显示占用进程。如果只想看某个端口被谁占着,可以加 grep 过滤:
bash复制ss -ltnp | grep :8080
5.3 软件安装:apt/yum/dnf 与服务注册
不同发行版的软件包管理命令大同小异,Debian/Ubuntu 系用 apt,CentOS/RHEL 系老版本用 yum,新版本转向了 dnf,但 yum 命令兼容了很大一部分。核心就三板斧:
bash复制apt update # 先更新软件源索引
apt install 软件名 # 安装
apt remove 软件名 # 卸载
yum install、dnf install 对应旧版和新型红帽系,逻辑完全一样。离线环境下安装软件,则需要下载 .deb 或 .rpm 包,用 dpkg -i 包名.deb 或 rpm -ivh 包名.rpm 来装。依赖缺失是离线安装最大的坑,遇到报错时通常还需要手动下载对应依赖包。
安装完软件后,如果需要作为服务常驻运行,systemd 是目前的主流方案。服务的单元文件放在 /etc/systemd/system/ 目录,一个最简单的服务配置大概长这样:
ini复制[Unit]
Description=My App Service
After=network.target
[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
User=myapp
[Install]
WantedBy=multi-user.target
写完配置后执行 systemctl daemon-reload 重新加载,然后就能用 systemctl start myapp 和 systemctl enable myapp 把它跑起来并设置开机自启。这个环节我最初总忘 daemon-reload,每次改完配置启动都报“Unit not found”,后来才意识到是新配置没有被 systemd 重新读取。这也是一个典型的不看文档就会踩的坑。
6. Git 常用指令:开发环境里绕不开的那几条
虽然这篇博文的标题是 Linux 指令,但我还是把 Git 单拎出来讲,原因有二:一是热搜词里“git 常用指令”出现频率非常高,二是 90% 的 Linux 使用场景里,Git 必不可少。而且 Git 大量使用了 Linux 的哲学——本地操作小步快跑、命令组合灵活,熟练使用 Git 会让你对“命令行工作流”的理解上一个台阶。
6.1 日常工作流:status、add、commit、push、pull
Git 平时用得最多的“提交-推送”流程是固定的四连:
bash复制git status # 看当前工作区状态,红字是改过的文件,绿字是已暂存文件
git add . # 把当前目录下所有改动加入暂存区
git commit -m "提交说明" # 把暂存区内容落成一个版本
git push # 推送到远程仓库
git status 是安全检查,每次提交前都先看一遍,防止不小心把不该提交的文件(比如带密码的配置文件、编译产物)卷进去。git add . 方便,但也容易误加东西,如果你只想提交指定的几个文件,直接 git add 文件名1 文件名2 更精确。
拉取远程更新时,我个人的习惯是 git pull --rebase,意思是把本地未推送的提交“变基”到远程最新提交之上,这样提交历史是线性的,不会产生一堆“Merge branch”的合并节点。对新手来说,这个可能稍显进阶,但养成这个习惯以后看 log 会清爽很多。
6.2 分支与回滚:branch、checkout、merge、reset
分支是多人协作的基础。最常用的几条:
bash复制git branch # 查看本地分支
git branch 新分支名 # 新建分支
git checkout -b 新分支名 # 新建分支并切换过去
git checkout 分支名 # 切换分支
git merge 分支名 # 把某分支合并到当前分支
checkout -b 是我建新分支时的默认动作,一步到位。合并前建议先切到目标分支(比如 main),再执行 merge。
回滚是一个需要相当小心的话题。如果你只是想把某个文件恢复到上一次提交的状态:
bash复制git checkout -- 文件名
如果你想把最近的几次提交整个撤掉,git reset 有两个常用模式:
bash复制git reset --soft HEAD~1 # 撤销最近一次提交,但保留改动到暂存区
git reset --hard HEAD~1 # 撤销最近一次提交,并且丢弃所有改动
--hard 很危险,它会把工作区、暂存区、提交历史全部回退,被丢弃的改动几乎无法找回。我在执行这条命令前,会先 git log --oneline 确认当前所在位置,并把重要的改动先 git stash 暂存起来或推送到远程分支,再做 hard reset。如果你不确定,宁可用 --soft 保留改动,不行再手动改回来。
另外建议项目里加一份 .gitignore 文件,把编译产物、IDE 配置、日志、虚拟环境目录等不需要跟踪的内容写进去,否则 git status 会天天被一堆无关文件刷屏,早晚有一天你会因为视觉疲劳而漏掉真正重要的文件。
7. 整理还在继续:我的笔记排布与补充计划
这篇汇总目前覆盖了文件目录、文本处理、用户权限、进程服务、磁盘网络、软件安装和 Git 这七个大块,已经是我日常工作中最高频的场景了。但“正在整理”这个标题不是随便写的,因为 Linux 的指令体系太庞大了,新工具、新发行版、新需求永远都在冒出来。我自己整理时,给每类指令都留了一张“容器”,后面遇到新命令就按同样的框架塞进去。
我目前的笔记排布思路是这样的,直接用表格展示:
| 指令分类 | 覆盖场景 | 整理进度 | 下一步补充方向 |
|---|---|---|---|
| 文件与目录 | 基础操作、查找、批量管理 | 基本完成 | 补充 acl 权限、硬链接软链接的实际案例 |
| 文本处理 | 日志排查、配置修改、数据抽取 | 基本完成 | 补充 awk 的循环与条件判断用法 |
| 用户与权限 | 账号管理、权限位、提权策略 | 基本完成 | 补充 sudoers 配置的详细规则 |
| 进程与服务 | 资源占用、服务托管、日志检查 | 基本完成 | 补充 systemd 定时器 timer 的用法 |
| 磁盘与网络 | 容量排查、远程传输、网络诊断 | 还在补充 | 补充 tcpdump 抓包的常用过滤规则 |
| Git | 日常提交、分支管理、错误恢复 | 基本完成 | 补充 stash 和 cherry-pick 的进阶场景 |
面试场景是很多人关注的重点,我粗略梳理了一下,Linux 相关的面试题基本绕不开这三类:第一类是基础命令的查看,比如“如何查看 CPU 占用最高的进程”;第二类是权限与用户问题,比如“如何使用普通用户执行管理员操作”;第三类是服务与网络排障,比如“服务起不来一般怎么排查”。你会发现,只要把上面这七个章节的“必会”标签内容都吃透,这三类问题都有清晰的答题路径。
最后再分享一个我自己的小习惯:整理命令时不过度追求“一次整理到位”,而是边用边补。我会在 .bashrc 里给高频命令设置一些顺手别名,比如 alias ll='ls -ali'、alias grep='grep --color=auto',这属于个人偏好,但确实能提升日常操作效率。遇到暂时用不上的指令,我不急着记,而是先留一个“了解”级别的标签,等到真正需要它解决现场问题时,再去翻手册、跑实验,然后把它升级到“高频”并且补充真实的踩坑备注。Linux 指令不是背出来的,是试出来的,这个过程中的每一条命令、每一次报错,都比一份完美的命令大全更值钱。这篇汇总我会持续维护,后续遇到值得记录的指令和案例,再回来继续补充。
