引言在bash脚本编程中,关联数组(associative array)是一种非常强大的数据结构,它允许我们使用字符串作为索引,实现类似于哈希表的功能。在处理需要根据键进行快速查找和统计的场景时,关联数组能够显著简化代码逻辑。本文将通过一个完整的实战脚本array-2,详细讲解如何利用关联数组统计一个目录下所有文件的所有者和组所有者,并输出格式化且排序后的结果。1. 脚本功能预览array-2脚本接收一个目录作为参数,遍历该目录下的所有文件,提取每个文件的属主(owner)和属组(group),然后输出每个文件及其属主和属组信息,最后分别统计每个属主和每个属组拥有的文件数量。输出结果按字母顺序排序,便于阅读。以下是针对/usr/bin目录运行脚本的示例输出(已做精简):/usr/bin/2to3-2.6 root root /usr/bin/2to3 root root ... /usr/bin/zsoelim root root File owners: daemon : 1 file(s) root : 1394 file(s) File group owners: crontab : 1 file(s) daemon : 1 file(s) ... root : 1380 file(s)2. 关联数组的声明与初始化在bash中,关联数组必须使用declare -A显式声明,否则会被当作普通数组(普通数组只能使用整数索引)。在脚本的第5行,我们一次性声明了五个关联数组:declare-Afiles file_group file_ownergroupsownersfiles:键为文件名,值为文件名本身,用于后续遍历。file_group:键为文件名,值为该文件所属的组。file_owner:键为文件名,值为该文件的属主。groups:键为组名,值为属于该组的文件数量。owners:键为属主名,值为该属主拥有的文件数量。3. 检查目录参数与错误处理脚本的第7-10行检查用户是否提供了一个有效的目录:if[[!-d"$1"]];thenecho"Usage: array-2 dir"2exit1fi如果$1不是目录,则输出用法信息并退出。注意输出重定向到stderr(2),符合标准错误处理的惯例。4. 遍历文件并提取所有者/组信息第12-20行的for循环遍历指定目录下的所有文件(使用"$1"/*通配):foriin"$1"/*;doowner="$(stat-c%U"$i")"group="$(stat-c%G"$i")"files
一个大专生的程序13年 2013-06-27 IT民工蜕变就是不要把程序的思想直接用到用户的显示界面上,就是不要把数据库的内容直接显示出来,要显示的让用户舒服 表格设计 项目需求-要显示过去半个月,有哪些教师,哪些老师,在上哪些课程,…
LLM Twin系统架构设计:基于FTI流水线的四组件方案 技术需求清单 构建LLM Twin系统的第一步是明确ML工程层面的需求。从数据到部署,需要覆盖以下四大领域: 数据采集:自动从LinkedIn、Medium、Substack、GitHub等平台爬取个人数字内容,支持定时调度。 数据处理与存储:标准化爬取数据,存入数据仓库;清洗、分块、嵌入文本,…
卡马克在光线追踪,id tech6,射线跟踪,控制台,物理学等的谈话 第一部分 原文地址https://www.pcper.com/reviews/Graphics-Cards/John-Carmack-id-Tech-6-Ray-Tracing-Consoles-Physics-and-more 卡马克在光线追踪,id tech6上面的研究,我觉得对于理解id tech5,id tech6有所帮助, 使用了翻译软件 ,再加…
OpenClaw零代码实战:3分钟跑通智能体工作流 1. 项目概述:这不是一个“下载教程”,而是一次零门槛的OpenClaw实战启蒙 “OpenClaw官网下载免费中文教程,最新版零代码3分钟模型实测教学”——这个标题里藏着三个极易被忽略但极其关键的信息点: “官网”意味着权威性与安全性&…
终极指南:用airplay2-win将Windows电脑变成免费AirPlay接收器 终极指南:用airplay2-win将Windows电脑变成免费AirPlay接收器 【免费下载链接】airplay2-win Airplay2 for windows 项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win 还在为iPhone、iPad和Mac找不到合适的Windows投屏方案而烦恼吗?现在…
【Bug已解决】openclaw tool call timeout / Function execution exceeded limit — OpenClaw 工具调用超时解决方案 【Bug已解决】openclaw: "tool call timeout" / Function execution exceeded limit — OpenClaw 工具调用超时解决方案 1. 问题描述 OpenClaw 在执行工具调用时超时: # 工具调用超时 $ openclaw --auto-approve "运行 npm install" Error: Too…
3分钟终极指南:免费OFD转PDF工具完整使用教程 3分钟终极指南:免费OFD转PDF工具完整使用教程 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 还在为无法打开OFD格式的电子发票、政府公文而烦恼吗?Ofd2Pdf是一款完全免费的OF…
【Bug已解决】openclaw conversation history lost / Cannot resume session — OpenClaw 对话历史丢失解决方案 【Bug已解决】openclaw: "conversation history lost" / Cannot resume session — OpenClaw 对话历史丢失解决方案 1. 问题描述 OpenClaw 的对话历史丢失,无法恢复之前的会话: # 对话历史丢失 $ openclaw --continue Warning: No previous se…
深入理解 Java I/O 流:从基础到高级应用 1. 什么是 I/O 流? 在 Java 编程中,I/O 流(Input/Output Stream) 是处理输入和输出的核心抽象。它代表了一个有序的数据序列,可以从源(如文件、网络连接、内存缓冲区)读取数据,或向目…
PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 在软件开发过程中,清晰的系统设计往往比编码本身更为关键。传统拖拽式UML工具虽然直观,却常常成为效率杀手——频繁的鼠标操作打断设计思路,版本控制困难,…
【RT-DETR涨点改进】29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 开篇故事 上个月帮一家安防厂商做项目优化,他们用RT-DETR做实时人流统计,部署在NVIDIA A10上。客户反馈说:“GPU利用率才30%,但延迟已经飙到40ms了,加人流量就丢帧。” 我远程一看,好家伙——生产环境里每个请求单独…
Postman 环境变量实战:3种动态设置方法与CI/CD集成避坑指南 Postman 环境变量高阶实战:动态管理与 CI/CD 深度集成在接口自动化测试领域,环境变量的灵活运用往往成为区分初级与高级测试工程师的关键能力。本文将深入探讨 Postman 环境变量的三种动态设置模式,并分享 Newman 在 CI/CD 流水线中的实战避坑…
PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 在软件开发过程中,清晰的系统设计往往比编码本身更为关键。传统拖拽式UML工具虽然直观,却常常成为效率杀手——频繁的鼠标操作打断设计思路,版本控制困难,…
【RT-DETR涨点改进】29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 开篇故事 上个月帮一家安防厂商做项目优化,他们用RT-DETR做实时人流统计,部署在NVIDIA A10上。客户反馈说:“GPU利用率才30%,但延迟已经飙到40ms了,加人流量就丢帧。” 我远程一看,好家伙——生产环境里每个请求单独…
Postman 环境变量实战:3种动态设置方法与CI/CD集成避坑指南 Postman 环境变量高阶实战:动态管理与 CI/CD 深度集成在接口自动化测试领域,环境变量的灵活运用往往成为区分初级与高级测试工程师的关键能力。本文将深入探讨 Postman 环境变量的三种动态设置模式,并分享 Newman 在 CI/CD 流水线中的实战避坑…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…