ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Linux入门实战:从目录结构到文件权限的命令行指南

Linux入门实战:从目录结构到文件权限的命令行指南 1. 从“知道Linux”到“理解Linux”的关键一步如果你看过“前篇1”应该已经对Linux是什么、为什么服务器上几乎都是它、以及怎么在虚拟机里装一个最小化系统有了基本概念。这篇文章的重点不在安装而在安装完系统之后的第一脚——把这个黑乎乎的终端窗口用起来搞清楚文件系统是怎么组织的、用户和权限到底是怎么回事、常用的命令到底该在什么时候用。换句话说前篇1帮你把Linux“跑起来”这一篇帮你“活下来”——在纯命令行环境里不再迷路。标题里我把这篇叫“前篇2”是因为它依然属于入门序列不牵扯Shell脚本编程、网络服务搭建、内核参数调优这类进阶主题。适合刚装完系统、面对命令行还有点头大的新手也适合用过一阵子但始终觉得命令是死记硬背、想搞明白背后逻辑的同学。这篇文章里出现的所有操作都可以在虚拟机里的CentOS、Ubuntu或者Debian上直接复现不需要额外购买服务器。我会尽量把操作背后的“为什么”讲清楚而不是只扔给你一串命令。我一直认为Linux入门最大的门槛不是记不住命令而是不理解设计者的思路。一旦想通Linux“一切皆文件”“多人多任务”这两个核心理念你会发现命令其实不是记出来的是推导出来的。2. 目录结构为什么Linux没有C盘2.1 一切从根“/”开始Windows用户刚接触Linux最不适应的就是盘符消失了。D盘、E盘统统不存在所有文件都挂在一个叫“/”的根目录下面。这个“/”是整个文件系统的起点跟Windows的“此电脑”地位类似但机制完全不同Windows里C盘是独立的树D盘又是另一棵树两棵树之间的路径是物理隔离的Linux则是一棵单一大树你插入一块U盘、挂载一块新硬盘都是在“/”这棵树的某个分支节点上长出新枝叶。这个节点就是你选择的“挂载点”比如常见的/mnt或/media。理解了这个设计很多常识就能自然推导出来。比如你发现某块磁盘空间不够但另一块很大的磁盘还空着这时候的正规做法是把新磁盘格式化然后在“/”下建一个目录作为挂载点用mount命令把它挂上去。从此你写文件到这个目录实际写进了新磁盘但对用户和程序来说路径没有任何变化。这种“逻辑路径与物理设备解耦”的设计正是服务器可以不断扩容的基础。再比如你用ls -l /看到的那一堆目录是FHS文件系统层次标准Filesystem Hierarchy Standard约定好的结构。我用一个生活类比来帮你记把Linux系统想象成一栋大楼——/etc是管理科所有软件的配置文件都在这/var是档案室日志、队列、临时数据/usr是公共图书馆系统自带的软件和库文件/home是员工宿舍每个用户的家目录/tmp是前台接待区的便签纸临时文件重启就清理。这套布局一旦在大脑里建立了画面找什么文件都不会再没头绪。2.2 你必须认识的几个关键目录不是所有目录都需要第一时间搞懂但下面这几个是高频出现的建议尽快混个脸熟/etc系统级配置文件的大本营。改主机名、配IP地址、设DNS全都绕不开它。里面最有名的是passwd、shadow和fstab三个文件分别管用户信息、用户密码、开机自动挂载磁盘。注意区分很多初学者以为改配置就是“随便编辑”但这里的文件一旦写错语法可能导致系统启动异常所以动手前先备份一份cp /etc/xxx /etc/xxx.bak是职业习惯。/var存放变化的数据尤其是日志。/var/log/messages或syslog记录了系统运行的各种事件排查故障时这是第一现场。运维圈有个梗“日志在手天下我有”真出问题的时候/var/log比搜索引擎好使得多。/home普通用户的家目录集合。你在/home下能看到的每个用户名就是系统里的一个“人”。用户登录后默认停在自己的家目录里权限上也是自己家随便折腾别人家不能乱闯。/root管理员root用户的家目录。它独立在/home之外是因为系统维护时即使其他分区挂掉了root依然要能登录做修复。/tmp临时文件存放处任何用户都有权限写但系统会在重启时定期清理。你下载个临时安装包、解压个东西放这里挺方便但别指望它存持久化数据。还有个细节值得注意你执行pwd命令看到的当前路径开头那个“/”指的是根目录而相对路径比如cd ..里“..”代表当前目录的上级目录“.”则代表当前目录本身。这些看似不起眼的符号在Shell里天天要用打好基础后面写脚本才不慌。2.3 用tree和ls看清目录结构光说理论容易忘动手看一眼就熟了。在终端输入tree -L 2 /这条命令会以树的形状展示根目录下两层的内容。如果你的系统没装tree用ls -R /也行就是输出会密集一些。对比着看一遍你会发现刚才提到的那些目录都在眼前。还有一个很实用的自查思路安装一款新软件后想知道它把文件都放哪了可以用rpm -qlCentOS系或dpkg -LDebian系列出来这比满世界找安装目录高效得多。3. 文件操作和文件打交道的基本功3.1 查看、创建、移动、删除的常用组合Linux的文件操作核心命令不多翻来覆去就是ls、cd、touch、mkdir、cp、mv、rm这几个。真正体现水平的是参数组合和防止误操作的习惯。先看查看类的ls它有三个高频参数ls -l显示详细信息权限、属主、大小、时间ls -a显示隐藏文件以点开头的文件ls -lh则是把文件大小转成人类易读的格式。我经常看到新手打成ls -la没问题但如果你想知道目录自身的详细信息而不展开内容记得加-d参数ls -ld /etc。创建目录用mkdir -p /tmp/test/a/b-p参数可以一次性创建多级目录省去一层层mkdir的麻烦。创建空文件用touch file.txt它还有个冷门用场改文件时间戳。如果要复制目录必须加-r递归参数cp -r dir1 dir2移动或重命名目录用mv就没有这个限制mv dir1 dir2直接搞定——mv既是移动又是重命名这个双重身份常让新手困惑记住“在同一个目录下mv就是改名跨目录mv就是搬运”。删除命令rm是个容易翻车的高危操作。rm -rf /tmp/test里的-r是递归删除目录-f是强制不提示。很多重大线上事故都是手快敲成rm -rf /导致的。我个人的铁律是敲rm之前先pwd确认自己在哪删除目录时尽量先ls看看里面的内容回收站思路也行——mv到/tmp下而不是直接rm批量删除前用echo先输出一遍文件名确认范围。3.2 文件查看五兄弟cat、less、more、head、tail查看文件内容恐怕是日常操作里最频繁的。cat适合看短文件但长文件会把终端刷得乱七八糟这时用less更合适支持上下翻页、按/搜索关键字、按q退出几乎可以当成Windows记事本的终端版来用。more是less的前辈功能少一些但在某些精简系统里仍然存在。看开头和结尾用head和tailhead -n 20 /var/log/syslog显示前20行tail -n 20显示后20行。真正惊艳的是tail -ffollow它可以持续跟踪文件末尾新增的内容。排查日志时开一个终端tail -f实时观察另一个终端复现操作这种感觉就如同开了上帝视角——错误一发生日志那边马上滚出来。这里分享一个运维中极高频的组合用法我们要在几百MB的日志里查某个时间段的报错cat整个文件显然不行less直接打开等半天的服务器大日志也痛苦正确做法是用grep在管道里过滤cat app.log | grep ERROR | tail -n 50或者干脆tail -f app.log | grep ERROR——实时过滤错误日志只把感兴趣的滚出来。管道这个符号“|”后面专章讲你先在这里记住一个认识它能把左边命令的输出连续传给右边命令。3.3 软链接Linux里的“快捷方式”Windows有快捷方式Linux对应的是软链接symbolic link。创建方式十分简单ln -s /var/log/nginx/access.log /home/user/nginx-log之后你在家目录访问nginx-log就等于在访问那个真实日志文件。软链接在运维中使用率极高比如把编译后的程序目录做一个软链到/usr/local/bin就能实现“升级程序时切换链接指向”的效果。还有一个需要理解的同门命令硬链接ln不带-s。硬链接比较特殊它跟原文件共享同一个inode删除原文件后硬链接依然有效软链接则是指针原文件没了它就悬空断裂。日常使用中软链接出现的频率远超硬链接但面试时考官总爱问两者的区别建议你把这段话读两遍。4. 用户与权限多人系统的安全基石4.1 Linux的用户体系设计思路Linux从诞生起就是多用户、多任务操作系统。所谓多用户就是同一台机器上可以同时有很多人登录使用各自的文件互不干扰各人的操作也不能随便影响别人。这套体系靠两个东西支撑一个是“用户”一个是“权限位”。在Linux里用户被区分成root和普通用户。root是超级管理员UID是0拥有压倒一切的力量普通用户的UID通常从1000开始。还有一个概念叫“组”把一部分用户归到一个组里配合后续讲的权限位就能实现“队内资源共享、队外隔离”。所有的用户信息都存在/etc/passwd文件里密码则加密存在/etc/shadow里这就是“影子文件”普通用户不可读防止暴力破解。新增用户有两个命令可选useradd -m -u 1001 -s /bin/bash alice-m是自动创建家目录-u指定UID-s指定登录Shelladduser是更友好的交互式命令会引导你设置密码、填写信息。删除用户用userdel -r alice加-r同时删掉家目录注意这个操作不可逆。4.2 rwx权限位读、写、执行是怎么分配的在终端执行ls -l每行开头有10个字符例如drwxr-xr--。第1位是文件类型d代表目录-代表普通文件l代表软链接。后面9位分成三组每组三位分别对应“属主文件主人”“属组拥有组”“其他用户”的权限。每组里r代表可读4、w代表可写2、x代表可执行1。为什么要强调这三个数字因为chmod支持数字法写权限。比如chmod 750 script.sh7421表示属主可读可写可执行541表示属组可读可执行0表示其他人啥都不能干。这种数字表示法是所有Linux考试的必考项也是日常操作最常用的写法。符号法chmod ux script.sh给属主加执行权限也很实用尤其只改一项权限时比数字法更清晰。这里有个新手常忽略的细节删除一个文件看的是你对这个文件所在目录是否有写权限而不是对文件本身的权限。也就是说对文件有rwx权限不代表你有权把它删了真正的“生杀大权”在目录的w权限上。这个认知差异曾让很多初学者在共享目录里莫名其妙删不掉别人的文件——其实是他们自己对目录没有写权限。反过来也提醒你对某个目录开放w权限时等于把目录内的文件“删除权”也交出去了。4.3 用chmod、chown和sudo把权限管好除了chmod另一个高频命令是chown变更属主和属组。典型场景是软件需要运行在某个用户身份下或者你把自己的文件移交给同事。用法chown alice:devops app.log表示属主改成alice、属组改成devops。只改属主就chown alice file只改属组就chgrp devops file。再来说sudo。它的作用是用另一个用户通常是root的身份执行单条命令而不用切换登录身份。比如当前用户没有权限查看root目录可以sudo ls /root。sudo之所以“安全”是因为它的管控规则写在/etc/sudoers里哪些用户能执行什么命令、要不要输入密码、在哪些主机上生效全都可以精确配置。想给新用户sudo权限在配置里加一行“用户名 ALL(ALL) ALL”就行但我不建议随便给原则上“最小权限刚刚够用”。这里必须单独强调一下能用sudo执行单条命令就别用su切到root身份。因为sudo是“白名单式授权”日志会记录每一笔操作su一旦切过去所有命令都以root身份跑误操作无记录、无约束。生产环境里许多安装脚本被要求严禁直接用root跑正是为了减少事故半径。5. 命令实操把零散命令组合成工作流5.1 管道、重定向与通配符我前面说“命令不是背出来的是推导出来的”很大程度上靠的就是管道、重定向和通配符这三样组合工具。管道符“|”把左边命令的标准输出接到右边的标准输入。一个典型例子ps aux | grep nginx从所有进程里过滤含nginx的行——这是排查服务是否启动的最常用写法。重定向符号“”覆盖写入和“”追加写入把命令输出写到文件里echo hello readme.txt或者ls /etc etc-list.txt。还有错误重定向“2”command 2 error.log只把错误信息存下来。这三者的组合可以让你从只会看终端输出进化到能对输出做筛选、落盘、归档。通配符则是Shell的模糊匹配工具代表任意长度字符?代表单个字符[abc]代表括号中的任一字符。rm test.log可以一次性删除所有以test开头、.log结尾的文件ls /etc/ssh/ssh*_config能精确抓住目标配置文件。大量文件操作场景下通配符能省下大半时间但也要注意通配符是在Shell展开的如果当前目录下没有匹配的文件它会原样传给命令导致你以为删了文件实际没删。5.2 查找文件与内容find和grep是兄弟find用于按文件名、类型、时间、大小找文件。它的基本能力find /var/log -name *.log -mtime 7这条命令的含义在/var/log下找出所有以.log结尾、修改时间超过7天的文件。你可以把-mtime换成-size 100M找大文件、换-user alice找指定用户的文件。在生产环境里“找出三天前生成、已归档的备份并清理”这类定时任务几乎就是find的标准应用。grep用于按文件内容过滤。比如在应用日志里搜关键字grep -r OutOfMemory /var/log/app/-r递归搜索目录下所有文件常搭配-n显示行号。感觉信息量太大时grep可以再接管道grep OutOfMemory /var/log/app/app.log | head -20只看前20行。这两个命令的联用频率在你日常操作里绝对排得进前三。5.3 查看进程、端口和服务状态入门阶段最刚需的运维三连就是进程、端口和服务。查看进程用ps最常用的是ps -ef显示全部进程完整信息管道过滤出自己关心的ps -ef | grep java。看端口占用用netstat或ss新系统默认推荐ssss -tlnp其中-t是TCP协议、-l是监听状态、-n用数字端口显示、-p显示对应进程PID。服务管理方面现代系统多用systemctlsystemctl status nginx查看服务状态、systemctl start nginx启动、systemctl enable nginx设为开机自启。遇到服务启动失败时第一件事就是systemctl status它通常会给出失败原因或提示用journalctl -xe查细节。5.4 安装软件apt与yum的简明对照不同Linux发行版用不同包管理器。Debian/Ubuntu系用aptsudo apt update更新软件包索引sudo apt install nginx安装软件sudo apt remove nginx卸载但保留配置sudo apt purge nginx彻底卸载并把配置一起删干净。CentOS/RHEL系用dnf或yumsudo dnf install nginx、sudo dnf remove nginx。另外还有通用安装方式源码编译./configure make make install、二进制包.rpm或.deb直接装、容器镜像docker pull但初学者只需掌握包管理器就足以应付绝大多数场景。这里有个小提示装完软件后命令找不到多半是安装过程没把可执行文件放到PATH里或者是CentOS里nginx服务名叫nginx、但可执行文件是/usr/sbin/nginx用which nginx验证一下即可。5.5 一个综合实操场景演练纸上谈兵没有感觉我模拟一个新手最常见的操作流给你走一遍你在自己的虚拟机上跟着敲就能体验完整# 第一步创建一个临时项目目录进入其中 mkdir -p ~/my-project/logs cd ~/my-project # 第二步生成一个测试文件并写入内容 echo 2025-01-01 10:00:01 ERROR connection refused logs/app.log echo 2025-01-01 10:00:02 INFO request ok logs/app.log # 第三步查看末尾日志再过滤只留下报错行 tail -f logs/app.log grep ERROR logs/app.log | wc -l # 第四步把这个日志文件做一个软链接放到/tmp下便于其他程序读取 ln -s ~/my-project/logs/app.log /tmp/my-app.log # 第五步把整个项目目录打包备份 tar -czf my-project-backup.tar.gz ~/my-project # 第六步清理演练环境 cd ~ rm -rf my-project my-project-backup.tar.gz /tmp/my-app.log这套流程囊括了创建、追加写入、查看、过滤统计、链接、打包归档、清理几乎每一步都是一线操作里会反复用到的。tar的-z是gzip压缩、-c创建归档、-f指定文件名解包对应tar -xzf你可以在练习中多敲两遍形成肌肉记忆。6. 常见问题与排查技巧实录6.1 command not found是初学者头号问题分析一下原因要么命令没安装要么命令不在PATH里。方案是先用which命令名确认路径如果没有任何输出说明确实没装如果输出了路径但执行还是报错那就是PATH配置问题可以临时export PATH$PATH:/新路径试一下。还有个误区分辨有些命令在root用户下能执行普通用户下不行最典型的就是ifconfig它位于/sbin目录普通用户PATH里默认不含/sbin所以提示command not found。解决方式是直接用/sbin/ifconfig或者用ip addr新系统的替代命令。6.2 Permission denied不是命令错了是身份或权限不对处理思路分三步先ls -l看文件权限和属主然后确认当前用户是谁whoami再判断是自己该用sudo、还是文件属组不对、还是目录缺少执行权限挡了路。这中间有个隐藏坑目录至少有r-x权限你才能进入并列出内容如果只有r而缺xls可能能列出部分文件名但cd进不去和你预期的行为完全不一样。这类权限问题在检查时别只盯文件本身一层层往上把父目录权限都排查一遍。6.3 磁盘满但du看不出大文件这是典型的inode耗尽了磁盘还有空间但文件系统的小文件数量达到上限导致创建不了新文件。症状是df -h显示还有几百G空闲但写文件时提示No space left on device。排查思路用df -i看inode使用率用find / -xdev -type f | wc -l统计文件数量。常见元凶是临时目录和邮件队列里积压了海量小文件清理策略是分批删先列目录再删、一边删一边df -i观察别贪快一把梭。这类故障在真实生产环境里能让人抓狂提前知道你就赢了一半。6.4 软链接断裂ls时标红、访问时显示No such file处理方法是先ls -l确认链接指向哪里再用ls -l验证目标路径是否存在。如果目标被移动或删除就成了悬空链接删掉重建ln -s即可。需要特别说明删除软链接本身用rm linkname这里绝不能带斜杠如果误敲rm linkname/它会尝试删除链接指向的目录内容性质就变了。6.5 定时任务crond不执行先确认crond服务在运行systemctl status crond再查看用户的crontabcrontab -l确认脚本本身有执行权限ls -l script.sh。还有个极易忽略的细节定时任务的环境变量和你登录的用户环境不同脚本里用到自定义PATH或全局变量时务必写成绝对路径或脚本内自行export。我曾见过一个备份脚本在手动执行时一切正常放到crontab里就一直失败最后发现是脚本里用了相对路径在定时任务的工作目录下找不到文件——把路径改绝对后立刻稳定运行。6.6 需要永久记住的命令三兄弟man、whatis、history遇到不熟悉的命令man命令名可以打开官方手册按q退出按/搜索关键词。想快速回忆命令用途用whatis命令名能给出简短说明。history能查看自己敲过的全部命令配合“!编号”可重复执行。这三个工具不需要刻意背但要在遇到问题的瞬间想到它们你的Linux之旅会顺畅很多。7. 入门之后下一步该往哪里走这一篇的内容覆盖了从目录结构到用户权限、从文件操作到命令组合、从常见故障到排查手法的入门闭环。如果你认真把上面的命令在自己的虚拟机里过了一遍此刻已经能独立完成很多基础操作了。但这只是第一步接下来的学习路线可以按兴趣选如果目标是日常开发建议下一步学Vim编辑器的常用操作和Shell脚本基本语法变量、循环、条件判断之后尝试写一个自动备份脚本或做一个监控磁盘阈值的报警脚本。如果目标是运维建议系统看一遍systemd服务管理、网络配置ip、ss、firewalld、日志轮转与journald然后把前文提到的技术栈再深耕一层。如果目标是嵌入式建议把编译工具链、交叉编译、文件系统制作与烧写纳入日程这些内容都建立在你对Linux文件系统的理解之上。有一点我特别想对新手说Linux学习的反馈周期很短命令敲下去立刻就有结果所以多动手比多收藏强。每次遇到不会的操作先man、再搜索、再记录形成自己的笔记体系。我最初学Linux时把踩过的坑都写在一个Markdown文件里后来它成了我再也不怕服务器故障的底气。你也可以试试。最后分享一个我自己养成的习惯每周选一天把常用命令的用法不看任何参考地默写一遍顺便在虚拟机里重新搭一遍环境。几次下来你会发现那些当初要查半天才敢敲的命令早就变成了下意识的操作。Linux不像别的技术那样有那么多“看起来的高级感”它讲究的就是手里有活、心里有数——只要你顺着上面这些基础一步步走后面的路自然就通了。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表