当前位置: 首页 > 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.xdnf.cn/news/1344349.html

相关文章:

  • 深入理解 hash -r:解决 Linux 命令缓存难题的关键密钥
  • 自定义rabbitmq的ConnectionFactory配置
  • RabbitMQ深度剖析:从基础到高级进阶实战
  • 乐迪信息:AI摄像机+刮板机人员入侵检测:杜绝井下安全事故
  • 爬虫基础学习-配置代理、以及项目实践
  • 关于爬虫的基本步骤说明【爬虫七步骤】
  • jenkins实现分布式构建并自动发布到远程服务器上 jenkins实现自动打包编译发布远程服务器
  • Laravel分布式全链路追踪实战
  • 【机器学习深度学习】LMDeploy的分布式推理实现
  • selenium爬虫
  • 布隆过滤器:用微小的空间代价换取高效的“可能存在”判定
  • TCP/UDP详解(一)
  • 微服务的编程测评系统14-C端题目列表功能-个人中心
  • Redis面试精讲 Day 27:Redis 7.0/8.0新特性深度解析
  • 高通Camx相机dump yuv和raw图的抓取方式和查看
  • 【iOS】YYModel第三方库源码
  • 笔试——Day46
  • 恢复性测试:定义、重要性及实施方法
  • 深入解析CNAME记录:域名管理的隐形枢纽
  • 几个element-plus的UI,及环境配置
  • 三格电子——ModbusTCP 转 Profinet 主站网关应用实例
  • 【TrOCR】根据任务特性设计词表vocab.json
  • RabbitMQ面试精讲 Day 27:常见故障排查与分析
  • 【数据结构C语言】顺序表
  • 四十一、【高级特性篇】API 文档驱动:OpenAPI/Swagger 一键导入测试用例
  • Design Compiler:层次模型(Block Abstraction)的简介
  • memcmp 函数的使用及其模拟实现
  • 数学建模--Topsis
  • 分布式与微服务
  • [特殊字符] 潜入深渊:探索 Linux 内核源码的奇幻之旅与生存指南