Linux常用命令系统梳理:五层分类与高频易错点

发布时间:2026/11/3 3:42:10
Linux常用命令系统梳理:五层分类与高频易错点

简介:这是一份面向Linux初学者与日常运维人员的常用命令速查手册,以PDF形式系统梳理目录操作、文件管理、内容查看、软链接、压缩解压、权限管理、Docker容器、yum与内核优化等十余个模块,帮助读者摆脱零散搜索,快速建立命令体系并定位到具体用法。压缩包内仅有1个PDF文件,约796KB,篇幅紧凑,围绕mkdir、cd、find、rm、cp、mv、tar、chmod、netstat、top、sysctl等高频命令给出语法说明与典型示例,并补充系统日志位置、文件权限查看、内核参数调整等实际运维场景。资源已有6171人浏览学习,在入门与查漏补缺人群中接受度较高。读者可将其作为桌面速查表或轻量系统读本:按模块检索具体写法,也可顺着目录通读,把目录与文件操作、内容查看与编辑、压缩备份、用户与权限、容器及服务管理等环节串联起来,减少试错成本与重复搜索时间。

1. 知识地图:五层分类,命令按操作对象归类

不少人收藏 Linux 常用命令清单的方式是存一张长图,三天后只剩下ls和cd还记得。系统梳理下来会发现,这些命令其实按「操作对象」分成五层:目录与文件是骨架层,解决东西放在哪、叫什么名字;内容与状态是观测层,解决文件里写了什么、服务现在跑得怎么样;权限与账户是边界层,解决谁能动、能动到什么程度;打包与安装是搬运层,解决东西怎么进来、怎么搬走;进程与端口是排障层,解决卡住了该从哪个数字查起。五层里最容易混的是文件操作和内容操作——前者动的是路径和 inode,后者动的是字节流,混着记就会在mv和cat之间反复翻车。这份笔记按这五层往下拆,每层只留真正高频的那部分命令。

2. 目录与文件:路径、查找、命名与拆分的四个抓手

这一层是所有操作的地基,命令本身都很短,真正的难点在路径语义:相对路径、绝对路径、目标目录存在与否,三件事排列组合出十几种结果。把路径想清楚了,cp、mv、rm、find基本不会出错;想不清楚,就只能靠ls反复确认,靠回收站后悔——而 Linux 偏偏没有回收站。

2.1 目录操作的六个锚点:pwd、cd、ls、mkdir -p、clear

目录操作只需要记住六个锚点,能覆盖九成场景。pwd告诉你现在在哪个绝对路径上,做任何删除动作前先敲一次,是最便宜的安全检查。cd的四个变体各有用途:cd ~回家目录、cd /到根目录、cd ..回上一级,而cd -是回到上一次待过的目录,在两个深目录之间来回跳时比敲绝对路径省很多事。clear只是清屏,历史输出还在缓冲区里,用less读大文件时不需要它。

pwd # 打印当前工作目录的绝对路径,删除前先确认位置 clear # 清屏,不改变任何文件状态 cd ~ # 切到当前用户的家目录,等价于直接敲 cd cd / # 切到根目录 cd - # 回到上一次访问过的目录,可反复横跳 cd .. # 回到上一级目录 ls -l # 列出目录内容的长格式,权限、属主、大小一次看全

cd后面不加参数等于cd ~,很多人不知道这一点,于是每次都老老实实敲家目录路径。ls -l和常见的ll是同一件事,ll只是某些发行版预置的别名,换一台机器可能没有,脚本里一律写ls -l更稳。

mkdir的关键参数是-p。不带-p时,父目录不存在会直接报错;带上之后会自上而下把缺的目录一起建出来,mkdir -p temp/nginx就是一次建两层。三种写法的差别在路径本身:mkdir aaa和mkdir ./bbb都是相对当前目录,mkdir /ccc是绝对路径,会往根目录写,普通用户通常没有权限。梳理下来会发现,报错信息里十有八九是 "Permission denied" 或 "No such file or directory",前者是权限问题,后者是父目录问题,-p解决的正是后者。

