资讯动态

Linux路径与常用命令实战:从入门到排障

发布时间:2026/9/7 23:43:09 来源:尧图企业网站定制
1. Linux文件系统与路径概念入门1.1 为什么路径是Linux操作的第一道门槛很多刚接触Linux的朋友最容易栽跟头的不是命令记不住而是搞不清我现在在哪我要去的文件在哪怎么描述这个位置。Windows时代大家习惯双击图标进文件夹目录层级靠脑子记路径这个概念几乎不用刻意学。但Linux不一样你会发现几乎所有操作都绕不开路径这回事装软件要写路径、改配置要写路径、写脚本要写路径、连排查问题看日志也得先把路径找准了才行。我当年带新人时最爱问一个问题/etc/nginx/nginx.conf这个路径从根目录开始数一共经过了几层目录别看这问题简单真能一步答对的没几个。不是因为难而是大多数人从来没有主动去理解路径的组成结构全靠粘贴复制。等你哪天真要在一台没有图形界面的服务器上部署服务或者写一个自动化脚本要在不同目录之间切换、读写文件路径理解不到位写出来的东西就是各种file not found。理解路径本质上是在理解Linux整个文件系统的组织方式。Linux采用树状的目录结构最顶端是一个叫根目录的/下面挂着/etc、/var、/usr、/home这些标准目录每个目录又可以继续往下挂子目录和文件。你需要掌握的第一件事就是从哪个位置出发去描述一个文件的位置这直接决定你用的是绝对路径还是相对路径。1.2 绝对路径与相对路径的实战对比绝对路径很容易理解就是从根目录/开始一路写到目标文件的完整路径比如/home/user/docs/report.txt。不管你现在人在哪个目录只要写全这条路径系统就能准确定位到文件。相对路径则是以当前所在目录为起点来描述目标位置比如当前在/home/user下要去docs目录里的report.txt直接写docs/report.txt就行。这两者的使用场景差别很大。在命令行里临时操作比如你本来就在/home/user下闲逛那用相对路径肯定更快敲起来字符少。但在脚本和配置文件里强烈建议写绝对路径。原因很实在脚本的执行位置不受你控制可能被cron定时任务调用、可能被systemd服务启动、可能被别的程序用绝对路径调起来一旦脚本里用了相对路径它依赖的就是执行那一刻的工作目录这个是不可控的分分钟给你来个file not found。还有一个容易忽略的点路径里的点和点点。一个点.代表当前目录两个点..代表上一级目录。比如你在/home/user/docs目录下想回到/home/user敲cd ..就行。想在命令里引用当前目录下的文件./install.sh这种写法就是在明说执行当前目录下的install.sh避免系统去PATH环境变量里瞎找。别小看这点和点点脚本里大量使用相对路径做文件定位时多写一个点和少写一个点结果天差地别。提示写脚本和配置文件里的路径建议统一使用绝对路径牺牲一点输入便利换取稳定可控。命令行临时操作则优先用相对路径效率高。两套思路是针对不同场景的不要搞反。1.3 路径相关的隐藏规则与常见陷阱Linux路径里有一个特别容易坑新手的点文件名大小写敏感。Report.txt和report.txt是两个完全不同的文件这在Windows用户眼里简直反人类。另外Linux文件名里可以有空格、可以有特殊字符这给脚本处理带来不少麻烦。比如一个文件叫my report.txt直接输cat my report.txt系统会认为你传了两个参数my和report.txt。这种时候要么用引号包起来cat my report.txt要么用反斜杠转义空格cat my\ report.txt。另一个典型问题是隐藏文件。Linux里以点开头的文件是隐藏文件ls命令默认看不见要加-a参数才显示。新手常常疑惑我明明创建了配置文件怎么ls看不到十有八九是文件名以点开头。这类文件在用户目录下特别多比如.bashrc、.profile这些都是藏着的重要配置文件。还有一个路径解析上的细节路径末尾要不要带斜杠。ls /home/user/ 和 ls /home/user在绝大多数情况下结果一样但如果你用软链接符号链接指向目录就会发现末尾斜杠的行为差异能直接影响命令结果。cp命令里源路径末尾带不带斜杠更是天壤之别后面讲文件操作时我会着重强调。2. 日常高频Linux基本命令实操2.1 目录操作三兄弟pwd、cd、ls这三条命令是Linux命令行里最基础的可以这么说你只要打开终端就一定会用到它们。pwd用来显示当前所在目录的完整路径。功能简单但实际排查问题时特别有用。脚本执行报错找不到文件第一件事就是跑一下pwd看看当前工作目录到底在哪很多问题瞬间就明白了。它是定位自己的命令。cd用来切换目录。cd /etc切换到etc目录cd ..回到上一级cd ~直接回到当前用户的家目录cd -切回上一次所在的目录这个用法很多人不知道在两个目录之间来回切换时非常好用比我之前傻傻地重复输完整路径快得多。注意cd命令只有登录用户的HOME目录有~这个快捷写法root用户返回的是/root。ls用来列出目录内容但它远比想象中强大。基础用法是ls直接列出当前目录内容ls -l以详细列表形式展示文件权限、属主、大小、修改时间ls -a显示包括隐藏文件在内的所有文件ls -h配合-l使用能显示人类易读的文件大小比如1K、234Mls -t按修改时间排序ls -R递归列出子目录内容。实战中我几乎固定使用ls -lh的组合信息完整又直观。还有一个ls -d */的技巧只列出当前目录下的子目录不带出文件清理目录结构时很好使。2.2 文件管理命令touch、cp、mv、rm的安全打开方式文件操作是Linux日常管理中使用频率最高的一类命令但也是事故高发区尤其是rm命令一个不小心就能把重要数据删得干干净净连后悔药都没得吃。touch命令主要有两个用途创建空文件和更新文件时间戳。想快速新建一个空文件用来测试touch test.txt就完事了。如果文件已存在touch会把它最后修改时间更新为当前时间这个特性偶尔用来触发某些依赖文件时间戳的构建任务。cp命令复制文件或目录。cp file1.txt /home/user/backup/把文件复制到目标目录cp -r dir1 /tmp/dir2递归复制整个目录不加-r复制目录会直接报错cp -p连同文件属性一起复制常用于备份时保留原始权限和时间戳。这里必须重点强调一个坑cp复制软链接时默认行为是复制软链接指向的目标文件内容而不是复制链接本身。想复制软链接要加-d或-a参数。好多人在备份配置目录时没注意这点结果所有软链接全变成了实体文件恢复回去以后一堆程序报错。mv命令用来移动文件或重命名。mv old.txt new.txt就是重命名mv file.txt /tmp/就是移动。mv也有一个容易翻车的点跨文件系统移动时mv底层其实是先复制再删除如果中途断掉或者空间不足可能源文件还在目标只复制了一半。所以跨设备移动重要数据我习惯用cp确认完整后再rm源文件慢是慢点但稳。rm命令删除文件或目录。rm file.txt删除文件rm -i会逐个问你是否确认强烈建议养成加-i的习惯尤其root用户rm -r递归删除目录及其内容rm -f强制删除不提示。这三个参数组合出来的rm -rf是个危险系数极高的命令网上各种段子都在说别乱用。讲句实在话rm -rf本身没错错的是用错地方。比如rm -rf /home/user/和rm -rf /home/user/的区别末尾多一个斜杠在某些老版本命令解析下可能导致完全不同的后果。我的经验是删除前先ls看清楚再执行rm操作重要的删除操作临时加个-i参数让系统跟你确认一遍不丢人。2.3 查看文件内容的四把刷子Linux下查看文件内容有cat、more、less、head、tail几个高频工具各有各的适用场景。cat是最直白的一次性把整个文件内容全部输出到屏幕。适合看短文件、代码文件或者把几个文件拼接起来cat a.txt b.txt c.txt。缺点也很明显文件一大内容刷屏刷到根本看不过来而且只显示最后几十行的存在感几乎为零。more是最早期的分页查看工具一屏一屏地显示空格翻页、q退出。功能太简单不能往上翻现在已经用得少了。less是more的增强版也是我在生产环境最常用的查看工具。它支持上下翻页、支持搜索/关键词往下搜?关键词往上搜、支持跳转到指定行输入行号然后G、支持各种方向键操作功能非常强大。有人戏称less是Linux下最好用的打开方式因为这个工具不仅能用于查看文件还能配合管道处理其他命令的输出比如dmesg | less这样。head和tail则用来查看文件的开头部分和结尾部分。head -n 20 file.txt查看前20行tail -n 50 file.txt查看最后50行。tail有个特别关键的功能是-f模式tail -f file.txt会持续追踪文件新增的内容并实时显示排查日志时的神器程序崩了看日志日志更新tail -f实时跟着看定位问题速度能快一倍。如果日志一直不动最后可能还要用上tail -F注意大写这个参数能处理日志文件被轮转重命名或重建的情况即使文件被logrotate切走了也能继续追踪新文件。3. 文件编辑从vi/vim到sed实战3.1 进入vi/vim之前必须搞懂的三种模式服务器上最常见的文本编辑器就是vi/vimDebian系新装系统里通常带的是vim-tiny或vim minimal版本但核心操作逻辑不变。新手最容易卡死的点不知道vim有模式之分进了vim以后乱按一通发现屏幕下方冒出recording之类的字样然后慌了。vim有三种基本模式命令模式Normal mode、插入模式Insert mode、底行模式Command-line mode。刚打开vim文件时默认处于命令模式在这个模式下键盘上几乎所有按键都是命令而不是输入文字。比如按j向下移动光标、按k向上移动、按x删除光标所在字符、按dd删除整行、按yy复制整行。要在文件里输入内容先按i进入插入模式此时才能像正常文本编辑器那样打字。编辑完按Esc回到命令模式然后输入:wq保存退出或者:q!不保存强制退出。这是一整套流程任何一步卡住都会让人以为vim坏了。初学者最应该记住的三件事进入插入模式按i回到命令模式按Esc在命令模式下输入:是底行模式可以保存退出、搜索替换。这三条记住了vim日常使用的基础就撑起来了。3.2 编辑、搜索与替换的高频操作vim里的高频操作我整理成几组来记效率提高很多。屏幕滚动相关Ctrlf向下翻页、Ctrlb向上翻页、gg跳到文件首行、G跳到文件尾行、:set nu显示行号临时性的退出vim就没了想永久显示就写入~/.vimrc。光标移动0跳到行首、$跳到行尾、w按单词跳跃、b往回跳单词。删除、复制、粘贴x删一个字符dd删一行配合数字可以用3dd一次性删除3行yy复制一行3yy复制3行p在当前光标位置下方粘贴。这些操作按熟了编辑效率绝对甩鼠标几条街。搜索在命令模式下按/输入关键词回车即可从当前位置向下搜索按n跳到下一个匹配项N跳到上一个。搜索时vim还会高亮所有匹配项看着很舒服。替换最常用的是:s。基础格式是:s/old/new/把当前行第一个匹配的old替换成new全局替换整个文件的格式是:%s/old/new/g其中%表示所有行g表示一行内所有匹配都要替换不加g只替换行内第一个。想要每次替换前都确认一下可以加c参数:%s/old/new/gc它会逐个询问是替换还是跳过。文件比较大、替换内容比较关键时我强烈建议加c参数手快改错再回滚可比多按几个y麻烦多了。底行模式还经常用来做批量操作。比如:1,100d删除第1到100行:5,10s/v1/v2/g把第5到10行的v1全部替换成v2。这些按范围操作的语法在sed里也有对应版本搞懂一套另一套就能很快迁移。注意vim编辑系统关键配置文件之前建议先复制一份备份。配置文件修改完成后强烈建议先验证配置格式是否正确再重启服务。比如改完nginx配置文件先nginx -t检查语法确认通过再重启nginx能避免把线上服务搞崩。3.3 命令好帮手sed批量处理文件内容sed是一种流编辑器和vim的交互式编辑不同sed适合对文件内容做批量的、非交互式的处理。什么场景用sed比如你要在服务器上一百个配置文件里统一把IP地址从192.168.1.10改成192.168.1.11用vim一个个改会疯掉用sed一行命令就搞定。看几个最实用的例子sed -i s/old/new/g file.txt 直接把文件里所有old替换成new-i表示直接修改原文件。不加-i只是把替换结果输出到屏幕原文件不变。sed -n 20,30p file.txt 只打印第20到30行内容。-n配合p表示只输出指定范围的内容避免整个文件都被打印出来。sed -i /pattern/d file.txt 把包含pattern的行全部删掉。这个在日志清理、配置文件瘦身时很有用。sed -i 3,5d file.txt 删除第3到5行。sed -i 10i\insert this line file.txt 在第10行之前插入一行内容。sed命令的学习曲线比vim平缓很多关键是理解sed的处理模型它逐行读取文件对每一行应用你给它的命令然后输出。理解了这一点很多看起来复杂的sed命令都能看懂了。日常运维里最常用的就是s替换和d删除再配合-i直接落盘剩下的等遇到了再查也不迟。4. 常见问题排查与避坑实录4.1 Permission denied和No such file or directory排障这两个报错大概占据了我日常帮人排查问题的一半以上而且很多场景下问题不在表面。Permission denied权限不足。先用ls -l查看文件的权限位确认当前用户对文件是否有读、写、执行权限。比如-rw-r--r--这个输出表示文件属主有读写权限属组只有读权限其他人只有读权限你如果不在属主或属组里就只能读不能写。解决方案要么用sudo提升权限前提是你有sudo权限要么用chmod/chown调整文件权限和属主。这里要补充一个细节Linux下对文件有写权限不代表能删除文件删除文件取决于对文件所在目录是否有写权限。所以我经常看到有人问我有文件的写权限为什么rm删不掉原因就是缺少目录的写权限。No such file or directory文件不存在或路径错误。除了真的文件不存在还有两种情况很隐蔽一种是路径里的目录名打错了大小写不对这在中英文切换输入法时特别容易犯另一种是命令里的可执行文件不存在但你以为存在比如./start.sh提示No such file or directory实际上start.sh确实存在但它内部指定的解释器路径不对比如脚本第一行的#!/bin/bash写成了#!/bin/bashs这种报错是最迷惑人的解法是检查脚本头部的解释器路径和依赖的库文件是否存在。4.2 中文乱码、软链接断裂、命令找不到中文乱码文件内容本身是UTF-8编码但终端用locale设置的编码不匹配导致显示乱码。排查思路是运行locale查看当前语言环境如果LANG不是zh_CN.UTF-8或en_US.UTF-8这类UTF-8变体就可能乱码。临时解决办法是export LANGen_US.UTF-8重新设置。永久方案是修改/etc/locale.conf或者用户自己的.bashrc里加一行export LANGen_US.UTF-8。还有一种情况是文件本身不是UTF-8编码比如Windows拷过来的GBK文件这种得用iconv转码工具处理。软链接断裂ln -s创建软链接后原目标被移动或删除了链接就成了死链。ls -l看出来的表现是目标部分显示红色或者标注了broken。处理方式很简单删掉软链接重建或者在移动目标时注意别把它原来的位置搞没。我刚才提到cp -d参数复制软链接本身而不是目标内容也属于这个范畴。command not found敲命令提示找不到。排查顺序是先确认命令是否安装比如dig在部分系统里需要单独装dnsutils包再确认命令路径是否在PATH环境变量里最后检查命令名是否打错。有时候刚装完软件发现命令用不了大概率是安装目录没有加入PATH找到可执行文件所在目录加到~/.bashrc的PATH里即可永久生效。4.3 高频命令速查表与学习路线建议这里把我日常真正高频使用的命令按功能整理成一个速查表刚上路的同学可以把它存下来当手边手册用。表格里的命令不算全但覆盖了绝大多数日常场景功能分类常用命令典型用法与说明目录与文件定位pwd、cd、lspwd确认当前位置cd切换目录ls -lh查看目录内容文件查看cat、less、head、tailcat看小文件less看大文件可搜索tail -f追踪日志文件操作touch、cp、mv、rm新建空文件、复制-r递归、移动/重命名、删除-rf慎用权限管理chmod、chownchmod修改权限如chmod x file.shchown修改属主文本处理grep、sed、awkgrep搜索文本sed批量替换awk按列处理搜索find、whichfind按条件找文件如find /etc -name *.confwhich定位命令位置系统管理ps、top、df、dups查看进程top监控资源df查看磁盘空间du查看目录大小压缩打包tar、ziptar -czvf打包压缩tar -xzvf解压网络工具ping、curl、ss、netstatping连通性curl访问接口ss/netstat查看端口监听帮助文档man、--helpman ls查看ls的完整手册ls --help快速看用法按这个顺序学先掌握目录文件相关命令再学文本处理三剑客然后了解系统管理一个阶段一个阶段来每个阶段配合实际场景练一练比如用vim改一个配置文件用sed批量替换用tail追踪一个服务的日志基本两周到一个月就能建立起动手能力。学习路径上我再多说两句光看命令手册是记不住命令的最快的学习方式是带着任务去用。给自己定几个小目标比如给这台服务器装一个nginx并修改默认页面排查一个服务为什么起不来把某目录下所有日志里的IP统计出来做完这几个任务Linux基本命令的功力绝对会有质的提升。面试题里常问的Linux基础比如软链接硬链接的区别、绝对路径相对路径的区别、grep/sed/awk的高频用法其实都是在这些实操基础上延伸出来的基础打牢了面试题自然能答上来。最后分享几个我踩过多次后养成的习惯命令敲回车前先看一眼路径对不对sudo执行高危命令前多确认一次删除操作养成先ls再rm的习惯重要的配置文件改之前备份一份带时间戳的副本。这些习惯看着简单真到关键时刻能帮你省下大量救火时间。Linux这东西日久见功力多折腾、多踩坑、多复盘慢慢就开出感觉了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价