stow command
linux의 stow 명령어는 symbolic links를 관리해 주는 명령어이다.
dotfiles을 관리에 자주 사용되고, 소프트웨어 패키지 설치 관리자 역할을 하기도 한다.
stow를 이용하면 ‘/usr/local/stow/’ 하위에 사용자가 컴파일 해서 사용하는 프로그램들을 만들어서 사용할 수 있게 된다.
요즘은 패키지 관리자들이 너무 잘 되어 있어서 굳이 패키지 관리 용도로 사용하는 모습은 잘 보이지 않는다.
기본 동작은 stow dir에서 지정된 이름의 디렉터리에 있는 파일을 현재 디렉터리 바로 위의 디렉터리에 링크한다.
stow를 사용할 때 주의 점은 디렉터리 구조가 목적에 맞게 미리 구성되어 있어야 한다.
이런 번거로움 때문에 최근에는 “ln -s” 같이 직접 link를 만들어 사용하는 모습도 많이 보인다.
기본 사용법
$> stow --restow --target=$XDG_CONFIG/nvim .
...
$> cd /usr/local/stow/ && sudo stow PACKAGE
help stow
$> stow --help
stow (GNU Stow) version 2.3.1
SYNOPSIS:
stow [OPTION ...] [-D|-S|-R] PACKAGE ... [-D|-S|-R] PACKAGE ...
OPTIONS:
-d DIR, --dir=DIR Set stow dir to DIR (default is current dir)
-t DIR, --target=DIR Set target to DIR (default is parent of stow dir)
-S, --stow Stow the package names that follow this option
-D, --delete Unstow the package names that follow this option
-R, --restow Restow (like stow -D followed by stow -S)
--ignore=REGEX Ignore files ending in this Perl regex
--defer=REGEX Don't stow files beginning with this Perl regex
if the file is already stowed to another package
--override=REGEX Force stowing files beginning with this Perl regex
if the file is already stowed to another package
--adopt (Use with care!) Import existing files into stow package
from target. Please read docs before using.
-p, --compat Use legacy algorithm for unstowing
-n, --no, --simulate Do not actually make any filesystem changes
-v, --verbose[=N] Increase verbosity (levels are from 0 to 5;
-v or --verbose adds 1; --verbose=N sets level)
-V, --version Show stow version number
-h, --help Show this help
Report bugs to: bug-stow@gnu.org
Stow home page: <http://www.gnu.org/software/stow/>
General help using GNU software: <http://www.gnu.org/gethelp/>
TLDR
$> tldr stow
stow
Symlink manager.
Often used to manage dotfiles.
More information: https://www.gnu.org/software/stow.
- Symlink all files recursively to a given directory:
stow --target=path/to/target_directory file1 directory1 file2 directory2
- Delete symlinks recursively from a given directory:
stow --delete --target=path/to/target_directory file1 directory1 file2 directory2
- Simulate to see what the result would be like:
stow --simulate --target=path/to/target_directory file1 directory1 file2 directory2
- Delete and resymlink:
stow --restow --target=path/to/target_directory file1 directory1 file2 directory2
- Exclude files matching a regular expression:
stow --ignore=regular_expression --target=path/to/target_directory file1 directory1 file2 directory2