ln -s: de uma fonte para vários destinos

7

Pseudocódigo

ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/

onde desejo criar um link simbólico da origem para dois destinos. Provavelmente, moreutils e pee .

Como você pode criar muitos links simbólicos de uma fonte?

    
por Léo Léopold Hertz 준영 01.06.2016 / 23:10

3 respostas

11

Você não pode fazer isso com uma única chamada de ln , mas pode percorrer todos os destinos necessários:

$ for i in "$HOME/Documents/" "$HOME/Desktop/"; do ln -s "$HOME/file" "$i"; done
    
por 01.06.2016 / 23:17
6

Se você tem gnu parallel , pode tentar com

parallel ln -s /path/file {} ::: /path/dest1 /path/dest2 /path/dest3

ou para vincular vários destinos a (o mesmo) vários destinos

parallel ln -s {1} {2} ::: /path/file1 /path/file2 ::: /path/dest1 /path/dest2
    
por 02.06.2016 / 00:10
5

Não é menos verboso que duas invocações ln -s separadas:

echo $HOME/Documents/ $HOME/Desktop/ | xargs -n 1 ln -s $HOME/file

mas isso só funciona para caminhos absolutos (porque os links simbólicos são interpretados em relação ao diretório pai, a menos que sejam absolutos).

(O custo relativo cai, é claro, à medida que o número de links aumenta. Além disso, esse fragmento se baseia no fato de que $HOME não contém espaços, tabulações ou novas linhas.)

    
por 01.06.2016 / 23:16

Tags