【问题标题】:Why doesn't GNU Stow ignore single files in main directory?为什么 GNU Stow 不忽略主目录中的单个文件?
【发布时间】:2020-10-06 18:19:52
【问题描述】:

我在我的 dotfile 文件夹中添加了一个 README,由于我使用 stow 管理每个包,我想忽略它。从文档中我读到,默认情况下 stow 使用包含 README 文件的预设列表。现在,这似乎不起作用。我也尝试添加 .stow-global-ignore 但同样的错误。即使强制使用stow -nv --ignore='README.md' * 也不会导致任何结果。

$ tree
.
├── i3
├── i3status
├── nvim
├── README.md
├── rofi
├── stow
├── urxvt
└── zsh

$ stow -nv *
LINK: .config/i3/config => ../../.dotfiles/i3/.config/i3/config
LINK: .config/i3status/config => ../../.dotfiles/i3status/.config/i3status/config
LINK: .config/nvim/init.vim => ../../.dotfiles/nvim/.config/nvim/init.vim
stow: ERROR: The stow directory .dotfiles does not contain package README.md

我的猜测是忽略列表仅适用于 stow 目录中的包(因此是 dirs)?有什么解决方法吗?

【问题讨论】:

    标签: linux dotfiles


    【解决方案1】:

    我刚遇到同样的问题,我发现将斜杠添加到通配符 */ 意味着 glob 只会查找目录,而忽略 stow 的“根”(在我的情况下为 dotfiles 文件夹)中的所有文件.这会忽略我想要的 readme.mdlicense.txt 等文件。

    我的 stow 命令变为(从我的 dotfiles repo 目录中运行)

    stow -t ~ */
    

    我认为 stow 尝试将文件存放在根目录下是无效的,我认为它们需要始终嵌套在一个文件夹中,所以可能这应该是默认设置,但我在那里有点模糊.如果曾经有从存储根存储文件的用例,则此解决方案将不起作用。

    感谢this post,这让我开始思考。

    【讨论】:

    • 到此为止!最后就是这么简单。谢谢。
    【解决方案2】:

    写一个类似的shell脚本

    #! /usr/bin/env sh
    stow -nv i3 i3status nvim rofi stow urxvt zsh
    

    而不是做

    stow -nv *
    

    ?

    我认为问题在于stow * 中的* 匹配包括README.md 在内的所有文件?

    如果更喜欢拒绝列表,我猜你可以使用fdfindexclude 功能并将其传递给--exec。

    类似:

    fd --exclude README.md -d 1 --exec stow -nv
    

    ...-d 1 只包含直接子目录。

    【讨论】:

    • 我已经在考虑 shell 脚本选项,但我希望我能找到一些更好的解决方案。我会给你正确的答案,因为它已经 5 天了,而且似乎不会成为讨论的热门话题。谢谢和欢呼。
    • 我同意。我和你有同样的问题,这至少是我想出的最好的。如果可以直接通过stow 忽略不在包内的所有文件,那将会很方便。我想第三种选择是将这些“元文件”(如 README)放入“元”包中,然后将 ignore 放入其中,但我认为我个人更喜欢其他的。
    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2016-02-18
    • 2018-01-06
    • 2021-11-16
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多