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


8

Pseudo-código

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

onde eu quero criar um link simbólico da fonte para dois destinos. Provavelmente moreutilse pee.


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

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

2
Você pode omitir as aspas se o diretório base não contiver espaços ou outros caracteres a serem escapados, por exemplo, pontuação. No entanto, o uso de aspas sempre quando apropriado torna um hábito que o impede de erros em outros casos onde os nomes de diretório / arquivo poderia facilmente contêm caracteres especiais
Serge

6

Se tiver, gnu parallelvocê 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

2
@Masi Certifique-se de executar o parallelcomando no parallelpacote e não no moreutils.
Gilles 'SO- stop be evil' em

5

Não é menos detalhado do que duas ln -sinvocações separadas :

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

mas isso funciona apenas 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 diminui, é claro, à medida que o número de links aumenta. Além disso, esse trecho depende do fato de que $HOMEnão contém espaços, guias ou novas linhas.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.