尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

【Linux】 入门必会:基础指令、目录结构与权限管理一篇搞懂

【Linux】 入门必会:基础指令、目录结构与权限管理一篇搞懂 【Linux】基础指令全攻略从目录树、文件操作到权限管理一篇打通命令行底层逻辑本文定位面向刚接触 Linux 的同学从“为什么要使用命令行”讲起系统梳理目录与路径、文件操作、文本检索、压缩归档、重定向与管道、权限管理等核心知识。学习目标不仅会敲命令还能理解命令背后的目录树、标准流和权限模型建立后续学习 Linux 系统编程的底层认知。文章目录前言一、Linux 与 Shell先搞懂命令是怎么执行的二、Linux 目录树与路径三、文件与目录操作从查看到删除四、文本查看与搜索日志排查必备五、压缩归档与系统辅助命令六、重定向与管道让命令组合起来七、Linux 权限管理真正理解 rwx八、综合实战搭建一个安全的日志分析目录九、核心知识点与避坑指南总结前言刚接触 Linux 时很多人会陷入一个误区把ls、cd、mkdir、grep当成英语单词一样死记。但真正决定你能否学好 Linux 的并不是记住了多少命令而是有没有建立三条主线目录树解决“文件在哪里”标准输入输出解决“数据从哪里来、到哪里去”权限模型解决“谁能对文件做什么”。当这三条主线打通后新的 Linux 命令只是完成不同任务的工具而不再是一堆零散知识点。本文所有示例建议在普通用户的测试目录中执行mkdir-p~/linux-command-labcd~/linux-command-labpwd⚠️安全提醒不要在根目录、系统配置目录或重要业务目录中练习删除、覆盖和权限修改命令。尤其是rm -rf、输出重定向和递归chmod -R执行前一定确认目标路径。一、Linux 与 Shell先搞懂命令是怎么执行的1.1 Linux 到底是什么严格来说Linux 指的是操作系统内核。日常所说的 Linux 系统通常由下面几部分组成Linux 内核GNU 基础工具Shell 命令解释器软件包管理器用户态程序与服务。Ubuntu、Debian、RHEL、CentOS Stream、Fedora 等都是 Linux 发行版。它们共享相近的内核与命令行思想但软件包管理、默认配置和发布节奏有所区别。1.2 为什么服务器更偏爱命令行图形界面直观但服务器管理更看重可重复、可远程、可自动化命令可以直接写入脚本SSH 只需传输文本远程操作开销小同一条命令可以批量处理成千上万个文件操作过程便于记录、复现和审计即使没有桌面环境也能完成系统管理。1.3 Shell 扮演什么角色Shell 是用户与操作系统之间的命令解释器。一个命令从输入到执行大致经历用户输入命令 ↓ Shell 解析命令名、参数、通配符与重定向 ↓ 查找内建命令或在 PATH 中寻找外部程序 ↓ 创建进程并执行程序 ↓ 等待结果显示退出状态与输出图解说明cd、alias等内建命令由 Shell 自己执行ls、grep等外部命令通常需要先在PATH中定位再通过新进程启动。常见终端提示符[aliceserver ~]$command[rootserver ~]# command$通常表示普通用户#通常表示 root 用户~表示当前用户的家目录。1.4 使用 SSH 远程登录sshusername192.168.1.100如果 SSH 服务使用非默认端口ssh-p2222username192.168.1.100终端快捷键CtrlC通常向前台进程发送中断信号并不是复制。很多终端使用CtrlShiftC/CtrlShiftVXShell 等客户端也可能使用CtrlInsert/ShiftInsert。核心设计解读Shell 并不是“命令本身”。例如ls通常是独立程序cd则必须由 Shell 自己实现因为切换目录需要改变 Shell 进程本身的工作目录。这也是“内建命令”和“外部命令”存在差异的根本原因。二、Linux 目录树与路径2.1 Linux 只有一棵目录树Windows 常用C:、D:等盘符划分存储空间Linux 从唯一的根目录/开始把不同磁盘、分区和设备挂载到同一棵目录树中。/ ├── bin ├── boot ├── dev ├── etc ├── home │ └── alice ├── proc ├── tmp ├── usr └── var记忆时不要孤立背目录名可以按“程序、配置、用户、运行时、可变数据”五类建立整体认识。普通文件通常位于目录树叶子位置目录则可能继续包含子目录和文件。2.2 常见目录的职责目录主要用途初学者理解/bin、/usr/bin常用命令和用户程序ls、cp等程序所在区域/boot内核和启动相关文件系统启动所需内容/dev设备文件磁盘、终端等设备的抽象/etc系统与服务配置“配置中心”/home普通用户家目录每个用户的个人空间/rootroot 用户家目录不是根目录//proc进程与内核信息基于内存的虚拟文件系统/tmp临时文件通常会定期清理/usr用户程序、库和共享数据大量软件资源/var日志、缓存等可变数据经常增长或变化的内容⚠️/root是 root 用户家目录/才是整棵目录树的根两者不要混淆。2.3 绝对路径与相对路径绝对路径从/开始不依赖当前位置/home/alice/project/main.c相对路径以当前工作目录作为起点./main.c../project/main.c特殊路径写法含义.当前目录..上级目录~当前用户家目录-上一次所在目录仅用于部分命令语境如cd -2.4 pwd 与 cdpwd# 显示当前工作目录cd/home/alice# 使用绝对路径cd../project# 使用相对路径cd~# 返回家目录cd-# 在最近两个目录间切换核心设计解读进程维护自己的当前工作目录。命令中出现相对路径时内核会以该目录为基准解析。因此“文件创建到哪里”由进程当前工作目录决定而不是由源代码或可执行文件存放位置决定。三、文件与目录操作从查看到删除3.1 ls不只是查看文件名基本用法lsls/etclsfile.txt高频选项选项作用-a显示包含点开头隐藏项的全部内容-l显示详细属性-h与-l配合以易读单位显示大小-d显示目录自身而不是目录内容-i显示 inode 编号-t按修改时间排序-r反向排序-R递归列出子目录-F在名称后附加类型标记组合使用ls-alhls-ltls-ld/etcls-ifile.txt一条典型的ls -l输出-rw-r--r-- 1 alice dev 4096 Aug 12 10:30 app.log它依次包含文件类型和权限、硬链接数、所有者、所属组、大小、修改时间与文件名。3.2 touch创建文件还是更新时间touchdemo.txtstatdemo.txt如果文件不存在touch会创建空文件如果已经存在则默认更新访问时间和修改时间。stat可以查看更完整的元数据statdemo.txt3.3 mkdir 与 rmdirmkdirlogsmkdir-pproject/include/detailrmdirlogsmkdir -p会自动创建缺失的父目录rmdir只能删除空目录。3.4 cp复制文件和目录cpsource.txt backup.txtcpsource.txt backup/cp-rsrc/ backup/cp-isource.txt target.txtcp-aproject/ project-backup/常用选择-i覆盖前询问-r递归复制目录-a归档模式尽量保留属性、链接和目录结构。3.5 mv移动与重命名是同一个命令mvold.txt new.txtmvreport.txt documents/mv-isource.txt target.txt当第二个参数是新的路径名时mv完成重命名当它是已存在的目录时源文件被移动到该目录。同一文件系统内的重命名通常只需修改目录项不必搬运文件内容因此往往很快。3.6 rm最危险也最常用rmfile.txtrm-ifile.txtrm-rdirectory/rm -rf同时代表递归与强制通常不会再次确认# 仅展示危险写法不要在重要目录执行这是命令行注释rm-rfdirectory/删除前四步检查用pwd确认当前位置用ls -ld target确认目标本身确认变量不为空、通配符没有扩大范围优先使用-i重要数据先备份。3.7 Shell 通配符通配符作用示例*匹配任意长度字符串*.c?匹配任意一个字符test?.txt[0-9]匹配一个数字log[0-9].txt[abc]匹配集合中的一个字符file[abc]ls*.ccp*.txt backup/lsfile[0-9].log通配符通常由 Shell 在执行命令前展开。程序收到的往往已经是展开后的文件名列表。四、文本查看与搜索日志排查必备4.1 cat适合短文件catconfig.txtcat-nconfig.txt# 所有行编号cat-bconfig.txt# 仅非空行编号cat-sconfig.txt# 连续空行压缩为一行不要用cat直接刷超大文件终端输出会非常混乱。大文件更适合less。4.2 more 与 lessmorelarge.logless-Nlarge.logless常用交互按键作用Space/PageDown向后翻页PageUp向前翻页/keyword向后搜索n/N下一个 / 上一个匹配g/G文件开头 / 结尾q退出4.3 head 与 tailhead-n20app.logtail-n20app.logtail-fapp.logtail -f会持续观察文件末尾新增内容常用于跟踪服务日志。4.4 grep从文本中筛选内容grepERRORapp.loggrep-nERRORapp.log# 显示行号grep-ierrorapp.log# 忽略大小写grep-vDEBUGapp.log# 反向选择grep-Rlisten./src# 递归搜索目录grep-EERROR|WARNapp.log# 扩展正则4.5 find从目录树中定位文件find.-name*.cfind.-typed-namebuildfind/var/log-typef-size100Mfind.-typef-mtime-7-name按名称-type f/d普通文件/目录-size按大小-mtime按修改天数。⚠️ 将find与删除动作组合前先只打印结果并逐项确认不要一开始就执行批量删除。4.6 which、whereis 与 manwhichgccwhereisgccmanlsman2openman3printfman7signalwhich根据PATH查找将执行的命令whereis查找程序、源码和手册的典型位置man阅读命令、系统调用、库函数和协议说明。核心设计解读grep解决“内容里有什么”find解决“目录树上文件在哪里”which解决“Shell 会执行哪个程序”。三者检索对象不同不能相互替代。五、压缩归档与系统辅助命令5.1 tar归档与压缩创建 gzip 归档tar-czvfproject.tar.gz project/解包tar-xzvfproject.tar.gz常用参数记忆选项含义-c创建归档-x解开归档-t查看归档内容-z使用 gzip-j使用 bzip2-v显示过程-f指定归档文件名tar的核心职责是把多个文件归档为一个文件gzip、bzip2 等算法负责压缩。日常命令经常把两步组合起来。5.2 zip 与 unzipzip-rproject.zip project/unzipproject.zipunzipproject.zip-doutput/5.3 date、cal 与 unamedatedate%F %Tcaluname-auname-r5.4 whoami、id 与 aliaswhoamiidaliasllls -alF别名只影响当前 Shell 会话若希望长期生效需要写入对应 Shell 的配置文件并重新加载。六、重定向与管道让命令组合起来6.1 三个标准流程序启动时通常已经打开三个标准流fd名称默认对象0标准输入 stdin键盘1标准输出 stdout终端2标准错误 stderr终端命令通常只管从标准输入读取、向标准输出或错误写入。至于这些描述符实际指向终端、文件还是管道由 Shell 在程序启动前安排。6.2 输出重定向echofirst lineoutput.txtechosecond lineoutput.txt覆盖写入目标存在时会截断原内容追加写入。6.3 输入与错误重定向wc-loutput.txtcommandnormal.log2error.logcommandall.log21第二条合并命令的顺序很关键fd 1 先指向all.logfd 2 再复制 fd 1 当前的指向。6.4 管道管道|把左侧命令的标准输出连接到右侧命令的标准输入ps-ef|grepnginxfind.-name*.log|wc-lgrepERRORapp.log|tail-n206.5 一个实用日志分析流水线grep-EERROR|WARNapp.log\|tail-n100\|sort\|uniq-c\|sort-nr执行逻辑grep筛选错误和警告tail保留最近 100 条第一次sort让相同内容相邻uniq -c统计重复次数第二次sort -nr按次数降序排列。核心设计解读Unix 工具倾向于“只做好一件事”。grep不必内置统计、排序和分页只要它能够正确读取标准输入、写出标准输出就能通过管道与其他工具组合成复杂工作流。七、Linux 权限管理真正理解 rwx7.1 谁在访问文件Linux 权限判断围绕三类身份文件所有者 user文件所属组 group其他用户 other。ls-lapp -rwxr-xr--1alice dev4096Aug1210:30 app拆开- | rwx | r-x | r-- 类型 user group other7.2 文件类型ls -l第一位常见含义字符类型-普通文件d目录l符号链接c字符设备b块设备p管道s套接字使用file进一步识别fileappfilearchive.tar.gz7.3 rwx 的数值表示权限数值r4w2x1754的含义7 4 2 1 rwx 5 4 0 1 r-x 4 4 0 0 r--7.4 chmod修改访问权限符号方式chmodux script.shchmodg-w report.txtchmodor public.txtchmodar README.md数字方式chmod754script.shchmod640config.iniu/g/o/a所有者/所属组/其他/全部/-/增加/移除/精确设置。⚠️ 不要为了省事随意使用chmod 777。它把文件写权限开放给所有用户容易造成篡改、植入或误删。正确做法是遵循最小权限原则。7.5 chown 与 chgrpchownalice file.txtchownalice:dev file.txtchgrpdev file.txt修改所有者通常需要 root 或相应能力文件所有者一般可以在自己所属的组范围内按系统规则修改所属组。7.6 目录权限为什么最容易出错同一个权限对普通文件和目录含义不同权限普通文件目录r读取内容列出目录项名称w修改内容创建、删除、重命名目录项x执行文件进入/穿越目录并访问对象最关键的结论删除文件修改的是父目录里的目录项。因此用户能否删除文件核心看父目录的w x权限而不是只看文件自身有没有w。7.7 umask默认权限从哪里来新建普通文件的基础权限通常按0666计算目录按0777计算再屏蔽umask中设置的位实际权限 基础权限 (~umask)查看umask当umask为0022普通文件0666 ~0022 0644 目录 0777 ~0022 0755普通文件默认不带执行权限是为了避免任意新文件直接成为可执行程序。7.8 粘滞位共享目录中的删除保护ls-ld/tmp drwxrwxrwt... /tmp末尾的t是粘滞位。即使多人都有目录写权限通常也只有文件所有者、目录所有者或 root 能删除对应文件。设置chmodt shared/八、综合实战搭建一个安全的日志分析目录下面把目录、文件、权限、重定向与管道串起来。这套流程体现了 Linux 命令行最重要的组合思想每个命令只负责一个小步骤使用管道和重定向把它们连接成可重复执行的工作流。8.1 创建实验目录mkdir-p~/linux-command-lab/{logs,backup,reports}cd~/linux-command-lab tree如果没有treefind.-maxdepth2-print8.2 生成模拟日志catlogs/app.logLOG 2026-08-12 09:00:01 INFO server started 2026-08-12 09:01:12 WARN cache miss 2026-08-12 09:02:33 ERROR database timeout 2026-08-12 09:03:08 INFO retry success 2026-08-12 09:05:45 ERROR database timeout LOG8.3 分析错误并生成报告grep-nERRORlogs/app.logreports/errors.txtwc-lreports/errors.txtcatreports/errors.txt统计错误类型grepERRORlogs/app.log\|cut-d -f4-\|sort\|uniq-c\|sort-nr\reports/error-summary.txt8.4 打包备份tar-czvfbackup/logs-$(date%F).tar.gz logs/ reports/tar-tzvfbackup/logs-$(date%F).tar.gz8.5 设置合理权限chmod750~/linux-command-labchmod750logs backup reportschmod640logs/app.logchmod640reports/*.txt验证ls-ld~/linux-command-lab logs backup reportsls-llogs reports实战设计解读目录750所有者完全控制所属组可进入并读取其他用户无权访问文件640所有者可读写所属组只读其他用户无权访问报告通过管道生成过程可重复执行归档文件加入日期避免每天直接覆盖同一份备份。九、核心知识点与避坑指南9.1 为什么执行当前目录程序必须写 ./appShell 只会在PATH指定目录中搜索外部程序当前目录通常不在其中echo$PATHwhichlsls-l./app ./app不建议随意把.放到PATH最前面否则当前目录中的同名程序可能抢先于系统命令执行。9.2 为什么目录有 r 权限却进不去因为目录的r只允许读取目录项名称进入和穿越目录需要x有r无x可能看到名称却无法正常访问对象有x无r知道准确名称时可能访问但不能正常列出目录创建和删除目录项通常还需要w x。9.3 为什么会让文件内容消失使用覆盖/截断语义。Shell 在启动命令前就可能已经打开并清空目标文件因此下面这种写法会先把文件截断# 错误示例不要这样原地过滤这是命令行注释grepERRORapp.logapp.log正确做法是先写临时文件验证后再替换grepERRORapp.logapp.log.tmpmvapp.log.tmp app.log9.4 为什么 rm 删除后通常很难恢复rm删除的是文件名与 inode 的关联不会放进桌面回收站。后续磁盘写入可能覆盖原数据块。重要数据应依靠权限、备份、版本控制和快照保护而不是依赖事后恢复。9.5 find 和通配符有什么区别ls*.logfind.-name*.log*.log由 Shell 在当前路径层级展开find主动遍历目录树可组合类型、大小、时间等条件在find -name中给模式加引号可以防止 Shell 提前展开。9.6 sudo 不是“让所有命令都能执行”的开关sudo根据配置以其他身份执行被授权命令。它不是权限问题的万能修复方式。执行前应理解目标、影响范围和命令本身尤其不要给来源不明的脚本直接加sudo。9.7 man 手册章节怎么选章节典型内容1普通用户命令2系统调用3C 库函数5配置文件格式7协议、约定和概念8系统管理命令man1printfman3printf同名命令和库函数可以位于不同章节指定章节能避免查错对象。总结这篇文章真正需要记住的不是几十条命令而是 Linux 命令行背后的四层逻辑目录树使用路径定位对象 ↓ 命令工具查看、创建、复制、移动、检索对象 ↓ 标准流使用重定向与管道组合数据处理流程 ↓ 权限模型决定不同身份可以进行哪些操作当你能解释下面几个问题时说明 Linux 基础已经真正入门为什么相对路径依赖当前工作目录为什么cd必须是 Shell 内建命令为什么grep与find不能互相替代为什么管道能把多个简单命令组合成复杂任务为什么删除文件主要取决于父目录权限为什么普通文件默认通常没有执行权限写在最后 Linux 学习最有效的方式不是“看完”而是边看边在测试目录中验证。如果这篇文章帮助你打通了 Linux 基础指令⭐收藏需要查命令和权限时可以快速回来❤️点赞让更多正在入门 Linux 的同学看到评论留下你遇到过最难理解的 Linux 命令或权限问题关注后续继续深入进程、文件 I/O、文件系统与网络编程。技术成长没有捷径但每一次在终端里亲手验证都会让抽象概念变得更清晰。
返回列表