stow를 사용하여 디렉토리 무시

stow를 사용하여 디렉토리 무시

stow올바르게 사용하는 데 문제가 있습니다 . 모든 것을 설치하는 데 사용하는 스크립트는 stow다음과 같습니다.

cd ~/Utility/configs
for file in *; do
  # Only run Stow on the directories in the dotfiles folder and not the individual files.
  # Using 'basename' strips the filepath from the directory name. 
  if [ -d ${file} ]; then
    stow  $(basename $file) -t ~/
    echo "$(basename $file) stowed."; 
  fi
done

지금은 vim디렉토리에 다음이 있습니다 ~Utility/configs/vim/.

tree . -a  -L 2
.
├── .stow-local-ignore
├── .vim
│   ├── autoload
│   ├── plugged
│   └── UltiSnips
└── .vimrc

무시하고 싶은 것은 plugged저장되지 않으므로 다음과 같습니다 .stow-local-ignore.

\.vim/plugged
\.vim/spell

그러나 이것은 의도한 대로 작동하지 않았고 삽입이 항상 취소되었습니다. 기본적으로 ~/.vim/의 내용은 거기에 있습니다 ~/Utility/configs/vim/.vim. 이것이 내가 원하지 않는 것입니다. 나는 특히 원한다오직 autoload그리고 Ultisnips다른 것은 아무것도 저장할 수 없습니다.

어떻게 해야 하나요?

참고: 저는 vim을 예로 사용하고 있지만 이것은 vim과 관련이 없고 stow와 관련이 있습니다. 그래서 vim 채널 대신 여기에 게시하겠습니다.

출력 저장, 세부정보=5

Stowing contents of Utility/configs/vim (cwd=/home/rudra)
  => Utility/configs/vim
  is_a_node(.)
  link_task_action(.): no task
  dir_task_action(.): no task
    parent_link_scheduled_for_removal(.): prefix 
    parent_link_scheduled_for_removal(.): returning false
  is_a_node(.): really exists
  Using ignore file: Utility/configs/vim/.stow-local-ignore
    Ignore list regexp for paths:    /(?^:(^|/)(\.vim/spell|^/\.stow\-local\-ignore$|\.vim/plugged)(/|$))/
    Ignore list regexp for segments: none
  Not ignoring .vimrc
Stowing Utility/configs / vim / .vimrc
  => Utility/configs/vim/.vimrc
  is_a_link(.vimrc)
  link_task_action(.vimrc): no task
  is_a_link(.vimrc): returning 0
  is_a_node(.vimrc)
  link_task_action(.vimrc): no task
  dir_task_action(.vimrc): no task
    parent_link_scheduled_for_removal(.vimrc): prefix .vimrc
    parent_link_scheduled_for_removal(.vimrc): returning false
  is_a_node(.vimrc): returning false
LINK: .vimrc => Utility/configs/vim/.vimrc
  Using ignore file: Utility/configs/vim/.stow-local-ignore
    Using memoized regexps from Utility/configs/vim/.stow-local-ignore
    Ignore list regexp for paths:    /(?^:(^|/)(\.vim/spell|^/\.stow\-local\-ignore$|\.vim/plugged)(/|$))/
    Ignore list regexp for segments: none
  Ignoring path /.stow-local-ignore
  Using ignore file: Utility/configs/vim/.stow-local-ignore
    Using memoized regexps from Utility/configs/vim/.stow-local-ignore
    Ignore list regexp for paths:    /(?^:(^|/)(\.vim/spell|^/\.stow\-local\-ignore$|\.vim/plugged)(/|$))/
    Ignore list regexp for segments: none
  Not ignoring .vim
Stowing Utility/configs / vim / .vim
  => Utility/configs/vim/.vim
  is_a_link(.vim)
  link_task_action(.vim): no task
  is_a_link(.vim): returning 0
  is_a_node(.vim)
  link_task_action(.vim): no task
  dir_task_action(.vim): no task
    parent_link_scheduled_for_removal(.vim): prefix .vim
    parent_link_scheduled_for_removal(.vim): returning false
  is_a_node(.vim): returning false
LINK: .vim => Utility/configs/vim/.vim
Planning stow of package vim... done

@Kusalananda: 이것이 제가 하는 일입니다. verbose=2:

pwd
/home/rudra/Utility/configs
 mv vim/.stow-local-ignore ~/
stow -D vim --verbose=2
stow dir is /home/rudra/Utility/configs
stow dir path relative to target /home/rudra/Utility is configs
Planning unstow of package vim...
CONFLICT when unstowing vim: existing target is neither a link nor a directory: .vimrc
.vim did not exist to be unstowed
Planning unstow of package vim... done
WARNING! unstowing vim would cause conflicts:
  * existing target is neither a link nor a directory: .vimrc
All operations aborted.

cd vim/
stow -D .vim --verbose=2
stow dir is /home/rudra/Utility/configs/vim
stow dir path relative to target /home/rudra/Utility/configs is vim
Planning unstow of package .vim...
UltiSnips did not exist to be unstowed
autoload did not exist to be unstowed
plugged did not exist to be unstowed
Planning unstow of package .vim... done
Processing tasks...

stow -D .vimrc --verbose=2
stow dir is /home/rudra/Utility/configs/vim
stow dir path relative to target /home/rudra/Utility/configs is vim
stow: ERROR: The stow directory vim does not contain package .vimrc
cd ..
ll ~/.vim*
lrwxrwxrwx. 1 rudra rudra  24 Apr 30 16:16 /home/rudra/.vim -> Utility/configs/vim/.vim
-rw-------. 1 rudra rudra 13K Apr 30 16:17 /home/rudra/.viminfo
lrwxrwxrwx. 1 rudra rudra  26 Apr 30 16:10 /home/rudra/.vimrc -> Utility/configs/vim/.vimrc
unlink ~/.vim
unlink ~/.vimrc
cp ~/.stow-local-ignore vim/
stow vim -t ~/ --verbose=2
stow dir is /home/rudra/Utility/configs
stow dir path relative to target /home/rudra is Utility/configs
Planning stow of package vim...
LINK: .vimrc => Utility/configs/vim/.vimrc
LINK: .vim => Utility/configs/vim/.vim
Planning stow of package vim... done
Processing tasks...
Processing tasks... done
tree ~/.vim -L 1
/home/rudra/.vim
├── autoload
├── plugged
└── UltiSnips

답변1

무시 파일의 구문이 정확합니다.

.stow-local-ignore파일은 일단 생성되면 유효합니다.

적용되면 로드, 다시 로드 및 언로드에 영향을 줍니다.

즉, 디렉토리를 넣고그 다음에파일 무시를 추가했습니다. 디렉터리를 복원하거나 취소하면아니요에 저장된 영향을 받는 파일은 .stow-local-ignore해당 파일을 가리키는 기호 링크가 설치된 상태로 유지됩니다.

따라서 디렉토리에 를 추가할 .stow-local-ignore때 다음 작업 흐름을 따르십시오 .

  1. 디렉토리가 다음과 같은지 확인하세요.아니요치워두세요.
  2. 파일 추가 .stow-local-ignore.
  3. 저장 디렉터리.

지금 해야 할 일은 무시 파일을 삭제/이름 바꾸기, 디렉터리 스택 해제, 무시 파일 추가 및 디렉터리를 다시 숨기는 것입니다.

관련 정보