1. 先别急着敲命令把学习路径和实验环境定下来很多人第一次接触 Linux 操作基础都是从一堆命令截图开始的ls、cd、mkdir背了一整页真坐到终端前面还是不知道该敲哪个。我带过几个刚转岗的同事也帮朋友做过几次入门梳理发现真正卡住新手的从来不是命令数量而是没有一条能跑起来的路径——不知道先学什么、在哪练、练到什么程度算过关。所以这篇内容不打算做成命令词典而是按我自己的实践顺序把 Linux 操作基础拆成“环境、文件、命令、服务、排错”五块每块都给出可以直接照做的步骤和踩过的坑。它适合两类人一类是刚接触服务器、需要在命令行里完成日常工作的新手另一类是用了几年但操作全靠搜索、知识点零散的朋友。全文的命令都基于主流发行版通用的 Bash 环境个别差异我会单独标出来。我的建议是边看边开一个终端跟着敲只看不练第二天基本忘干净。1.1 为什么建议从“能跑起来的终端”开始而不是先看理论我见过太多人抱着厚教材啃目录结构啃了两周还没登录过一次系统。这种学法的问题在于缺少反馈你不知道自己敲的命令到底发生了什么也就无法建立“输入—结果”的直觉。命令行本质上是一套即时反馈系统你敲ls -l屏幕上立刻出现权限、属主、大小、时间这些信息比任何文字描述都直观。我的做法是先把环境跑起来哪怕只会三个命令也先让手熟悉键盘和提示符。学习的顺序应该是“先能用再懂原理最后追求效率”而不是反过来。等你已经能靠cd、ls、cat完成一次文件浏览再去理解 inode、挂载点、权限位理解速度会快得多因为每个概念都能对应到你刚才看到的输出。提示入门阶段不要追求记住所有参数。命令的常用参数不超过五个剩下的用man或命令 --help现查查多了自然就记住了。1.2 环境选型物理机、虚拟机、云主机怎么挑这一块我给出明确的取舍逻辑避免新手在装系统上耗掉三天热情。三种方式的差异主要在隔离性、可恢复性和成本上。方案适合场景优点需要注意的地方虚拟机纯入门、随便折腾快照可回滚弄坏了直接还原需要宿主机有足够内存建议给 2GB 以上云主机想模拟真实服务器天然远程登录贴近工作场景按量计费用完记得关机本地物理机双系统想长期当主力机性能无损耗分区操作风险高新手不建议我个人的推荐是虚拟机起步装一个体积不大的发行版分配 2 核 2GB 内存、20GB 磁盘就够练完基础操作。关键动作是装完系统后立刻打一个快照命名成“干净系统”。后面凡是涉及分区、权限、配置文件修改的练习先打快照再动手出问题三十秒回滚这个习惯能省掉大量重装时间。至于发行版的选择不用纠结。命令行的核心部分在各发行版之间高度一致差异主要落在包管理器和部分配置文件的路径上。你随便选一个主流的就行练熟一套换另一套只需要半天适应。1.3 一份可以照抄的四周练习节奏理论学习最容易半途而废所以我把练习拆成按周推进的小目标每周都有明确的产出物做完就算过关。这套节奏我自己用过也给别人排过反馈是“知道每天该干嘛”比“学完一章算一章”更容易坚持。第一周只做文件浏览和路径切换用pwd确认位置用ls -la看隐藏文件用cd在目录间跳转用cat、less看内容。目标是能在不看提示的情况下从根目录走到任意一层再回来。第二周加文件操作创建、复制、移动、删除、改名重点是理解cp -r和rm -rf的破坏力练习时全部在/tmp下建一个自己的实验目录别碰系统目录。第三周上文本处理和查找grep、find、管道、重定向这一周是分水岭练完你会发现自己开始“组合命令”而不是一条条敲。第四周碰权限、进程和软件安装能看懂ls -l的九位权限、会用ps找进程、会用包管理器装软件。四周下来日常操作基本不会再卡住。2. 文件系统与路径所有操作的地基命令敲错、文件找不到、权限报错追到根上八成是路径没搞明白。Linux 的文件系统是一棵单根树所有东西都挂在/下面没有 C 盘 D 盘的概念。U 盘插上来也是挂到某个目录下看起来就像普通文件夹。这个设计一开始会让人不适应但习惯之后反而更清晰因为任何资源都有一个唯一的绝对路径。我建议新手花半天时间把根目录下几个关键位置认全这不是死记硬背而是理解“系统把什么东西放在哪”。认全之后你在看报错信息、读配置文件、找日志时会有明显的方向感不会像无头苍蝇一样到处find。2.1 根目录下那几个必须认识的目录先给一张对照表这些目录在日常操作中出现的频率极高值得先混个脸熟。目录放什么日常用途/etc系统和软件的配置文件改配置基本都来这里/var经常变化的数据尤其/var/log查日志、排查问题/home普通用户的家目录个人文件默认放这里/tmp临时文件重启可能被清练手、放临时脚本/usr用户级的程序和库装的软件大多在这下面/bin、/sbin基础命令你敲的ls、cp就在这理解这张表的关键在于分清“配置”和“数据”。/etc里放的是规则改它会影响程序行为/var里放的是运行产物日志、缓存、邮件队列都在这里。排查问题时先看/var/log改行为先看/etc这个顺序能帮你少走很多弯路。注意/tmp虽然方便但部分系统会配置定时清理别把需要长期保留的文件放里面。我见过有人把脚本放/tmp跑了半年某天突然消失排查了半天才想起来是清理机制干的。2.2 绝对路径和相对路径判断标准只有一个判断方法很简单看开头是不是/。以/开头的是绝对路径从根出发在任何位置执行结果都一样不以/开头的是相对路径参照的是你当前所在目录。cd /var/log是绝对路径cd log是相对路径只有在/var下面才有效。这里有几个符号必须记牢.表示当前目录..表示上一级~表示当前用户的家目录-表示上一次所在的目录。cd -这个用法特别实用在两个目录之间来回切换时比手敲路径快得多我在配置文件和日志目录之间跳转时几乎一直在用。还有一个容易踩的坑路径里带空格。文件名有空格时直接敲会被 shell 拆成两个参数必须用引号包起来或者用反斜杠转义。我的习惯是尽量不在文件名里用空格用下划线或连字符代替从源头上避免这个问题。2.3 文件操作命令的细节破坏力要提前知道cp、mv、rm这三个命令看起来最简单实际最容易出事。cp复制目录必须加-r否则只复制目录本身不复制内容mv在同分区内是重命名跨分区才是真正的移动大文件跨分区移动会比较慢rm删除不经过回收站删了就是删了。我给自己定了一条硬规矩执行rm -rf之前先把命令里的路径单独用ls验证一遍。这个动作只多花三秒但能避免绝大多数误删。更稳妥的做法是用通配符时先echo一下比如echo rm -rf /tmp/test_*看清楚会匹配到哪些文件确认无误再把echo去掉。# 先看匹配结果确认范围 ls -d /tmp/test_* # 确认无误后再删除 rm -rf /tmp/test_*另外mv覆盖同名文件时不会有任何提示重要的移动操作建议加-i参数让它询问。至于cp-a参数会保留权限、时间戳、软链接等属性做备份时用它比-r更合适这点后面讲备份时还会提到。3. 命令行核心操作拆解命令行的效率来自组合单条命令只是零件。真正拉开差距的是你能不能把查找、过滤、统计串成一条流水线一次拿到想要的结果。这一章我按“看、找、处理、组合、控权”的顺序讲每条都给真实场景不讲孤立语法。我的经验是新手阶段先掌握十条高频命令的常用参数然后重点练管道和重定向。这两样东西一通你会发现很多原本要写脚本的活一行命令就解决了。3.1 查看与查找ls、find、grep 的分工这三个命令经常被混用其实分工很明确。ls看目录内容find按条件在目录树里找文件grep在文件内容里找文本。记住“找文件用 find找内容用 grep”就不会用错。ls的常用组合是ls -lah-l长格式显示权限和属主-a显示隐藏文件-h让人类可读的大小比如显示 4.0K 而不是 4096。这三个参数我几乎每次登录都会敲一遍。find的威力在条件组合。比如清理日志时找七天前的大文件find /var/log -name *.log -mtime 7 -size 100M -type f-mtime 7表示修改时间在七天以前-size 100M表示大于 100MB-type f限定只找普通文件。三个条件叠加结果就非常精准。想直接删掉的话在末尾加-delete但我建议先不加看清楚输出再决定。grep的常用参数里-r递归搜目录-n显示行号-i忽略大小写--include限定文件类型。在配置目录里找一个关键字grep -rn listen /etc/nginx/ --include*.conf这条命令会告诉你哪个文件第几行出现了listen排查端口配置时非常好用。3.2 文本处理三件套够用就好awk、sed、cut经常被合称为文本处理工具新手容易被吓住其实日常只需要掌握几个固定套路。cut最简单按分隔符取列。cut -d: -f1 /etc/passwd取的是所有用户名-d指定分隔符-f指定第几列。awk默认按空格分列awk {print $1}取第一列加上条件就是awk $3 100 {print $1}。sed主要用来替换sed -i s/old/new/g file会把文件里所有 old 换成 new-i表示直接改文件不加只输出到屏幕。这三个命令我的建议是先掌握能用的最小集合遇到复杂需求再查。比如统计访问日志里出现次数最多的前十个 IP这个组合非常经典awk {print $1} access.log | sort | uniq -c | sort -rn | head -10拆开看就是取第一列、排序、去重计数、按数字倒序、取前十。理解这条流水线比背十个参数有用得多。3.3 重定向与管道把命令串起来的关键重定向控制输出去哪管道把上一个命令的输出交给下一个。四个符号要分清覆盖写入追加2重定向错误输出21把错误输出合并到标准输出。最常用的场景是“命令跑起来但不想看输出”long_running_task.sh /tmp/task.log 21 21保证错误信息也进日志末尾的让任务在后台跑。这个写法我几乎每天都用尤其是执行时间长的批量操作。管道则是组合命令的核心。ps aux | grep python看 Python 进程du -sh * | sort -h看当前目录下各文件夹大小并排序history | grep ssh翻历史命令。练习方法很朴素每次你想“先做 A 再做 B”的时候想想能不能用|连起来。提示/dev/null是“黑洞”command /dev/null 21表示丢弃所有输出。定时任务里经常这么写避免输出堆积。3.4 权限与属主rwx 背后的计算ls -l第一列那串-rw-r--r--是新手最容易懵的地方。拆开看其实很规整第一位是文件类型-普通文件d目录l软链接后面九位每三位一组分别是属主、属组、其他人的权限。每组里的三位是r、w、x对应数字 4、2、1。所以rwx是 7rw-是 6r--是 4r-x是 5。755就是rwxr-xr-x644是rw-r--r--。这个换算必须练到条件反射因为改权限时基本都是用数字。权限的实际含义分文件和目录两种情况这点很多人搞不清权限对文件对目录r读取内容列出目录内容w修改内容在目录内创建、删除文件x作为程序执行进入该目录注意目录的x是“能不能进去”没有x权限就算有r也cd不进去只能看到名字。这个细节在排查“为什么我进不去目录”时非常关键。改权限用chmod改属主用chown。常见配置是脚本755、普通文件644、私钥600。私钥权限如果放宽到644很多程序会直接拒绝使用这是安全设计不是 bug。chmod 755 deploy.sh chmod 600 id_rsa chown -R app:app /opt/app-R是递归改整个目录树时用但要谨慎别对系统目录随手加-R。4. 软件安装与服务管理实操会装软件、会看进程、会管服务基本就跨过了“只会看文件”的阶段能开始真正维护一台机器。这一章的三块内容在实际工作中的出场率极高装环境、查进程、启服务几乎每天都要碰。我建议新手在这一章多花时间因为这里的命令一旦敲错影响的不只是自己可能是整台机器上跑着的业务。4.1 包管理器先确认系统再选命令包管理器分两大阵营命令不通用敲之前先确认系统类型系统系安装更新索引卸载搜索Debian 系apt install 包名apt updateapt remove 包名apt search 关键词RedHat 系dnf install 包名dnf check-updatednf remove 包名dnf search 关键词判断方法很简单看/etc/os-release里的信息或者直接看apt命令存不存在。新手最常见的错误是在红帽系系统上敲apt报“command not found”还以为是没装。装之前先更新索引这一步经常被跳过导致装到旧版本或者找不到包。装完用包名 --version验证一下比看安装日志快。另外卸载时如果想把配置文件一起清掉Debian 系用purge红帽系一般直接remove就行差异要留意。注意生产环境升级前先看变更内容别在业务高峰期执行全量升级。我自己有过一次随手upgrade导致某个依赖版本变化、服务起不来的经历从此养成先在小环境验证的习惯。4.2 进程查看与终止先看清楚再动手ps aux和ps -ef输出略有差异前者偏 BSD 风格后者偏 System V 风格日常看进程两个都够用。我习惯用ps aux | grep 关键词快速定位但要注意grep自己也会出现在结果里属正常现象。实时观察用top重点看三行负载load average、CPU 占用、内存占用。负载值要结合核心数看四核机器负载到 4 才算跑满单核机器到 1 就满了。这个换算很多人忽略看到负载 2 就慌其实四核机器还很轻松。终止进程用kill默认发TERM信号编号 15让程序自己清理后退出。只有程序卡死不响应时才用kill -9KILL信号因为它是强杀不给清理机会可能留下锁文件或半截数据。ps aux | grep java # 先找到 PID kill 12345 # 先温和终止 kill -9 12345 # 不响应再强杀我的习惯是强杀之前先等十秒给程序一点时间。数据库、消息队列这类进程尤其要温和处理强杀可能导致数据恢复流程跑很久。4.3 systemd服务管理的标准动作现在主流发行版都用 systemd 管服务几个动词记牢就够start启动、stop停止、restart重启、status看状态、enable开机自启、disable取消自启。systemctl status nginx systemctl restart nginx systemctl enable nginxstatus是排查问题的第一站它会显示服务是否在跑、最近几次启动结果、最后几行日志。很多“服务起不来”的问题看一眼status就有方向了。看日志用journalctljournalctl -u 服务名 -n 50看最近五十行加-f实时跟踪。这个命令比翻/var/log下的文件更聚焦因为它是按服务过滤的。我排查服务启动失败时的固定顺序是status看结果journalctl看原因改配置restart再status确认。5. 常见问题与排查技巧实录这一章是我觉得最值钱的部分因为下面每个问题我都真实遇到过有的还不止一次。命令语法可以查但排查思路查不到只能靠踩坑积累。我按“现象—原因—动作”的结构整理方便你在遇到问题时直接对照。5.1 权限被拒绝先分清是哪一层看到Permission denied别急着chmod 777这个动作等于把门拆了问题可能暂时消失但隐患留下了。正确顺序是先确认三件事当前用户是谁、目标文件的权限和属主是什么、路径上每一级目录有没有x权限。id # 看当前用户和所属组 ls -l 目标文件 # 看权限位和属主 namei -l /完整/路径 # 逐级看每层目录的权限namei -l这个命令很多人不知道但它能一次性列出路径上每一级的权限排查“文件明明有权限却读不了”这类问题时特别高效。常见原因有三种文件属主是别人且其他人没有读权限、目录缺少x导致进不去、程序以特定用户身份运行但该用户不在允许的组里。还有一种情况是权限看着对但仍被拒绝那可能是更上层的访问控制机制在起作用这类问题需要结合系统日志看具体拒绝原因不要盲目改权限。5.2 磁盘满了怎么快速定位No space left on device是运维高频报错。第一步用df -h看哪个分区满了第二步用du逐层往下钻找到具体目录。df -h # 看分区使用率 du -h --max-depth1 /var | sort -h # 看 /var 下各子目录大小两个细节容易忽略。一是已删除但被进程占用的文件rm删了文件但进程还开着句柄空间不会释放df显示满而du算不出大头这时候用lsof | grep deleted能找到重启对应进程即可释放。二是inode 耗尽磁盘还有空间但创建不了新文件用df -i看 inode 使用率常见于大量小文件的目录比如缓存和邮件队列。日志目录是重灾区我一般会先看/var/log再考虑日志轮转配置是否合理。5.3 命令找不到多半是 PATH 的问题敲命令提示command not found先分清是“没装”还是“装了但找不到”。用which 命令名和type 命令名判断type信息更全能区分是别名、内建命令还是外部程序。如果是自己装的软件找不到多半是安装路径不在PATH里。echo $PATH看一下当前的搜索路径把软件目录加进去export PATH$PATH:/opt/myapp/bin这个写法只对当前会话有效关掉终端就没了。要永久生效写进~/.bashrc然后source ~/.bashrc。这里有个坑改~/.bashrc时如果写错了PATH可能导致基础命令都找不到救援办法是用绝对路径/bin/ls这类方式操作或者开一个新终端。所以我的习惯是改之前先cp ~/.bashrc ~/.bashrc.bak。5.4 一份问题速查表遇到先对号入座把高频问题整理成表方便快速定位方向。表格只是入口具体原因还得结合日志看。现象优先排查常用命令Permission denied用户身份、权限位、目录 x 权限id、ls -l、namei -lNo space left分区占用、已删除占用、inodedf -h、du、df -i、lsofcommand not found是否安装、PATH 配置which、type、echo $PATH服务起不来状态、日志、端口占用、配置语法systemctl status、journalctl -u端口被占用哪个进程占了端口ss -lntp、lsof -i:端口登录慢或卡住磁盘满、负载高、DNS 解析df -h、top、uptime端口占用这一项补充一句ss -lntp比老的netstat更快输出里能直接看到进程名和 PID定位冲突端口很顺手。注意排查时先做只读操作比如df、ps、ss确认清楚再动手改。我见过有人一上来就重启服务结果把现场证据清掉了问题反而更难查。最后分享一个我自己的习惯给每台机器建一个~/notes目录把改过的配置、执行过的关键命令、遇到的问题和解决办法随手记进去文件名带上日期。这个动作看起来笨但半年后回头看它比任何笔记软件都管用因为记录就在机器上换人接手时也能直接看到历史操作。Linux 操作基础的熟练度说到底就是这些具体场景的积累命令只是工具知道什么时候用哪个才是真功夫。
企业数字化 ERP 产品动态
相关推荐
Jupyter生态全解析:从安装到企业级部署 1. Jupyter生态全景解析:从Notebook到Lab的进化之路Jupyter最初脱胎于IPython项目,2014年正式从IPython中分离成为独立开源项目。这个名称来源于Julia、Python和R三种核心支持语言的组合(JU-PYT-R),但如今已发展成为支… · 2026/11/3 23:35:58
AI代码安全与个人技术护城河构建指南 1. Claude代码泄漏事件的技术启示2023年夏季,Anthropic公司意外泄露了约50万行Claude Code的源代码,这个事件在AI界引发了广泛讨论。作为从业十余年的技术博主,我认为这次事件远不止是一次普通的数据泄露,它揭示了AI时代开发者面临… · 2026/11/4 14:22:07
实时音视频+多模态AI:宠物翻译机、婴儿护理与AI故事机的架构拆解 最近被好几个朋友问到同一个问题:宠物翻译机、婴儿护理助手、AI故事机,这些东西到底怎么实现的?看着像是三类完全不同的产品,但拆开以后你会发现,它们的底层骨架惊人地一致,都是“实时音视频 多模态AI”这… · 2026/11/4 19:22:44
Univer开源Web Office引擎:Canvas渲染与协同编辑实战解析 第一次看到Univer这个项目名字的时候,我下意识以为是哪个海外团队用“University”做的教育类产品。直到我翻完它的仓库和在线Demo,才发现自己差点错过一个好东西——这是一个把“在线电子表格、文档、幻灯片”全部做成开源引擎的Web Office项目… · 2026/11/5 10:35:49
Foxmail数字签名与加密配置全指南:S/MIME证书实战落地 1. 邮件签名与加密不是“加个水印”或“点个锁图标”那么简单很多人第一次在Foxmail里找“签名”功能,点开设置就以为万事大吉——填上姓名、电话、公司logo,保存退出,邮件发出去带个固定落款,就觉得“搞定”。等真遇到客户问“你… · 2026/11/5 10:35:49
LVS负载均衡优化:FWM标记与持久化服务实践 1. 为什么需要优化LVS调度?在企业级负载均衡场景中,Linux Virtual Server(LVS)作为四层负载均衡的经典解决方案,其性能表现直接影响着整个业务系统的稳定性。但在实际生产环境中,我们常常会遇到两个典型问题… · 2026/11/5 10:35:49
用Python打造个人命令行工具集:CLI-Anything实战解析 1. 项目概述:当我把一切日常操作都赶进了终端1.1 从一个真实痛点说起先坦白一个让人脸红的事实:在我动手写 CLI-Anything 之前,我的电脑桌面和工作目录乱得像个菜市场。截图随手丢在桌面,下载的文档散落在各个文件夹,临… · 2026/11/5 10:35:49
基于Nios II软核的FPGA电子钟设计与软硬协同实现 简介:面向FPGA与Nios II学习者及课程设计开发者,这份电子钟工程以Verilog与SOPC协同实现为核心,可用于理解软硬件划分、定时器计时和外设驱动方法。设计采用Qsys生成的1ms定时器计时,8位数码管显示时间,3个按键完成正常… · 2026/11/5 10:35:49
智能知识管理系统的设计与实现:从信息捕获到知识图谱 1. 项目概述 "学习笔记(知识库伴侣服务)"这个项目名称看似简单,却蕴含着一个现代学习者和知识工作者的核心痛点——如何高效管理日益增长的知识碎片。作为一名经历过从纸质笔记到数字工具转型的资深用户,我深刻理解一套… · 2026/11/5 10:34:49
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07