2.2 文件的增删移动:touch、cp、mv、rm 的四组语义对照

touch testFile创建空文件,如果文件已存在则只更新时间戳,这个副作用在排查「为什么改了时间」时会被忽略。真正需要背熟的是cp和mv在「目标是否已存在」下的不同表现,这是这一节的重点难点。

cp -r /aaa /bbb在/bbb已存在时,结果是在/bbb下生成一个/bbb/aaa;写成cp -r /aaa /bbb/aaa才是复制过去并改名。mv同理:mv /aaa /bbb把目录移进/bbb且保持原名;mv bbbb usr/bbb移动到usr下并改名为bbb;mv tomcat001 tomcat则是同目录内纯重命名。区别在于mv永远不会「复制一份」,移动完成后源路径就空了。

场景命令结果
复制到已存在目录cp -r /aaa /bbb/bbb/aaa,名字不变
复制并改名cp -r /aaa /bbb/aaa内容进/bbb,名字由命令决定
移动并改名mv bbbb usr/bbb位置和名字同时改变
同目录重命名mv tomcat001 tomcat仅改名,路径不变
强制递归删除rm -rf /bbb子目录一起删,不询问
交互式递归删除rm -r /bbb每个文件问一次,适合手抖的人

删除侧的分层是rm最容易被低估的地方。rm -r会逐个询问,但要删几十个文件就变成体力活;rm -rf是强制递归,不问也不进回收站,rm -rf ./*更狠,当前目录下的所有东西一次清空。所以这套命令的正确用法不是记住更多变体,而是养成一个习惯:执行前用pwd和ls确认,通配符先换成ls ./*跑一遍看列表,确认无误再把ls换成rm -rf。这个「先打印再删除」的套路同样适用于find。

2.3 find 精准定位与 split 拆分:按名字、大小、类型三把筛子

find的语法是「搜索起点 + 筛选条件 + 动作」,三个部分都能省略,省略后行为完全不同。find / -name 'b'只在根目录树里找名字精确等于b的文件或目录;find / -name 'b*'加了通配符才是前缀匹配。全盘搜索慢是正常的,因为它在遍历目录树,任何「为什么 find 卡住了」的疑问,答案基本都是搜索起点给得太宽。

find / -name 'b*' # 从根目录开始,找名字以 b 开头的文件和目录 find . -name '*.pyc' -print # 先只打印,确认影响范围,不执行任何删除 find . -name '*.pyc' -exec rm -rf {} \; # 确认后再删,{} 代表前面查到的每个结果 find . -type f -size 145800c -print # 只找普通文件,大小正好 145800 字节

-type f把范围限定为普通文件,能排除掉同名目录;-size 145800c里的c表示字节,不带单位默认按块算,这是最容易搞错的地方;-print放在-exec前面,作用是先打印再执行,用于核对;-exec ... {} \;里的{}是结果占位符,末尾的\;是命令结束符,少写一个反斜杠就会报语法错误。把-print和-exec串在一条命令里,本质上就是「边打印边删除」,比删完再后悔强得多。

split解决的是另一个方向的问题:把一个大文件切成多个小文件,典型场景是日志太大不方便传输或阅读。默认按字节切,-b 10k表示每个输出文件 10KB;-l 10改成按行数切,每 10 行一个文件;-d让后缀从字母变成数字,-a 3把后缀长度从默认 2 位改成 3 位;最后一个位置参数是前缀,不写就用默认的x。

split -b 10k date.file # 每 10KB 一个,后缀为 xaa、xab、xac split -b 10k date.file -d -a 3 # 数字后缀、3 位长度:x000、x001 split -b 10k date.file -d -a 3 split_file # 指定前缀:split_file000 split -l 10 date.file # 按行拆,每 10 行一个文件

这里有个容易忽略的取舍:按字节切会在一行中间断开,如果切的是日志或 CSV,每个分片的头尾都是残缺记录,后续grep会漏结果;按行切虽然每个文件大小不齐,但每一行都完整。所以处理结构化文本时用-l,只有切二进制或纯传输场景才用-b。这一点在检索资料里没写,但它在实际排障中比参数本身更重要。

3. 内容与状态:查看、过滤、日志与端口定位

骨架层解决「东西在哪」,这一层解决「里面是什么、现在什么样」。它由两块拼成:一块是文件内容的读取与过滤,另一块是系统运行状态的观测。两块用的命令完全不同,但共同点是都只读不写——除非你用重定向把输出写回去,那才是这一层最大的坑。

3.1 查看器四件套:cat、more、less、head 与 tail

cat一次性把整个文件输出到终端,适合短配置和小脚本,遇到几百兆的日志就是刷屏灾难。more能一页页往下看,回车翻一行、空格翻一页,但它不能后退,退出后终端还会残留刚显示的内容。less是加强版:支持上下方向键、PageUp/PageDown 翻页,不必读完整个文件所以加载更快,退出后终端干净。这四个差异决定了默认选择——大文件一律less,只有管道里做一次性处理才用cat。

cat app.java # 一次输出全部内容,适合几十行的小文件 less app.log # 大文件首选,方向键上下翻,PageUp/PageDown 翻页,q 退出 head -n 7 app.log # 只看前 7 行,确认文件头部的字段格式 tail -n 7 app.log # 只看后 7 行,快速确认最后一条记录 tail -f app.log # 持续跟踪新写入的内容,看实时日志的核心命令

tail -f的-f是 follow,文件被追加内容时终端会持续刷新,是观察服务启动、复现故障的常用手段;head和tail不加-n时默认都是 10 行。有一个细节值得记住:tail -f跟踪的是文件句柄,如果日志做了切割轮转,它可能跟丢,此时需要重新打开命令或者换支持重开的参数。

vim是编辑侧的主力,模式切换是唯一需要背的东西:进入时是一般模式,按i进入插入模式才能打字,按Esc回到一般模式,再按Shift + :调起命令行执行:wq保存退出、:q!不保存强退、:q在没改动时退出。这三个退出命令的区别在于「有没有改」和「要不要留」,改错了用:q!是唯一不给系统留垃圾的方式。

3.2 grep、管道与重定向:把输出串成流水线

grep是内容层的筛子,参数组合决定了输出的详略。grep under 123.txt只输出匹配行;加-n带行号,方便回到文件里定位;加-v反向输出,只看不匹配的行,排查「为什么这条没进来」时特别有用;加-i忽略大小写。把-n和-i合起来写成-ni是最常用的形态之一,因为日志里的错误关键字大小写往往不统一。

grep -n "ERROR" app.log # 显示匹配行并带行号 grep -v "DEBUG" app.log # 反向过滤,只看非调试日志 grep -ni "timeout" app.log # 忽略大小写并显示行号 ps -ef | grep java # 管道把进程列表交给 grep 过滤 echo 'Hello World' > test.txt # > 覆盖写入,原内容直接没了 echo 'Hello World' >> test.txt # >> 追加写入,保留原内容

管道|的作用是把前一个命令的标准输出接到后一个命令的标准输入,像水管一样把命令串起来,所以ps -ef | grep java才能从全量进程里捞出目标。重定向则是把输出改道到文件,>会清空原文件再写,>>才追加。这两个符号写混是高频事故:本来想追加一行配置,结果把整个配置文件冲成一行。血泪经验是,凡是对已有文件用>,先想三秒。

3.3 日志位置地图:/var/log 下每个文件该看什么

排障时最耗时间的不是分析,而是不知道去哪儿看。系统日志集中在/var/log,每个文件职责清晰:

日志文件记录内容典型用途
/var/log/messages系统启动后的通用信息与错误服务起不来时第一个看的地方
/var/log/secure与安全相关的日志登录失败、提权、认证异常
/var/log/maillog与邮件相关的日志邮件投递队列问题
/var/log/cron定时任务执行记录判断计划任务到底跑没跑
/var/log/boot.log守护进程启动与停止消息开机阶段的服务异常
~/.bash_history当前用户执行过的命令回溯「谁在什么时候动了什么」

其中最容易忽略的是~/.bash_history:它不是系统日志,而是用户自己的命令历史,排查操作痕迹时比任何服务日志都直接。另外cat /etc/redhat-release可以确认系统版本,很多命令参数在不同大版本之间行为不一致,先确认版本再查参数,能少走很多弯路。

3.4 进程与端口:ps、top、netstat、lsof 的四层定位

定位一个服务的问题,顺序通常是「先看整体负载,再看具体进程,再看它占了哪个端口,最后看是谁占着」。top是整体视图,输出分两大区:统计信息区里load average后面三个数字是最近 1、5、15 分钟的平均负载,要和核数对比才有意义,单看绝对值没概念;%CPU行里us是用户空间占用,sy是内核空间占用,wa是等待 IO 的时间占比,wa长期偏高基本可以断定是磁盘瓶颈;KiB Mem和KiB Swap两块要连起来看,交换分区被大量使用说明内存已经吃紧。

进程信息区里重点看四列:PID、%CPU、%MEM、S(进程状态)。状态里的R是运行、S是睡眠、D是不可中断的睡眠(通常卡在 IO)、Z是僵尸进程。RES是实际占用的物理内存,VIRT是虚拟内存总量,后者远大于前者是正常的,别被吓到。

ps -ef # 查看所有进程,含父进程 PID ps aux | grep java # 过滤出 java 相关进程 top # 实时刷新,看负载与内存的第一现场 netstat -lt # 列出所有处于监听状态的 TCP 端口 netstat -tunlp | grep 8080 # 按端口反查 PID 和进程名 lsof -i:8080 # 直接看谁占用了 8080 kill -9 2630 # 按 PID 强杀进程,不给收尾机会 df -h # 看磁盘整体使用率 du -sh /usr/local # 看指定目录占了多少空间 du --max-depth=1 # 只看当前目录下第一层子目录的占用

netstat -tunlp这一串参数各有分工:t是 TCP、u是 UDP、n显示数字不解析域名、l只看监听、p显示进程。lsof -i:8080更直接,缺点是部分精简系统没装。kill -9是强杀,进程没有机会保存状态或释放资源,能正常停就先正常停;df -h看的是文件系统层面,du -sh看的是目录累加,两者对不上通常意味着有文件被删除但句柄还被占用。

连接状态也能统计,TIME_WAIT数量异常多通常说明短连接过于频繁:

# 统计各 TCP 状态的连接数量 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

awk这里按行读入,$NF取每行最后一个字段也就是连接状态,用数组累加计数,最后统一打印。这段命令的价值不在于语法,而在于它能一眼看出CLOSE_WAIT是否堆积——堆积通常意味着应用侧没有正确关闭连接,属于代码问题而不是网络问题。

4. 权限、账户与打包安装:九位权限背后的边界

前三层解决「能不能操作」,这一层解决「该不该让你操作」。权限是 Linux 里最容易被敷衍过去的部分,很多人的做法是遇到 Permission denied 就chmod 777,短期通了,长期把边界全拆了。真要把这一层弄明白,只需要搞清楚三件事:九位权限怎么读、数字怎么写、归属怎么改。

4.1 九位权限与 chmod:rwx 与数字的对应关系

-rw-r--r-- 1 root root 34942 Jan 19 2018 bootstrap.jar这一行的开头十位信息量很大。第一位是文件类型,-表示普通文件,d表示目录,l表示软链接。后面九位按三位一组切开:前三位是属主权限,中间三位是属组权限,后三位是其他人权限。每组内部固定是读、写、执行三个位置,有该权限就显示字母,没有就显示-。

权限字母数字对文件的意义对目录的意义
读r4可以读取内容可以列出目录内文件
写w2可以修改内容可以在目录内创建删除文件
执行x1可以作为程序运行可以进入该目录

数字写法就是把每组的三位相加:rwx是 4+2+1=7,r-x是 4+1=5,r--是 4。所以755是属主全权限、属组和其他人可读可执行,644是属主可读写、其他人只读。这两种组合覆盖了绝大多数场景:目录和可执行脚本用 755,普通配置和数据文件用 644。

chmod u+x web.xml # 只给属主(user)加执行权限 chmod g+x web.xml # 只给属组(group)加执行权限 chmod 111 web.xml # 三组都只加执行权限:---x--x--x chmod 444 web.xml # 三组都只读,属主自己也不能写了 chmod 755 start.sh # 属主 rwx,属组和其他人 r-x,脚本最常用 chmod 644 app.conf # 属主可读写,其他人只读,配置文件最常用

这里最容易误解的是444和777。444不是「只读给自己」,而是三组全只读,连属主都失去了写权限,改配置时会发现保存不了;777是所有人可读可写可执行,等于放弃边界。真正的做法是按最小够用原则给:能跑就行用 755,能被读就行用 644。

还有一个细节常被忽略:目录上的x权限和文件上的x权限含义不同。目录没有x,即使有r也进不去,只能看到名字列表;目录没有w,就删不掉里面的文件,哪怕文件本身权限全开。判断「为什么删不掉」时,要先看父目录的权限,而不是盯着文件本身。

4.2 用户、组与 sudo:useradd、groupadd、visudo 的边界

用户管理的命令不多,但参数选错会导致家目录、归属、登录方式一连串问题。useradd -d /usr/sum -m sum里的-d指定家目录路径,-m表示目录不存在就创建,少了-m会得到一个没有家目录的用户,登录后落在/上,很多工具会因此报错。其他常用参数:-u指定 UID,-g指定主组,-G指定附加组,-c写注释信息。

useradd -d /usr/sum -m sum # 建用户并创建家目录 passwd sum # 给新用户设置密码,不设密码无法登录 groupadd devops # 新建用户组 cat /etc/passwd # 每行第三段是 UID,0 代表 root usermod -aG devops sum # 追加到附加组,-a 必须写 su sum # 切换用户,exit 返回原用户

/etc/passwd里那一行的结构值得记一遍:sum:x:1000:1000::/usr/sum:/bin/bash依次是用户名、密码占位、UID、GID、注释、家目录、登录 shell。UID 为 0 就是 root,所以「把某个用户的 UID 改成 0」等于给了它 root 权限,这是最粗暴也最危险的做法。

正规做法是visudo编辑 sudo 配置,在文件里加一行eses ALL=(ALL) ALL,让指定用户通过sudo临时提权,而不是把 UID 改成 0。visudo的好处是保存时会校验语法,配置写错不会把系统锁死。另外usermod -aG里的-a千万别省,省掉会直接覆盖用户原有的附加组,等于把人从其他组里踢了出来,这种问题在权限报错时很难第一时间想到。

删除用户分两步:userdel sum只删账户,家目录和文件还在;要连目录一起清掉,得再执行rm -rf /usr/sum。这个「两段式」设计是有意的,防止误删数据,但也意味着只删账户会留下无主文件,长期累积会占空间。

4.3 软链接、打包压缩与安装:ln -s、tar、zip、yum、lrzsz

软链接相当于快捷方式,源文件删了链接就失效。创建时源路径在前、链接名在后,ln -s /usr/local/app /data会在根目录下建一个指向/usr/local/app的data链接。最容易踩的坑是源路径后面多写一个斜杠:带斜杠时系统会理解为「链接到该目录下的内容」,结果显示和行为都不对。

ln -s /usr/local/app /data # 建软链接,源路径末尾不要加斜杠 rm -rf /data # 删除链接本身,不影响源目录 rm -rf /data/ # 带斜杠删的是链接目标里的内容,危险

删除软链接时带不带尾部斜杠,结果完全不同,这是本节的重点。带斜杠的rm -rf会顺着链接进去删真实目录里的文件,而且没有提示。习惯做法是删链接前先ls -l看一眼,确认那个箭头指向哪。

打包压缩分两类:.tar系列用tar,.zip用zip/unzip。tar的参数可以拆成四组来记:动作是-c打包、-x解包、-t只列内容;压缩方式是-z走 gzip、-J走 xz、不加则不压缩;-v显示过程;-f指定文件名,必须放在最后紧跟文件名。

tar -cvf start.tar a.java b.java # 只打包不压缩 tar -zcvf start.tar.gz ./* # 打包并 gzip 压缩当前目录所有内容 tar -xvf start.tar # 解包到当前目录 tar -zxvf start.tar.gz -C /usr/local # 解压到指定目录,-C 必须大写 tar xf node.tar.xz # 新版 tar 能自动识别压缩格式

-C是大写字母,且中间不能有空格,写错就会解压到当前目录,把工作目录弄乱。zip侧则用zip lib.zip tomcat.jar压单个文件,zip -r lib.zip lib/压整个目录,unzip -d /usr/app pack.zip解压到指定目录。

系统级安装走yum:yum install安装、yum list列出已装包、yum search在仓库里搜索、yum update更新、yum remove卸载、yum clean all清缓存。装完源里的包之后,文件上传下载靠lrzsz:先yum install -y lrzsz,之后rz上传、sz下载,在没有图形界面的服务器上比开额外通道省事得多。

容器侧的常用命令只有七条,记住生命周期顺序就不会乱:

docker images # 看本地已有镜像 docker run -di --name=first -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql docker ps # 只看运行中的容器 docker ps -a # 连已停止的也一起看 docker stop first && docker rm first # 先停再删,运行中的删不掉

-d是后台运行、-i保持标准输入、--name指定容器名、-p是宿主机端口对容器端口的映射、-e传环境变量。端口映射写反是最常见的错误,3306:3306前者是宿主机、后者是容器,两边不一致时外面的客户端就连不上。

内核参数改动则走sysctl:编辑/etc/sysctl.conf后执行sysctl -p重新加载,-p是让改动立即生效的关键一步,只改文件不执行等于没改。

5. 易错点:五个最容易翻车的地方

前面四层的命令都摆出来了,但真正让人栽跟头的往往不是不会用,而是「以为会用」。下面五条是从实际操作里筛出来的高频错误,每条都按「错在哪、为什么会漏、怎么补」说清楚。

5.1 斜杠敏感:三个和路径末尾有关的隐患

易漏点一:软链接的源路径带上尾斜杠。写ln -s /usr/local/app/ /data时,多出的斜杠会让系统按「目录内容」而不是「目录本身」去解析,链接指向偏移,后续访问报找不到文件。为什么漏:斜杠在别的地方几乎无影响,cd /usr/local/app/和cd /usr/local/app完全等价,于是形成惯性,以为路径末尾加不加斜杠都一样。怎么补:把「建链接时源路径不带尾斜杠」当成硬规则,建完立刻ls -l看一眼箭头指向。

易漏点二:删除软链接时带上尾斜杠。rm -rf /data删的是链接,rm -rf /data/删的是它指向的真实目录内部。为什么漏:两条命令只差一个字符,而删除动作没有二次确认,出事后才发现。怎么补:删任何链接前先ls -l确认箭头方向,或者干脆用unlink /data这种只针对链接本身的命令。

易漏点三:rm -rf后多敲一个空格再接通配符。rm -rf ./*与rm -rf / *的差别不只是多一个空格,前者删当前目录内容,后者从根目录开始全盘清空。为什么漏:手速快的时候空格和斜杠都是下意识的,而且终端不提示。怎么补:通配符命令先用ls跑一遍看列表,确认后把ls换成rm -rf;对重要目录,删除前先cd进去并pwd确认位置。

5.2 权限与运行:数字误解和后台运行的两个错觉

易漏点一:把chmod 444当成「给自己读写」。444 是三组全只读,属主同样失去写权限,改配置时会卡在保存不了。同理,遇到权限问题就chmod -R 777是最差解,递归改权限会把整个目录树的边界一起拆掉。为什么漏:数字权限是三位一组的累加,但很多人只记了「4 是读」,忘了三组是同时生效的。怎么补:按对象选值,脚本和目录用 755,普通文件用 644,改之前先ls -l看清楚当前九位到底是什么。

易漏点二:把Ctrl + Z当成结束进程。Ctrl + Z只是把任务挂起,进程还在,端口还占着,Ctrl + C才是强制中断。两者看起来都是「按完就回到提示符」,实际上挂起的进程会一直躺在后台,下次启动服务时就会撞上端口被占用。为什么漏:两个快捷键的视觉反馈一样,而jobs、fg、bg这一组命令平时用不到,就没有机会建立正确认知。怎么补:回到提示符后如果端口仍被占用,先ps -ef | grep找 PID,再决定是fg唤回还是kill掉。

易漏点三:nohup后面漏掉&。nohup sh test.sh &才是后台运行并把日志写到nohup.out;少了&,终端照样被占住,关掉窗口任务就没了。要把输出重定向到自定义文件,写nohup sh test.sh >> test.out &,注意用>>而不是>,否则重启一次就把上次的日志覆盖。为什么漏:nohup这个名字自带「后台」的暗示,让人觉得写了就够了。怎么补:把这条命令当成一个整体记,nohup加命令加输出重定向加&,四个部分缺一不可。

6. 复习清单:一张自查表和三个补漏动作

把这套内容复习一遍,最有效的方式不是重读,而是先做一遍自测,把不会的挑出来单独补。下面这张表按五层组织,左列是模块,右列是「能不能不看笔记说清楚」的自测问题。哪一行的答案卡住了,就回到对应章节重看那一段,效率比重头翻高得多。

模块自测问题对应章节
目录与文件mv到已存在目录和带新名字,结果差在哪2.2
查找与拆分-size 145800c的c和-exec {} \;各是什么2.3
内容查看more和less的四个差异能说出几个3.1
过滤与重定向>和>>用错会有什么后果3.2
日志定位查登录异常和查定时任务分别看哪个文件3.3
进程端口netstat里t、u、n、l、p各管什么3.4
权限755和644分别适合什么对象4.1
账户usermod -aG少了-a会怎样4.2
打包安装tar的-C写错位置会解压到哪4.3
易错点rm -rf /data与rm -rf /data/的差别5.1

补漏动作有三个。第一个是把命令「从记忆里调出来」而不是「从笔记里读出来」:拿一张白纸,按五层各写五个命令,写不出的就是没记住的,重点看那一层。第二个是给每条危险命令配一个只读的预演:删除前用ls或-print打印,改权限前用ls -l看原值,涉及通配符的一律先打印列表。第三个是建立自己的命令小抄,只记「参数组合 + 一句话场景」,比如「tail -f看实时日志」「netstat -tunlp | grep 端口反查 PID」,因为参数脱离场景记不住,场景脱离命令又用不上。

我自己的习惯是每次要动rm -rf、chmod -R、ln -s这三类命令之前,都强制先跑一遍pwd加ls -l,把「我到底在哪个目录、要动的东西长什么样」确认一遍,然后再执行。这个动作看起来多余,但它替我挡掉过一次删错目录的事故——那次手滑把./打成了/,是pwd的输出让我停了半秒。从那以后这套确认流程就没断过,希望你也能养成这个习惯。希望帮到你。

本文还有配套的精品资源,点击获取