Linux文件管理命令实战练习:从基础操作到安全删除与自动化

发布时间:2026/10/8 8:37:26
Linux文件管理命令实战练习:从基础操作到安全删除与自动化 在命令行世界里泡久了你会发现所谓“高手”和“新手”的分水岭往往不在那些花哨的框架和工具上而在最基础的文件管理命令上。文件是操作系统里最实在的东西命令则是你跟它对话的语言。今天这篇文章就围绕“文件管理相关的命令练习”这件事把我这些年从磕磕碰碰中总结出来的练习路线、易错点和排查经验都摊开来讲。不管你是刚接触 Linux 的运维新手还是写代码想提升终端操作效率的开发者又或者只是受够了鼠标点来点去这篇文章都能给你一套能直接抄作业的练习方法。1. 为什么文件管理命令值得专门练以及怎么练才不白费1.1 文件管理是命令行的地基先说实话很多看起来“很牛”的操作拆到最底层都是在做文件管理。服务器上的配置信息是文件程序日志是文件数据库数据是文件你写的代码更是文件。所谓运维和开发本质上就是跟一堆文件打交道而文件管理命令就是你对它们进行增删改查的基本功。我见过不少刚入行的人背得下一堆“高端”命令却连ls -l输出里的权限位都读不明白。真到了排查问题的时候连日志文件在哪都找不到更别说用find把几万条日志按时间筛出来了。倒不是说会几个命令就了不起而是文件管理命令直接决定了你的操作效率和事故概率。你手上掌握的命令越扎实出错时的惊慌就越少。这套基本功值得单独抽时间练而不是指望边工作边“顺便”学会。原因也很简单工作场景里你会有心理压力不敢乱试很多东西一辈子都试不到。而专项练习时你可以在一个随便折腾都不会出大事的环境里把每个命令的参数都按一遍形成肌肉记忆。1.2 练手环境准备别拿生产环境练手练命令的第一原则不要在生产机器上练习删除和权限操作。我早年间不懂事直接在线上服务器试chmod -R 777 /结果整个系统权限一团糟最后只能连滚带爬地紧急恢复。这个教训价值很大也让我养成了“练习归练习、生产归生产”的习惯。准备练习环境有几个现成的路子本机装一台轻量虚拟机推荐 VirtualBox 或 VMware装一个最小化的 Linux 发行版再打一个快照。快照的好处是不管你把系统折腾成什么样一分钟就能恢复回干净状态。使用 Windows 上的 WSLWindows Subsystem for Linux开启之后直接在终端里用 Linux 文件系统配置很省事适合大部分命令练习。用一个 Docker 容器跑 Ubuntu/CentOS例如docker run -it --rm ubuntu bash进去之后就是孤立的环境敲坏了直接退出重建成本几乎为零。如果以上工具都不想装直接在系统上新建一个专门的练习目录例如~/practice所有命令都限制在这个目录里操作也能隔离风险。我个人最推荐“虚拟机 快照”的组合因为文件管理命令里很多涉及到权限、软链接、硬链接WSL 的文件系统映射跟真实 Linux 环境不完全一致有些操作会有细微差别。而 Docker 容器虽然方便但里面通常没有 systemd 这类东西练到某些场景时不够逼真。当然如果你只是想快速进入状态WSL 已经够用了。1.3 设计一条从“认识”到“反应”的练习路线练习不能东一榔头西一棒子得有路线。我建议你把文件管理命令的学习分成三个阶段第一阶段认识命令。把pwd、cd、ls、touch、mkdir、cp、mv、rm、ln这些命令的常用参数过一遍知道它们能干什么知道cp -r和cp -a有什么区别知道rm -rf意味着什么。这个阶段不需要背参数只需要建立“哦原来这个命令还有这个选项”的感觉。第二阶段刻意练习。在练习目录里构造各种场景比如创建一个深层嵌套目录、批量复制特定类型的文件、把权限改成 750 再改回来、为某个文件创建软链接和硬链接。每一个命令至少连续敲十遍以上直到不需要思考就能按出组合键。第三阶段组合与脚本化。通过管道、重定向、循环把多个命令串起来解决实际问题。比如找出三天前修改的.log文件并压缩归档把目录下所有.jpg重命名为带日期的格式。到了这个阶段你才算真正把命令用活了。每天不需要花太多时间15 到 20 分钟就够。关键是坚持把命令练习当成洗漱一样日常化。我当年练命令的方式很土准备一个小本子每天记三条命令晚上睡前默写一遍第二天在终端里实际跑一遍。不要觉得笨这种方式建立的手感最持久。2. 核心文件管理命令拆解每个命令背后的门道2.1 浏览与定位pwd、cd、ls、tree这四个命令是你在命令行里的“眼睛”和“脚”先得把它们练熟。pwd其实就是 Print Working Directory 的缩写用来显示你当前所在的绝对路径。这命令简单但真到找不着北的时候特别救命。我以前遇到过一种情况在一个很深的目录里操作了半天忘了自己在哪就靠pwd找回位置。cd是切换目录的命令。几个常用变体cd ..回到上一级目录cd ~回到当前用户的家目录cd -回到上一次所在的目录这个非常实用尤其当你需要在两个目录之间来回切换时一条cd -比重新打路径快得多cd /回到根目录。注意cd后面接的路径可以是绝对路径比如/etc/nginx也可以是相对路径比如../var/log。相对路径的基准是当前目录这个会在后面单讲。ls是列表命令它的参数多到让人眼花但最开始你只需要掌握这几组ls -l显示详细列表包含权限、属主、大小、修改时间ls -a显示所有文件包括以.开头的隐藏文件ls -lh以人类可读的方式显示文件大小比如 4K、1.2Gls -lt按修改时间倒序排列最新的文件在最上面。这里提醒一句ls -l输出里第一列的第一个字符如果是d代表目录如果是-代表普通文件如果是l代表链接文件。这些符号在新手眼里就是天书但看多了自然就熟了。tree能递归展示目录树比ls -R直观得多。不过这个命令默认没安装在 Debian/Ubuntu 上用apt install treeCentOS 上用yum install tree。它在梳理项目结构时特别好用我经常拿它把一个大目录的结构打印出来先看清全貌再动手。2.2 创建与复制touch、mkdir、cp、mv这是文件管理里最频繁的操作也是练习的重点。touch通常用来创建空文件但它真正的作用是修改文件的时间戳。如果你把touch看成一个“把文件更新时间改成现在”的命令就能理解为什么它既能创建文件也能用来刷新已有文件的 mtime。实战里经常用它来生成空文件占位比如touch /tmp/test.txt。mkdir创建目录核心参数是-p。mkdir -p a/b/c会一次性创建多级目录如果父目录不存在也会一并创建。这个参数谁用谁知道比一层层mkdir然后cd再mkdir舒服太多。cp拷贝文件最容易踩坑的是目录。复制文件用cp 源文件 目标路径复制目录必须加-r递归例如cp -r project/ backup/。不想覆盖同名文件时用cp -n想保留文件的权限和时间属性时用cp -p或直接cp -a。-a基本等于-r加上保留所有属性做备份时的最佳选择。mv既能移动文件也能重命名文件。移动就是mv 源 目标目录重命名就是mv 旧名字 新名字。注意如果目标目录存在mv会把文件移进去如果目标路径中最后一个部分指向一个不存在的文件名那就是改名语义。判断不了的时候先ls看一下目标路径是否存在能少犯很多错。2.3 删除与清理rm、rmdir、trash-cli删除命令是文件管理里威慑力最大的部分。从作用上讲rm能删文件也能删目录。删目录要加-r强制删除且不提示要加-f你经常看到的rm -rf就是“递归强制删除且不询问”。这个组合一出手基本就没有回头的余地。顺带提一下rmdir只能删除空目录非空目录它会报错。虽然看起来鸡肋但也算一种保护机制防止你误删有内容的目录。关于rm的安全性问题我建议你在练习阶段就养成两个习惯第一给rm设置一个交互别名。在~/.bashrc或~/.zshrc里写上alias rmrm -i这样每次执行rm删除前都会问你一句能拦住不少手滑。真的需要批量强制删除时再直接输入\rm -rf来绕过别名。第二能用“移动到回收站”代替直接删除的地方尽量用回收站方案。Linux 下的trash-cli可以提供类似 Windows 回收站的功能比如trash 文件会把文件挪到回收站后面想反悔还能恢复。我自己对重要文档都不敢直接rm而是先trash走这个安全通道。2.4 查找与筛选find、locate、grep、which文件管理不只是操作已知文件更多时候是要在一堆文件里找到目标。find是最强大也最需要耐心学的查找命令。它的基本形式是find 起始路径 表达式。常用的表达式-name *.log按文件名匹配注意支持通配符-type f只找普通文件-type d只找目录-size 100M找大于 100MB 的文件-mtime -7找最近 7 天内修改过的文件-exec 命令 {} \;对每个结果执行后续命令。find最大的好处是既能查又能顺手处理比如find . -name *.tmp -delete可以直接把临时文件删掉。但要注意-exec里花括号{}会依次替换成每个文件名后面的\;不能写错。locate是另一个查找命令它基于一个预建的数据库查起来比find快很多。缺点是数据库不是实时更新的新创建的文件可能查不到需要用updatedb手动更新。grep严格来说是文本过滤命令但它和文件管理结合得非常紧密。最常见的就是查日志grep ERROR app.log把包含错误信息的行输出出来。加-r可以递归搜索整个目录下的文件内容加-l只输出包含关键字的文件名加-n显示行号。which用来定位命令所在路径比如执行which python3会输出/usr/bin/python3。当你遇到“输入命令提示找不到”时第一步就是which 命令名看看命令到底装没装、被装到哪去了。2.5 权限与链接chmod、chown、ln、file这一组命令决定了文件能不能被读、被改、被执行也决定了你看到的“快捷方式”到底是什么。chmod用于修改权限常见的两种写法数字法是权限位用三位八进制数表示比如chmod 755 file其中 7 代表属主可读可写可执行4215 代表其他人可读可执行41所以755是典型的可执行文件权限。符号法则更直观比如chmod ux file给属主加上执行权限chmod g-w file去掉组的写权限。初学者建议先用符号法因为它可读性强不容易把权限数值算错。chown用来修改文件的属主和属组比如chown root:root file把属主和属组都改成 root。这个命令普通用户用得不多但在部署服务、调整目录归属时非常常见。注意修改属主通常需要 root 权限普通用户改不动别人的文件。ln创建链接包含硬链接和软链接。ln -s 目标 链接名创建软链接有点像 Windows 的快捷方式目标是相对路径或绝对路径硬链接则是同一个文件的多个目录项删除一个不影响另一个。实际管理文件时软链接用得更多常见于把配置目录链接到应用期望的位置。file命令用来探测文件类型比如file logo.png如果文件内容其实是其他格式它也能检测出来。在 Linux 里文件扩展名更多是给人看的真正的类型判断得靠内容特征file命令就是干这个的。3. 练习中的关键细节与易错点这些坑我全踩过3.1 绝对路径与相对路径以及 cd - 的妙用很多新手卡在路径问题上。区别记起来非常简单绝对路径一定以/开头比如/etc/nginx/nginx.conf相对路径不以/开头是相对于当前目录而言的比如../logs/access.log。我见过最典型的错误是以为自己已经在目标目录里结果rm -rf files删错了位置。这通常是因为用了相对路径而当前目录跟想象中不一样。所以删除和覆盖类操作我强烈建议先执行pwd看一眼当前位置然后ls列出目标内容确认无误后再动手。cd -是个宝藏命令。它会在你上次停留的目录和当前目录之间来回切换。在练习文件管理时如果你需要在/tmp/one和/opt/two两个目录之间反复复制、移动文件cd -能省掉大量重复输入。我现在的日常操作里几乎离不开cd -。还有一个小技巧长路径切换容易手滑可以在/home下建立一些符号链接作为“快捷入口”。比如你常用某个深层目录/var/www/html/project/public就做一个ln -s /var/www/html/project/public ~/pub然后cd ~/pub就直达目的地。这对练习ln也有帮助。3.2 通配符、特殊字符和引号文件名里的坑文件管理命令里的通配符看着简单用起来却容易踩坑。*匹配任意多个字符?匹配单个字符[abc]匹配字符集中的任一字符。命令ls *.txt会把所有.txt结尾的文件都列出来类似这样的操作在批量清理、批量迁移时特别常见。但文件名不一定都那么规整。Linux 允许文件名里包含空格、单引号、双引号甚至换行符。比如一个文件叫my file.txt直接执行rm my file.txt会被拆成两个参数删掉my和file.txt两个不同的东西非常危险。解决办法有两个一是用引号包裹整个文件名rm my file.txt二是用反斜杠转义空格rm my\ file.txt。我建议你把“文件名带空格时加引号”当成肌肉记忆不管什么命令凡是遇到带空格的路径都先打量一下。还有一种文件名以-开头比如-config.conf命令会把它当成一个选项参数根本不会当文件名处理。这时候在命令选项后面加一个--来终止选项解析例如rm -- -config.conf。这个双横线技巧很多老手也未必注意到。3.3 删除命令的安全意识rm -rf 的都市传说rm -rf的破坏力大概每个读计算机相关内容的人都知道但真正意识到它有多危险通常都是踩坑之后。我记得有一次在练习目录里写脚本本来想删除临时目录./temp结果因为路径里少写了一个点变成了rm -rf / temp那一刻系统开始疯狂报错好在及时用 CtrlC 中断了脚本才没有造成更大损失。从那以后我给自己立了几条规矩rm -rf后面必须跟绝对路径时至少读三遍再回车能不用rm就不直接用rm先挪到回收站或者临时目录确认没问题再清空重要数据一律考虑备份策略删除前先想到“如果不小心删了怎么恢复”如果没有答案就不要轻易删在脚本中使用rm -rf时先设置防呆校验比如if [ $target / ]; then exit 1; fi。我把这些规矩当成保命条款虽然听起来保守但在运维岗上谨慎就是最大的专业。3.4 管道、重定向与命令组合让命令“接力跑”单条命令能做的事情有限真正体现文件管理功力的是命令组合。这里关键符号有几个|管道把左边命令的输出作为右边命令的输入重定向输出到文件覆盖原内容追加输出到文件末尾把文件内容作为命令输入前后命令都成功才执行后者||前一个命令失败才执行后者21把标准错误输出合并到标准输出一并重定向。举个例子你想统计当前目录下有多少普通文件可以写ls -l | grep ^- | wc -l。这里grep ^-把ls -l输出里以-开头的普通文件行筛出来再交给wc -l计数。再比如把目录下所有.txt文件内容中都包含error的文件名找出来grep -l error *.txt。如果目标是按日期把日志压缩归档则可以组合find和tarfind . -name *.log -mtime 30 -exec tar -czf old_logs.tar.gz {} 。组合命令是文件管理练习的“分水岭”从单条命令走向组合命令时你的思维会从“一个个点操作”变成“一条线流程化”。4. 拿来就能用的练习方案从零搭建目录到自动整理4.1 新手第一课5分钟手搓一个项目目录结构很多新手拿到命令后不知道该练什么我最推荐的第一个练习就是手工搭一个项目目录。假设你要创建一个 Web 项目的标准结构包含文档、源代码、测试和备份目录cd ~/practice mkdir -p myproject/{docs,src,test,backup} touch myproject/docs/README.md touch myproject/src/app.py touch myproject/test/test_app.py cp myproject/docs/README.md myproject/backup/README.md.bak mv myproject/test/test_app.py myproject/test/test_app_main.py这段操作能覆盖mkdir -p、touch、cp、mv做完之后再用tree myproject看一眼结果非常有成就感。你可以尝试把目录层级做得更深一些比如src/utils/helpers然后把文件在目录之间移来移去直到你觉得自己对路径和命令已经形成条件反射。我建议每次练习都从空目录重新开始就像重新搭积木一样。重复几轮之后你会发现同样的命令开始从“记忆”变成“本能”速度也会明显提升。4.2 进阶练习批量重命名与移动文件批量操作是文件管理从“手工”走向“高效”的关键。我给你一个我自己经常用的练习场景在~/practice/files目录下批量创建一批data1.txt、data2.txt、data3.txt文件然后写下一条循环命令把它们统一改名为包含日期的重命名格式cd ~/practice/files for f in *.txt; do mv $f ${f%.txt}_$(date %Y%m%d).txt done这段脚本里$f的双引号是为了防止文件名带空格时被拆分成多个参数。${f%.txt}是 Shell 参数扩展表示去掉文件名的.txt后缀再加上新后缀。练完这个你稍微改造一下就能做“统一加前缀”“按类型分文件夹”等操作。另一个重命名工具是renameLinux 下通常有两个版本语法不一致。用之前先rename --version看看是 Perl 版本还是 util-linux 版本。比如 Perl 版本可以这样把.txt改成.mdrename s/\.txt$/.md/ *.txt批量移动也一样可以在for循环里结合mkdir -p把文件按月份分进不同目录for f in *.log; do mon$(date -d $(stat -c %y $f) %Y%m) mkdir -p logs/$mon mv $f logs/$mon/ done初次看这串可能有点晕照着敲一遍再用ls logs/查看结果理解会深很多。4.3 实战任务用 findtar 做定时备份备份是文件管理命令最典型的综合应用场景。我设计一个练习在~/practice/logs下生成一些.log文件模拟 7 天内修改过的旧日志然后用find找出它们并打包归档。cd ~/practice find logs -name *.log -mtime -7 -exec tar -czf logs_backup.tar.gz {} 拆解一下find logs -name *.log先找出所有日志文件-mtime -7限定最近七天内修改过-exec tar -czf logs_backup.tar.gz {} 则把找到的文件交给 tar 打包。这里用而不是\;表示尽可能一次性把所有文件名传给tar效率更高。练完这个你可以再进一步如果希望备份的是整个日志目录但排除临时文件直接使用tar的排除参数更简单tar -czf logs_backup.tar.gz --exclude*.tmp logs理解了之后你可以把这条命令写成.sh脚本配合cron周期执行那就是一个非常实用的自动备份方案了。不过不要一上来就搞 cron先把手动执行跑通体会每一个环节在做什么。4.4 综合任务整理下载目录的“挑战”当你做完了前几个练习可以来一个“毕业挑战”模拟一个乱糟糟的下载目录里面混合了.jpg、.png、.pdf、.zip文件要求按扩展名自动分类到对应文件夹并且删除重复文件。你可以先手动创建一坨乱文件cd ~/practice/downloads mkdir -p images docs archives touch a.jpg b.PNG c.png report.pdf data.zip archive.zip然后写一个基础分类脚本注意大小写问题for f in *; do case ${f##*.} in jpg|JPG|png|PNG) mv $f images/ ;; pdf|PDF) mv $f docs/ ;; zip|ZIP) mv $f archives/ ;; esac done${f##*.}是 Shell 参数扩展取文件名最后一个小点后面的后缀。这里我故意在创建文件时混入了大写后缀练的就是文件类型判断不能只信小写。重复文件删除有点难度可以先来一个简化版用md5sum计算文件哈希找出哈希重复的文件并rm其中一个。例如md5sum * | sort | awk seen[$1] {print $2} | xargs -r rm这行命令的意思是先计算所有文件的 md5按哈希排序然后用awk把重复哈希对应的文件名列出来再交给xargs rm删除。练到这一步你对管道、重定向、命令替换的理解已经是实打实的了。5. 常见问题排查与解决速查表5.1 命令找不到多半是 PATH 没配好新手最容易遇到的报错是command not found。很多人的第一反应是“命令没装”但有时候命令明明装了只是不在系统默认的搜索路径里。排查时先运行which 命令名如果输出了路径说明命令存在只是当前 shell 的 PATH 没包含它。查看 PATH 用echo $PATH这是一串用冒号分隔的目录列表。临时添加目录可以执行export PATH$PATH:~/bin这只是在当前终端有效想永久生效就写进~/.bashrc或~/.zshrc然后source ~/.bashrc。另一种常见情况是发行版系不同比如你在 Debian/Ubuntu 上搜“rpm”命令当然找不到因为 rpm 是 Red Hat 系CentOS、RHEL的包管理器。遇到“没找到 rpm 命令”时最好先确认自己用的系统是什么派系再决定用apt、yum还是dnf。5.2 Permission denied该怎么办Permission denied也是高频报错。看到这个第一反应是检查权限ls -l 文件。如果权限位显示你当前用户没有读或写权限就用chmod修改权限。如果文件属于 root 或其他用户而且你不知道密码那就只能联系管理员或使用有sudo权限的账号。还有一个容易忽略的点你可能对文件本身有权限但对文件所在的目录没有执行权限导致无法进入目录或访问其中的文件。这种情况在练习时很少见但真实环境里经常出现。检查时别只看文件权限还要ls -ld 目录名看看目录权限。记住一个原则sudo只是临时提权的工具不要所有命令都无脑加sudo尤其在文件管理和删除操作中加了sudo的rm -rf破坏力会成倍翻升。5.3 文件被占用删不掉怎么办Linux 下提示Text file busy或者Device or resource busy说明有进程正在使用这个文件或挂载点。先用lsof 文件路径查看是哪个进程在占用比如lsof /var/log/nginx/access.log输出会列出占用该文件的进程 PID。确认可以释放后再终止进程或服务然后再执行删除。练习阶段如果遇到这个问题通常是某个终端在tail -f一个日志文件退出终端或按 CtrlC 就能解除占用。Windows 下删不掉文件时可以用进程资源监视器查看句柄也可以重启电脑后再试。不过 Windows 里文件管理的命令生态跟 Linux 差异很大建议你把主要精力放在 Linux 命令上Windows 能用命令解决的部分按需学即可。5.4 文件名带特殊字符命令直接翻车文件名里如果带了空格、引号、美元符号、分号等直接裸写进命令很容易出问题。我见过一个杯具脚本里写rm $file结果$file变量因为没加引号被 shell 拆成多个参数把其他文件一起删掉了。处理特殊字符的通用方法是双引号包全场$变量。如果文件名里有换行符常规find加xargs也会翻车因为默认按空白字符切分。解决办法是使用-print0配合-0find . -name *.tmp -print0 | xargs -0 rm-print0让find用空字符而不是换行符分隔输出xargs -0感知这种格式这样即使文件名里有换行也能安全处理。这些技巧属于“不踩坑不知道踩一次就长记性”的类型练习时专门构造几个特殊文件名试一下印象会很深。5.5 常用命令速查表下面这张表是我整理出来的文件管理高频命令速查方便你贴在终端旁边或者存成笔记命令常用参数 / 示例作用与备注pwdpwd显示当前工作目录的绝对路径cdcd ..、cd -、cd ~切换目录cd -返回上次目录lsls -l、ls -a、ls -lh列出目录内容及属性treetree -L 2树形显示目录结构-L限制层级touchtouch file创建空文件或刷新时间戳mkdirmkdir -p a/b/c创建目录-p自动创建父目录cpcp -r 源 目录、cp -a 源 目录拷贝文件或目录-a保留属性mvmv 源 目标移动或重命名文件rmrm -r dir、rm -f file删除文件或目录慎用组合findfind /path -name *.log -mtime -7按名字、类型、时间、大小找文件locatelocate nginx.conf按数据库快速定位文件grepgrep -r error /var/log在文件内容中过滤关键字chmodchmod 755 file、chmod ux file修改文件权限chownchown user:group file修改文件属主和属组lnln -s 目标 链接名创建软链接快捷方式filefile unknown.bin探测文件真实类型tartar -czf x.tar.gz dir打包并压缩文件-xzf解压xargsfind . -name *.tmp -print0 | xargs -0 rm把输入转换成命令行参数执行whichwhich python3显示命令所在路径这张表只是骨架练习时建议你针对每个命令再去查一下man文档里的详细参数但不要死记硬背用到哪查到哪比一口气背几十个参数更有效。6. 一些个人经验与后续进阶建议6.1 我的练习土办法把命令当“外语”学说实在的我最初练文件管理命令完全没什么章法就是用最笨的办法在练习目录里反复造场景、敲命令、看结果。我给自己定了一个规则同一个操作今天用cp明天就逼自己用find加管道实现后天再改造写进脚本。这种“用不同方式解决同一问题”的练习比单纯背命令有意思得多也能让你真正理解命令之间的联系。有一段时间我甚至把常用命令的英文全称整理出来理解它们为什么叫这个名字。比如ls是 listcp是 copymv是 moverm是 remove。理解了词源命令的作用就不再是一串没意义的字母记起来轻松很多。6.2 从手工操作到脚本化练习一段时间后你会发现自己重复敲的命令越来越多。这时候就该换思路了把“手工操作”变成“脚本”。刚开始可以只是一行命令的别名比如在配置文件里写alias backuptar -czf ~/backup.tar.gz ~/practice。后来可以变成几行的 shell 脚本再到后来你甚至可以结合cron让它定时执行。手动敲命令就像骑自行车写脚本就像开汽车。自行车练的就是你的平衡感和路感而汽车能让你高效处理长距离通勤。但别一上来就想着写脚本基础命令的手感和直觉还没建立起来的话脚本出了问题你也定位不了。6.3 保持与扩展文件管理命令练好之后最大的红利是你学其他东西变快了。学习vim、git、awk、sed的时候会发现这些工具本质上都在跟文件打交道很多概念是相通的。我曾经花了两三天集中练find和xargs之后再看别人写的运维脚本立刻就能看懂那些恐怖的“一行流”是做什么的了。最后说一句看一百篇文章不如亲手敲一遍。你可以把今天文章里提到的命令按顺序过一遍也可以直接跳到第四章的练习方案开始造目录。文件管理命令没有那么高深练得多了它们自然会变成你身体记忆的一部分在关键时刻拉你一把而不是让你出一身冷汗。