Como vincular arquivos em pastas

1

Itere os arquivos na pasta e crie links simbólicos:

Eu tenho o script atual que está tentando iterar os arquivos em uma pasta e crie links simbólicos para outra pasta:

#!/bin/bash
############################
# .make.sh
# This script creates symlinks from the home directory to any desired dotfiles in ~/dotfiles
############################

########## Variables

dir=~/dotfiles                    # dotfiles directory
config_files=$dir/*

# move any existing home files in homedir to dotfiles_old directory, then create symlinks
for config_file in $config_files; do
  ln -s $dir/$config_file ~/.$config_file
done

Agora, se no meu ~ / dotfiles eu tiver mais que arquivos, por exemplo, eu tenho pastas com arquivos. Como posso ter certeza de que criei as pastas e também de fazer o link simbólico?

Então, por exemplo, no meu ~/dotfiles eu tenho:

~/dotfiles/.config/fish/config.fish e ~/dotfiles/.config/fish/conf.d/config.fish

Eu deveria terminar com um link simbólico para

~/.config/fish/config.fish e ~/.config/fish/conf.d/config.fish

Como posso fazer isso?

    
por Hommer Smith 31.12.2017 / 01:47

1 resposta

2

Talvez você possa usar cp em vez de ln . De man 1 cp :

-R
copy directories recursively

-s
make symbolic links instead of copying

Notas:

  • -R é exigido pelo POSIX, mas -s não é (seu cp pode ou não suportá-lo).
  • Se você "copiar" um arquivo dessa maneira, -R não vai doer.
  • cp -Rs … replicará estrutura de diretórios com links simbólicos para arquivos (não links simbólicos para diretórios); parece que é isso que você quer.
  • No meu Kubuntu, criar links simbólicos relativos com cp é limitado ao diretório atual, portanto, é inútil com -R . Use o caminho completo para o diretório que você deseja "copiar".
  • Pesquisa -p da opção cp . Eu acho que você quer usá-lo.

Poucas preocupações sobre o seu script:

  • Este comentário é sensato; variáveis de cotação.
  • * não retornará arquivos nem diretórios com nomes que começam com um ponto ( . ).
por 31.12.2017 / 03:46