./*/ 是可移植的吗?

2024-01-09

我经常使用./*/在 for 循环中

for d in ./*/; do
  : # do something with dirs
done

匹配当前工作目录中的所有非隐藏目录,但我不确定这是否是一种可移植的方法。我的系统上安装了 bash、dash 和 ksh,并且它适用于所有系统,但是自从POSIX 规范 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_06没有说任何关于它的事情(或者它隐含地说了,我错过了)我想我不能依赖它。我也检查过,但无济于事,那里也没有提及它。

它的行为实现或文件系统依赖吗?我在这里错过了什么吗?我怎么知道它是否是便携式的?


简短回答:是的

长答案:

POSIX 标准(来自 opengroup)指出/将仅匹配扩展文件名中的斜杠。由于 Unix/Linux 不允许/在文件名中,我相信这在 Unix/Linux 系统上是一个安全的假设。

从下面的粗体文本看来,即使对于允许的系统/在文件名中,POSIX 标准要求/将不会与此类文件匹配。

在 Windows 上,看起来像/文件名中不允许使用 ,但我不是 Windows 专家。

From Shell 编程语言 § 用于文件名扩展的模式 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13_03:

路径名中的斜杠字符应通过在模式中使用一个或多个斜杠来显式匹配;它既不能与星号或问号特殊字符匹配,也不能与方括号表达式匹配。模式中的斜杠应在括号表达式之前识别;因此,一个用于文件名扩展的模式括号表达式中不能包含斜杠. ...

附加说明 - 澄清路径名:

The pathname在 4.13 中定义,明确引用带有尾部斜杠的路径名一般概念 § 路径名解析 https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13.

至少包含一个非 字符且以一个或多个尾随 字符结尾的路径名不得成功解析,除非尾随 字符之前的最后一个路径名组件指定现有目录或目录条目这是在解析路径名后立即为目录创建的。当未命名现有目录的路径名包含至少一个非 字符且包含一个或多个尾随 字符时,使用路径名解析的接口可以指定附加约束。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

./*/ 是可移植的吗? 的相关文章

