当前位置: 首页 > news >正文

110、【OS】【Nuttx】【周边】效果呈现方案解析:查找最新构建件

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

接之前 blog
【OS】【Nuttx】【周边】文档构建渲染:workspaceStorage(上)
【OS】【Nuttx】【周边】文档构建渲染:workspaceStorage(下)
已经分析了 workspaceStorage 里面的内容,有了这个基础,下面回过头再来看
【OS】【Nuttx】【周边】文档构建渲染:效果呈现
这里面的解决方案

方案解析

接下来的内容完全基于之前 blog 【OS】【Nuttx】【周边】文档构建渲染:效果呈现 中的解决方案 preview-rst 脚本,为保证脚本的一致性,这里就不贴出来了,可以直接去之前 blog 查看 preview-rst 脚本

首先,思路是要找到 Esbonio 服务器的构建产物,之前 blog 都提了,构建产物信息在【输出】选项卡可以看到
在这里插入图片描述
然后,前面两篇 blog
【OS】【Nuttx】【周边】文档构建渲染:workspaceStorage(上)
【OS】【Nuttx】【周边】文档构建渲染:workspaceStorage(下)
也已经介绍,在 workspaceStorage 工作区,可能存在多个构建产物,比如在终端输入

find ~/.vscode-server -path "*/swyddfa.esbonio/sphinx/html"

这里 -path 是 find 命令的一个过滤选项,表示根据完整路径名来匹配文件或目录
-path 和 -name 都是常用的过滤选项

  • -path:匹配完整的路径字符串,比如 -path “*/swyddfa.esbonio/sphinx/html” 表示匹配路径中包含 /swyddfa.esbonio/sphinx/html 的文件
  • -name:只匹配文件的名字,比如 -name “*html” 表示匹配所有以 html 结尾的文件

根据“完整路径名”来匹配文件或目录

在服务器上可能出现如下情况
在这里插入图片描述
扫描出了多个构建产物,那么这里就涉及到了取舍,大致思路来说,可以选择构建时间最新的文件,那么就着这个思路,再来分析 preview-rst,首先是查找最新的构建产物
在这里插入图片描述

  • 24~25 行:首先用 local 关键字定义两个局部变量 latest_dir(存放最新的构建路径),max_mtime(存放最新的时间),如果不加 local,那么这两个变量就会变成全局的,污染脚本环境,用 local 表示变量只能在函数内部使用
  • 28 行:循环体结构,在 bash 中的语法是
while ...; do# 循环体
done
  • 接着要结合 40 行看:这里涉及到 <(…) 进程替换,进程替换是指启动 <(…) 中的命令,并把命令的输出包装成一个伪文件,然后可以像读文件一样读这个伪文件
  • 接下来是 <(…) 中的命令
find ~/.vscode-server -path "*/swyddfa.esbonio/sphinx/html" -type d -print0 2>/dev/null
  • 整体而言,这条命令表示在特定目录 ~/.vscode-server 下,找出所有路径中包含 */swyddfa.esbonio/sphinx/html 的目录,并以空字符 \0 分隔输出,同时忽略错误信息,下面再部分看:
    1、-path:上面解释了,用来匹配完整的路径字符串
    2、-type d:只查找目录,不找文件,如果去掉,可能会匹配到 html 文件
    3、-print0:比较复杂,这个选项得结合 find 命令一起分析,首先,find 命令的设计思想是:找到 + 动作,find 命令就相当于一个条件引擎:
find [路径] [条件] [动作]

比如上面的命令

  • 路径是 ~/.vscode-server
  • 条件是路径上包含 */swyddfa.esbonio/sphinx/html,并且只查找目录
  • 动作是 -print(将结果打印输出到终端上)

ok,今天先到这里,下篇 blog 继续分析

http://www.dtcms.com/a/344972.html

相关文章:

  • C++/QT 开发技能树详解
  • 钉钉 Stream 模式SpringBoot接入配置与事件监听
  • Maxscript如何清理3dMax场景?
  • react样式问题
  • git旧仓库迁移到新仓库
  • [系统架构设计师]安全架构设计理论与实践(十八)
  • Web3与AI语境下的审美积累:HAQQ品牌识别解析
  • 多人编程新方式:cpolar 让 OpenHands 远程开发更轻松
  • 区块链技术原理(17)-以太坊网络
  • SpringBoot中的条件注解
  • 常用三角函数公式推导体系
  • LLM应用场景能力边界趋势全览
  • 从系统修复到硬件检测的技术实测
  • [antv-x6] 文档链接
  • 08高级语言逻辑结构到汇编语言之逻辑结构转换 continue break 完结汇编按逻辑结构
  • RCE的CTF题目环境和做题复现第4集
  • 驱动(二)系统移植
  • 根据webpack设计原理手写一个简版webpack
  • 亚马逊广告优化新逻辑:从人工苦力到AI智能的进化之路
  • K8S的部署与常用管理
  • http请求有哪些?
  • 文件相关操作的函数和文件操作
  • 使用tensorRT8部署yolov5目标检测模型(1)
  • 深入解析 Docker 镜像构建与性能优化实践指南
  • SSM从入门到实战: 2.6 MyBatis缓存机制与性能优化
  • 双发 ARP 测试与实践:从原理到生产验证
  • PHP 函数的参数顺序,它们是随机的吗?
  • 数学建模论文注意点
  • 华盛顿大学GeoAI本土化实践:五大实验贯穿预测、检测、生成、推理与偏差审视
  • 碧海琴魂,孤独与纯粹的永恒绝唱——《海上钢琴师》鉴赏