ico*_*ast 6 bash wildcards dot-files
当我尝试将目录中的所有点文件与其匹配时,.*
它似乎有一个令人讨厌的副作用:除了匹配所有(真实)文件和目录之外,它还匹配.
和..
.
bash-3.2$ mv test/.* dest/
mv: rename test/. to dest/.: Invalid argument
mv: test/.. and dest/.. are identical
Run Code Online (Sandbox Code Playgroud)
这看起来真的很奇怪,因为它们基本上是“假”目录,只是为了简化相对路径。它们不是目录内容的一部分,当我尝试将一个目录的内容移动到另一个目录时,我不希望它们匹配。我想不出任何我希望它们与.*
.
那么我该如何关闭它呢?(除了使用 Z shell,它并不总是可用,并且可能不是运行我编写的函数的人使用的 shell。)
您可以使用GLOBIGNORE
bash 变量。
环球网 定义文件名集的以冒号分隔的模式列表 被路径名扩展忽略。如果文件名与 路径名扩展模式也匹配以下模式之一 GLOBIGNORE,它从匹配列表中删除。
和
…………………… 文件名 ``.'' 和 ``..'' 总是 设置 GLOBIGNORE 且不为空时忽略。
所以如果你设置
GLOBIGNORE='*/.:*/..'
Run Code Online (Sandbox Code Playgroud)
thenpath/.*
将不匹配.
and ..
,如您所问。
归档时间: |
|
查看次数: |
1013 次 |
最近记录: |