随机推荐

  • .net 序列化:如何有选择地忽略数据字段

    在 Net你可以将一个字段标记为不可序列化 并且在序列化过程中它将被跳过 我正在寻找一种简单的方法 它允许我在运行时控制是否应序列化特定字段 您指的是 将字段标记为不可序列化 所以我假设您正在使用BinaryFormatter and No
  • 播放服务广告与 appcompat 冲突

    当我添加implementation com google android gms play services ads 18 2 0 到我的 build gradle Android Studio 亮点implementation com
  • 如何强制mongo以小写形式存储成员?

    我有一个 BsonDocuments 集合 例如 MongoCollection
  • 为什么绑定不适用于动画?

    我对动画绑定属性有一个简单的问题 这是一个简单的例子来说明它 视图模型 public class ViewModel private double myProperty public double MyProperty get return
  • 在 JavaScript 中检测 Lion (OS X 10.7)?

    有没有办法用 Javascript 检测操作系统是否是 OS X Lion Cheers Lion 中 Safari 还有 Firefox 的用户代理类似于 Mozilla 5 0 Macintosh Intel Mac OS X 10 7
  • 如何从 Amazon API Gateway 将查询字符串或路由参数传递到 AWS Lambda

    例如如果我们想使用 GET user name bob or GET user bob 如何将这两个示例作为参数传递给 Lambda 函数 我在文档中看到了有关设置 映射自 的内容 但我在 API Gateway 控制台中找不到该设置 me
  • Kotlin 中具有反向查找功能的有效枚举?

    我正在尝试找到在 Kotlin 中对枚举进行 反向查找 的最佳方法 我从 Effective Java 中得到的收获之一是在枚举中引入静态映射来处理反向查找 使用一个简单的枚举将其移植到 Kotlin 会得到如下所示的代码 enum cla
  • 关于 (POSIX) 信号主题的最佳参考文献是什么?

    信号似乎是概念上应该简单且易于解释的领域之一 但我从未遇到过既全面 清晰又最新的来源 在某种程度上 这似乎是由于历史遗留问题 规则的大量例外 不同的编程标准 混乱的线程 实时添加等 关于 unix linux posix 信号 您写得最好
  • 如何在 Asp.net MVC2 中通过 Ajax 调用处理 UnauthorizedRequest

    Brief 我的框架中有一个子类 AuthorizeAttribute 我在其中进行自定义授权 我正在从普通的 asp net mvc 视图渲染切换到通过 jQuery 的 Ajax 渲染 因此 应用程序中的每个链接都会执行 ajax 调用
  • Firefox 中的内联 SVG

    我对这个有点难住了 我使用 Protovis 一个 JS 库 渲染 SVG 可视化 它在 Chrome 和 Firefox 中运行得非常好 我将渲染的 SVG 保存在我的服务器上 并尝试使用 PHP 函数在 图库 视图中重新渲染它 但这在
  • Python Gtk 3.0:如何在 Notebook 中获取焦点

    我正在尝试将焦点设置为Entry输入字段 如果我把它放在一个Box 我可以通过设置焦点grab focus方法 但如果Entry是在一个里面Notebook 它没有聚焦 示例代码 import gi gi require version G
  • querySelectorAll 无法识别 var

    我正在使用 casperjs 进行一些网络抓取 但遇到了一个奇怪的问题 我希望能够从字符串构造 CSS 路径并使用 querySelectorAll 获取数组 如下所示 var tier ou var index div list gt d
  • sed:替换行的一部分

    如何用 sed 替换一行的一部分 线路 DBSERVERNAME xxx 应替换为 DBSERVERNAME yyy 值 xxx 可能会有所不同 并且 dbservername 和该值之间有两个选项卡 该名称 值对是配置文件中的众多名称 值
  • github PR 显示所有过去的提交

    我们最近改变了工作流程 我们在 github 上的 新 存储库有 2 个分支 master and develop master不受直接推送保护 仅合并 PR develop是所有乐趣发生的地方 功能分支被合并回develop git me
  • 在 Angular 2 中使用第三方库 (parse.com)

    我正在学习 Angular 2 并且已经遵循 Egghead 的教程 但我对有关 Angular 的一切都很陌生 现在我想做一些更高级的事情并开始将 Parse com 与 A ngular 2 结合使用 通常我会通过以下方式将 parse
  • OPC 节点路径中的“ns=2;s=”有何意义?

    我注意到所有 OPC 标签 ID 的前缀都是ns 2 s 可能的 NodeId 值的一些示例是 ns 2 s AcquisitionTimeRemaining ns 2 s Status ns 2 s Time 我想知道这个前缀的意义是什么
  • 在 Flutter 中创建自定义小部件

    import package flutter material dart import package font awesome flutter font awesome flutter dart int weight 60 class R
  • 获取城市名称不以元音开头或不以元音结尾

    从 STATION 查询不以元音开头或不以元音结尾的 CITY 名称列表 您的结果不能包含重复项 输入格式 STATION表描述如下 我写了下面的查询 但它对我不起作用 有什么建议吗 select distinct city from st
  • GitHub - 查找与提交关联的拉取请求

    我正在尝试查找过去的拉取请求 以查看对特定问题做出了哪些评论 操作 我知道该文件和更改 因此我可以通过查看指责视图来访问引入该文件的提交 但是 我找不到一种方法来查看第一次将该提交推送到分支的拉取请求 有没有办法做到这一点 或者我是否必须沿
  • ./*/ 是可移植的吗?

    我经常使用 在 for 循环中 for d in do do something with dirs done 匹配当前工作目录中的所有非隐藏目录 但我不确定这是否是一种可移植的方法 我的系统上安装了 bash dash 和 ksh 并且它