我正在尝试从bash迁移到fish。
fish's对shopt的模拟是什么?我试图模仿我的.bashrc中的这句话:
shopt -s dotglob # for mv * see hidden files发布于 2014-05-18 09:44:49
这是故意的。大多数情况下,用户不希望意外地匹配对于ls (没有-a)不可见的隐藏文件。通常,文件隐藏是有原因的,而不仅仅是为了欺骗你。另外,如果*要匹配隐藏文件,那么匹配非隐藏文件就太棘手了。
但是,与bash不同,不需要shopt -s dotglob来匹配隐藏文件。在bash中,shopt -s dotglob是匹配目录中的每个文件而不意外地匹配.或..的唯一方法。但是,fish shell永远无法将.或..与globs相匹配,因此这不是一个问题(如果您出于某些愚蠢的原因需要匹配.或..,只需显式地说明它们)。此外,fish试图通过设计来避免有选择,所以它没有dotglob。
要匹配目录中的每个文件,您可能需要使用括号展开来检测以点开始的文件,以及那些不存在的文件。{.,}是与可能存在或不存在的点相匹配的括号扩展。这颗星匹配了所有的东西。由于fish中的globs不能与.或..匹配,下面的代码匹配除这两个目录之外的所有内容(如果使用下面的代码,这两个目录将不幸匹配)
cat {.,}*https://askubuntu.com/questions/397651
复制相似问题