恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Linux目录与文件操作入门:从路径、命令到权限与链接

  • 首页
  • 资讯中心
  • /
  • Linux目录与文件操作入门:从路径、命令到权限与链接

相关资讯

大模型API成本优化实战:从月账单过万到降低60%的工程方法 2026/10/10 13:05:49
服务综合物流企业的智能客服公司有哪些?关键不是“会聊天”,而是“会查货” 2026/10/10 13:05:49
MySQL8.0索引调优实战:从慢SQL到执行计划与联合索引设计 2026/10/10 13:00:48

最新资讯

课堂行为数据集VOC/YOLO双格式详解与YOLO训练避坑指南
基于YOLOv9的电动车头盔佩戴检测:从训练到部署全流程实战
用JavaScript实现图片翻转:Canvas坐标系与像素级处理实战
MFC扫雷游戏开发实战:从消息映射到算法实现的完整指南
MFC扫雷源码详解:消息映射、GDI双缓冲与经典算法实战
AI Toolbox Image工作台评测:本地化AI图片生成渠道管理的完整指南

今日推荐

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Linux目录与文件操作入门:从路径、命令到权限与链接

发布时间:2026/10/10 13:05:49
Linux目录与文件操作入门:从路径、命令到权限与链接 1. 目录与文件操作Linux入门的必经之路打开终端敲下第一行命令的时候你会发现自己面对的是一个赤裸裸的字符界面没有图标、没有按钮、没有“下一步”。所有操作都建立在目录和文件的组织之上。Windows用户习惯的C盘D盘、文件夹嵌套、右键复制粘贴到了Linux这里全变了样。一切皆文件目录也只是一个特殊的文件这种理念会在你输入前几条命令后立刻感受到。这篇日志是系列的第二篇都到第二篇了说明你已经熬过了装系统、配环境、勉强让终端输出helloworld的阶段开始真正接触Linux的骨架——目录与文件操作。这篇能解决的问题很实在第一搞懂Linux的文件到底是怎么组织的第二把最常用的目录文件命令吃透不光是会敲还要知道为什么这么用第三避开我当年踩过的那些坑。适合刚入门的同学也适合用了一段时间但总觉得根基不稳的朋友。说句实话命令这东西谁都能敲但真正拉开差距的是你对“为什么”的理解。为什么绝对路径比相对路径稳为什么rm -rf用不好会出事为什么硬链接不能跨文件系统这些问题搞懂了你才算真正在学Linux而不是在背命令。2. 先搞懂Linux目录树根、家目录和路径的底层逻辑2.1 单根树结构Windows的盘符为什么在Linux里不存在Windows里C盘、D盘、E盘各有各的根互不相干。Linux是单根树结构整台机器的所有文件都从一个根开始往外长这个根就是/。不管你有三块硬盘还是五块硬盘最终都会被挂载到根目录下的某个目录节点上统一在这个树形结构里管理和访问。这个设计的差异带来一个很实际的感受在Windows里你找文件要先去盘符再进目录在Linux里你只需要沿着树往下走路径永远是/某个目录/某个目录/文件名这种形式。第一个斜杠就是根后面的每个斜杠都是树的层级分叉。我用Linux的第一周最不适应的就是这点——文件位置从“哪个盘”变成了“哪条路”但习惯了之后你会觉得这个设计干净得多所有存储设备的关系清清楚楚不存在什么“F盘里还有个G盘”这种混乱局面。2.2 绝对路径与相对路径一个稳一个快路径有两种写法这个必须分清。绝对路径从根开始比如/home/username/Documents/project/README.md完整描述了文件在树上的精确位置。相对路径从当前所在的目录开始用.表示当前目录用..表示上级目录比如你在/home/username/Documents下面直接写project/README.md就指向同一个文件。我的经验是写脚本、配置文件、或者给别人的文件路径的时候绝对路径优先因为它不受当前所在位置影响任何人在任何地方执行都能找对目标。日常交互操作中相对路径更快少敲几个字。但要注意一种最常见也最让人头大的情况——脚本里用了相对路径然后你用cron定时任务去跑结果找不到文件。cron的执行目录通常不是你预期的那个目录相对路径就失效了。所以凡是写在脚本里的路径一律用绝对路径这是避免低级问题的基本操作。2.3 家目录、隐藏文件和目录树的几个关键节点~代表当前用户的家目录也就是/home/用户名这个目录。管理员root的家目录是/root和普通用户不在一起这个设计和安全相关。cd ~可以快速跳回家目录我每天敲这个命令的次数比其他任何命令都多。cd -则是回到上一次所在的目录在长路径里来回切换时特别好用。隐藏文件这个概念刚从Windows转过来的人容易混。在Linux里文件名以.开头的就是隐藏文件比如~/.bashrc、~/.ssh/。ls看不到它们必须用ls -a。隐藏文件里通常存配置文件不是用来防看官的只是保持目录整洁。ls -l显示的文本中-rw-r--r--第一个字符如果是d代表目录是l代表链接是-代表普通文件。这个细节很多教程提一嘴就过了但实际用处极大——你一眼就能看出bin和lib这类目录长得不一样。另外建议把Linux常用目录节点记一下/etc系统配置文件所在地修改配置基本都来这里/var变动数据日志缓存锁文件/tmp临时文件重启可能会被清空/usr系统软件和用户安装的程序这个目录在有些发行版里比你想象的重要/opt第三方大型软件常放这里/home所有普通用户的家目录的上级知道这些节点做什么遇到问题的时候能大概判断去哪个目录找比乱翻快很多。3. 日常操作命令的完全拆解从进入目录到文件增删3.1 cd、pwd和ls你的终端三板斧进入目录用cd这是最基本的操作。cd /var/log直接跳转cd ..回到上一级cd ../..上两级cd ~回家。有个细节如果你只输入cd不带任何参数效果等同于cd ~这个约定在几乎所有Linux发行版上都成立。不理解的读者可以直接试输入cd回车再看一下当前路径十有八九到了家目录。pwd打印当前工作目录全称是print working directory。这个命令看似简单实际上在写脚本排查问题时非常重要。我经常在排查部署问题的时候先跑一下pwd确认脚本认为自己当前在哪个目录——往往就能找到相对路径出错的根源。ls是list的缩写列出目录内容。它有几个参数你必须形成肌肉记忆ls -l看详细信息权限、属主、大小、修改时间ls -a显示隐藏文件ls -lh中的h参数让人眼可读的大小KB、MBls -lt按修改时间排序ls -R递归列出子目录。ls -l里面有个总用量第一行你可能会好奇它算什么——是目录下所有条目占用磁盘块的估算不是文件总大小这个数值在某些文件系统上并不精确别拿它当真就行。3.2 mkdir与touch创建目录和空文件的前世今生创建目录用mkdir。mkdir project在当前目录建一个叫project的目录。mkdir -p a/b/c一次性建多级目录这是最实用的参数没有-p的话a/b/c的上级a不存在就直接报错有-p它会自动创建所有缺失的层级。很多安装脚本里你都能看到mkdir -p就是为了保证目录级别完整不因为某层没建而中断。touch有两个作用。第一创建一个空文件touch notes.txt。第二更新已有文件的时间戳比如touch config.conf能把文件的修改时间改成当前时间这在某些基于文件时间戳的自动化任务里有用。我见过有人用touch来批量生成临时文件做测试也确实方便——touch test{1..5}.txt能一次生成test1.txt到test5.txt五个文件花括号的展开功能是shell内置的这个技巧很实用。3.3 cp、mv、rm复制、移动和删除背后的注意事项cp复制文件。基本用法cp source.txt dest.txt复制到一个新文件名cp source.txt destdir/复制进目录并保留原名。cp -r sourcedir destdir/递归复制整个目录不加-r复制目录会直接报错。cp -a是归档模式保留权限、时间戳、链接结构等所有属性备份目录的时候我把-a当作默认选择比-r更彻底。cp -i在覆盖前会询问确认这个参数我建议开alias因为你永远不知道目标目录里是不是已经存在同名文件覆盖掉可能就回不去了。mv既可以移动文件也能重命名。mv old.txt new.txt就是重命名mv file.txt /path/to/dir/则是移动本质上是同一操作——都是在目录树中改变文件的位置和名称不涉及数据的实际拷贝。mv跨文件系统时会自动变成复制加删除速度会慢一些这个细节在移动大文件时你就能感觉到。rm删除。rm file.txt删除文件rm -r dir递归删除整个目录rm -f强制删除不提示。我说句实在话rm是你必须敬畏的命令。rm -rf /这种毁灭性操作网上段子很多但真出事的时候一点都不好笑。我见过有人把rm -rf /usr写成rm -rf / usr中间多一个空格整个系统基本报废。这类错误在真实工作中反复发生所以强烈建议给rm设置alias加-i参数让你在最危险的动作前有一个回车确认的机会。另外关键数据永远要有备份rm没有回收站删了就真没了。3.4 find、locate与通配符找文件的三重境界find是查找文件的利器。基本用法find /home -name *.log在/home下递归找所有.log结尾的文件。find /var -type f -size 100M找大于100MB的文件find . -name *.conf -mtime -7找七天内修改过的配置文件这是排查问题时的黄金命令。-exec参数能对找到的每个结果执行操作比如find . -name *.tmp -exec rm {} \;批量删除所有.tmp文件——这个语法里{}代表当前找到的文件名\;标记exec参数的结束。需要提醒的是文件多的时候find可能比较慢这是正常的不是死机了。locate比find快得多因为它查的是系统预建的数据库。但locate的数据库不是实时更新的新创建的文件可能查不到要跑updatedb更新一下。我的实际体验是find更可靠可预测locate更快速两种配合着用。通配符是shell层面的功能不是命令本身的参数。*匹配任意多个字符?匹配单个字符[abc]匹配括号中的任意一个。比如*.txt、file?.conf、test[123].sh。这些通配符会被shell先展开成匹配文件列表然后传给命令执行。所以rm *.log实际执行的是rm加上所有匹配文件名的列表。理解这一点很重要——如果当前目录没有.log文件shell会把*.log原样传给rmrm就会报“无法删除*.log: 没有那个文件或目录”。这个看着不像什么大事但排查问题的时候能帮你排除一个疑点。4. 查看文件内容的六种姿势与重定向的实战运用4.1 cat、less、tail和head不同场景看文件cat是concatenate的缩写最常用于把整个文件内容打印到终端。小文件用cat方便但大文件就别用它了会让终端刷屏卡顿。cat -n显示行号这在看配置文件和代码时很实用。cat的另一个绝活是合并文件cat a.txt b.txt c.txt把a和b的内容拼成c。这个操作我经常用来合并日志片段和整理多段配置。less是看大文件的正确姿势。less /var/log/syslog打开文件后支持上下翻页按/进入搜索模式按q退出。它不用把整个文件一次性读入内存加载大日志文件特别顺畅逆向往回翻页毫无压力。我和很多新人说过别再用cat去cat一个几百MB的日志那是在浪费生命。less虽然看起来只有方向键翻页但它的搜索功能加分页功能足以应付绝大多数阅读场景。tail看文件尾部tail -20 file.txt显示最后20行。最实用的参数是-ffollow模式持续跟踪文件新增内容。调试服务日志时tail -f /var/log/application.log是标配操作你能实时看到应用打印的记录。head反过来看开头head -20 file.txt显示前20行。组合起来tail -100 access.log | head -50可以看日志尾部中的前50行这种管道组合是Linux命令的日常操作方式。4.2 重定向、管道与输入输出的思维转换每个Linux进程启动时都继承了三个标准数据流标准输入stdin编号0、标准输出stdout编号1、标准错误stderr编号2。重定向就是在shell里控制这三个流到哪里去。把标准输出重定向到文件比如ls -l list.txt注意它会覆盖文件原有内容。则是追加echo new line notes.txt在文件末尾追加内容而不覆盖。2重定向错误输出command 2error.log。21把标准错误也指向标准输出所指向的地方这个组合在脚本里极其常见——你想把正常输出和错误输出都送进同一个文件就写command all.log 21。这里有个顺序问题21必须放在后面才能生效写反了在某些shell里会有奇怪行为我踩过这个坑好几个小时才反应过来。管道符|则是把左边命令的标准输出接进右边命令的标准输入实现命令间的数据流传递。ls -la | grep \.conf$、ps aux | grep nginx这些组合让Linux命令瞬间有了复合能力。理解管道是理解Linux哲学的重要一步——每个命令做好一件事然后通过管道拼接成更强大的工作流。4.3 echo、touch与文件内容的基本编辑手段echo打印文本。echo Hello World直接在终端输出echo Hello file.txt把文本写入文件echo Append file.txt追加内容。它还能解释变量echo $HOME打印家目录路径。构建脚本时echo是输出调试信息和生成配置文件的主力军。真正编辑文件还是需要编辑器。nano适合新手界面底部有快捷键提示CtrlO保存、CtrlX退出。vim入门曲线陡峭但熟练后效率极高i进入插入模式编辑Esc退回普通模式:wq保存退出。我的建议是先学会nano应急再用一两个月时间痛下决心学vim它值得。有个工具叫tree不是内置命令需要单独安装。它能把目录结构以树状图的形式打印出来tree -L 2 /home显示两层目录结构。看一个项目整体布局时特别好用比一层层cd下去效率高太多了。我刚进一个新项目目录时第一件事永远是tree。5. 权限的本质rwx、数字计算和chmod的底层逻辑5.1 什么叫做“一切皆文件”和它带来的权限体系Linux里目录、设备、管道、套接字逻辑上都作为文件处理。没有扩展名决定打开方式这种Windows思维而是由权限位和文件内容格式共同决定。ls -l显示的第一列10个字符是权限描述第一个字符是文件类型后面九个字符分成三组分别代表属主user、属组group和其他人others的权限。每组三个位置依次是读r字母r代表read写wwrite和执行xexecute。对于普通文件r能读内容w能改内容x能作为程序执行。对于目录r能列出目录下的文件名w能增删改名目录内的文件x能进入这个目录。第三个位置可能是x或者s或者ts是setuid/setgid位t是sticky bit比如/tmp目录就有t意味着只有文件属主能删除自己的文件这个设计防止用户在共享临时目录里乱删别人的文件。5.2 数字权限rwx如何换算成755和644数字权限的核心是二进制r代表4w代表2x代表1。每组权限的数值就是三者之和。7421完整权限642可读写不可执行541可读可执行不可写44只读0无任何权限。chmod 755 script.sh意思是属主7rwx属组5r-x其他人5r-x。这是脚本文件的常见配置——所有者能改别人能读能执行但改不了。配置文件常用644属主可读写其他人只读。为什么写成三位数因为权限三组正好对应三个数字这个对应关系强烈建议直接背下来用多了自然形成条件反射。字母模式也可以chmod ux script.sh给属主加执行权限g-w去掉属组写权限or设置其他人权限为只读。字母模式在微调时更直观数字模式在整体设置时更快。我有个习惯创建脚本后第一时间chmod x script.sh然后跑一遍验证避免那种“明明文件没问题但就是跑不了”的尴尬。5.3 chown、Chgrp、umask与新用户导致的权限坑chown改变文件属主chown username file.txt。chown username:group file.txt同时改属主和属组。chgrp单独改属组。这两个命令在部署应用、搭建网站、运行容器时天天用。比如把某个目录的所有权给到运行nginx的用户chown -R nginx:nginx /var/www/html。注意-R递归不加只对目录本身生效子目录全都不会变这是最常见的遗漏。umask决定了新建文件的默认权限。查看当前umask直接输入umask通常是0022。计算逻辑创建普通文件的默认权限是666减去umask得到实际权限666-022644。目录的默认权限是777777-022755。所以新文件都是644新目录都是755这是个不错的默认组合。umask 002的话新文件变成664新目录775。多人协作项目里常用002让大家同组可写。我实际遇到过最典型的权限坑某次把项目目录的属组改了但忘了加读写权限结果同组同事能进去看却改不了文件线上改了半天的权限集最后一条chmod -R gw project解决问题。权限跟目录结构、环境配置这些耦合很深排查这类问题时要一层层往上检查不能只看出问题的那个文件本身的权限。6. 软链接与硬链接通向同一个文件的两种思路6.1 软链接是个快捷方式ln -s的适用场景软链接符号链接symbolic link可以类比Windows的快捷方式。它本身是个独立文件存的是目标路径字符串。创建命令ln -s /真实路径 /链接位置。比如ln -s /etc/nginx/nginx.conf ~/nginx.conf之后你在家目录打开nginx.conf就是在打开真实配置文件。ls -l显示的软连接类型字符是l权限位看起来是777但那个权限不指向真实文件的实际权限——你访问软链接时最终生效的权限是目标文件的权限这个细节经常引起误判。软链接可以跨文件系统可以指向目录删除它不影响目标文件。它的最大弱点是如果目标文件被移动或改名链接就会失效变成传说中的“断链”。file命令可以检查链接指向的路径。软链接的经典应用场景把日志目录链接到有更大空间的磁盘把程序安装版本做成软链接实现多版本切换把共享库的某个版本链接到系统默认查找路径。几乎每个Linux系统上都能找到大量软链接它们让文件系统变得异常灵活。6.2 硬链接是怎么回事inode和引用计数硬链接不像快捷方式它直接指向同一个inode。inode是文件系统中保存文件元数据的数据结构包括文件大小、权限、时间戳和磁盘块位置。文件名只是指向inode的入口。硬链接本质上是在文件系统里给同一个inode加了一个新的目录项。这样两个文件名指向同一份真实数据无法区分哪个是“原始”哪个是“链接”——引用计数为2删除任何一个只是减少计数另一个还在。创建方式ln 源文件 目标文件不加-s就是硬链接。硬链接不能跨文件系统因为inode只在同一个文件系统内有效。不能对目录做硬链接出于安全和环路的考虑但软链接随便指。文件系统会在每个inode上记录链接数ls -l第二列就是硬链接数量。目录的硬链接数至少有2因为自身和.都指向它子目录里的..也会增加计数。怎么选择日常操作中软链接用得更多因为灵活、直观、功能全面。硬链接更适合同一文件系统里的多位置引用而且它和源文件真正共享数据改动会互相影响节省副本空间。理解了硬链接底层原理你对“删除文件”这件事的认知会彻底改变——删除只是解除目录项和inode的关联文件所占空间是否真正释放取决于还有没有其他硬链接引用这个inode。7. 常见的坑与排查技巧出了问题怎么快速定位7.1 “No such file or directory”的四种真身这个报错出现的频率极高。第一种情况路径写错了文件确实不存在。第二种情况路径中的某个目录不存在也会报同样的错。第三种情况权限不足时有些文件系统会报Permission denied而不是no such file但有些老版本或特殊配置下也会提示找不到文件——这是为了不暴露文件存在与否的信息。第四种情况脚本的换行符问题在Windows下编辑的脚本文件带CRLFLinux执行时可能把脚本解释器路径都弄错报“No such file or directory”我第一次遇到这个问题时一脸懵。排查思路先用ls -la检查目标路径每一级目录是否存在再看权限如果是脚本执行file script.sh看是不是CRLF换行的文本再配合strace跟踪系统调用看它实际尝试打开的是哪个路径。strace是排查这类问题的终极武器能看到程序究竟访问了哪些文件、拿到什么错误码。7.2 Permission denied 和 Argument list too longPermission denied通常有两种文件没有读或执行权限或者目录没有进入权限。碰到这个先ls -l看清权限和属主再确认自己是不是有权限操作。需要留意的是有些挂载点有nosuid、noexec之类的挂载选项即使权限位看起来没问题依然会被拒绝执行。Argument list too long这个错误出现在参数数量或总长超过系统限制时。我遇到过批量操作几千个文件时报这个解决方法是交给find来处理find . -name *.txt -exec rm {} \;这个方式通过逐个传递文件名绕过了参数长度限制。也可以用xargsls *.txt | xargs rm标准输入传递而不是命令行参数传递。ulimit -a能查看系统相关限制改限制涉及sysctl内核参数普通场景下直接用find分割处理是更常用的方案。7.3 珍贵的一课操作大目录、生产环境与别随便用管道我刚开始用Linux时栽过一个大跟头。某个晚上我要在项目目录里删除所有.tmp结尾的临时文件当时很得意地敲下rm -f *.tmp结果忘了那个目录是一个线上项目里面恰好有一个用户上传的文件名字就叫*.tmp。由于通配符被shell优先展开了其他.tmp文件被删掉了唯独这个原义匹配的文件还在。后来我养成了习惯批量删除前先执行ls看通配符实际匹配到了什么确认无误再执行删除。生产环境还有一个铁律——任何破坏性操作之前先查后动手。find搜索确认目标文件列表然后ls -la逐一过目再执行操作。某次我在某公司排查日志占满磁盘的问题一个新手同事直接跑了rm -rf /var/log/*把系统日志全清了问题的根源没找到还损失了排障数据。正确做法是先删除归档的旧日志保留当前周期日志同时用df -h确认空间释放情况把问题原因记下来防止再次发生。различных场景下不会出错。8. 我的日常文件操作习惯与最后一点建议从一个真实的使用片段说起。我每天下班前会有个固定动作把当天的工作文件归档。mkdir -p ~/work/backup/2025-$(date %Y%m%d)然后cp -a ~/work/project ~/work/backup/2025-xxxxx/find ~/work/project -name *.log -mtime 7 -exec rm {} \;清理掉一周前的日志。这三条命令组合完成备份、复制和清理每一分钟都在Linux上有效率地工作。我个人在实际操作中的体会是目录与文件操作看似基础但它们是Linux一切高级操作的骨架。你写的每个脚本、部署的每个服务、排查的每个故障最终都会落到对文件和目录的增删改查上。基础打牢了后面学权限模型、学systemd、学容器都会顺滑得多。最后再分享一个小技巧给你的常用命令设置一些个性化alias。在我的配置里alias llls -alF、alias rmrm -i、alias lals -A每天能节约不少时间。把.bashrc或者.zshrc经营好让终端真正变成你的顺手的工具。别强求一次记住所有命令那些用了十二年Linux的老人也照样会偶尔man一下。重点是理解逻辑剩下的交给肌肉记忆和时间。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号