如何让GNU Stow忽略Mac上的.DS_Store文件
GNU Stow 忽略Mac .DS_Store 文件的正确配置
问题原因
你之前在.stow-local-ignore里写的\.DS_Store无效,是因为Stow的忽略规则采用shell glob模式,而非正则表达式。glob中.是普通字符,不需要转义,转义后的规则匹配的是\.DS_Store而非.DS_Store,导致忽略失效。
解决方案
方案1:本地目录忽略(单Stow仓库生效)
在Stow根目录的.stow-local-ignore文件中,直接写入:
.DS_Store
保存后,该Stow仓库下的所有.DS_Store文件都会被忽略,不会被Stow尝试链接到目标目录。
方案2:全局忽略(所有Stow操作生效)
如果希望所有Stow仓库都自动忽略.DS_Store,可以在用户主目录创建全局忽略文件~/.stow-global-ignore,写入:
.DS_Store
这样所有Stow命令都会自动跳过.DS_Store文件,无需每个仓库单独配置。
临时解决(单次命令生效)
如果需要临时忽略,可直接在stow命令中添加--ignore参数:
stow --ignore='.DS_Store' bin
额外说明
如果报错是因为目标目录(如~/bin)已存在非链接的.DS_Store文件,即使忽略源文件,Stow仍会检测到目标位置的冲突。这种情况需要手动删除目标目录中的.DS_Store,或者使用--adopt参数让Stow将现有文件纳入管理(注意:--adopt会覆盖源仓库中的对应文件,谨慎使用):
stow --adopt --ignore='.DS_Store' bin
内容的提问来源于stack exchange,提问作者a06e
相关产品推荐
相关产品推荐

