fish shell:“shopt -s dotglob”模拟

fish shell:“shopt -s dotglob”模拟

我正在尝试从 迁移bashfish

fish的类似物是什么shopt?我正试图模仿我的这句话.bashrc

shopt -s dotglob # for mv * see hidden files

答案1

这是故意的。大多数时候,用户不想意外匹配不可见的隐藏文件ls(没有-a)。通常,文件隐藏是有原因的,而不仅仅是为了捉弄你。此外,如果*匹配隐藏文件,匹配非隐藏文件会太棘手。

但是,与 bash 不同的是,shopt -s dotglob它不需要匹配隐藏文件。在 bash 中,shopt -s dotglob是匹配目录中每个文件而不会意外匹配.或 的唯一方法..。但是,fish shell 永远无法使用 glob 匹配...,因此这不是问题(如果您真的需要匹配...出于某些愚蠢的原因,只需明确说明)。此外,fish 在设计上试图避免使用选项,因此它没有dotglob

要匹配目录中的每个文件,您可能需要使用括号扩展来检测以点开头的文件和不以点开头的文件。{.,}是括号扩展,它匹配可能存在也可能不存在的点。它后面的星号匹配所有内容。因为 fish 中的 glob 无法匹配...,所以以下代码匹配除这两个目录之外的所有内容(如果您使用下面的代码,bash 会不幸地匹配这两个目录)

cat {.,}*

相关内容