Как создать несколько гибких ссылок на один файл?

Как я пошел бы о создании символьной ссылки, которая создает несколько ссылок на один файл?

Я хотел бы ~/Desktop/foo.txt "появиться" в нескольких местоположениях; и следующее не работает:

ln -s ~/Desktop/foo.txt /location/one /location/two
3
задан 5 February 2017 в 05:22

5 ответов

Проверьте страница справочника - можно только указать одно место назначения. Необходимо будет циклично выполниться:

for destination in /location/one /location/two ...; do
    ln -s ~/Desktop/foo "$destination"
done
5
ответ дан 1 December 2019 в 13:23

Вам нужны две команды.

ln -s Desktop/foo.txt location1; ln -s Desktop/foo.txt location2
0
ответ дан 1 December 2019 в 13:23

Для ссылки, для копирования .gpl цветовых палитр в соответствующий GIMP, каталоги Inkscape и LibreOffice, я сделал это:

read -e -p "Enter filename: " file

for destination in ~/.config/libreoffice/4/user/config/ ~/.config/inkscape/palettes/ ~/.gimp-2.8/palettes/ ...; do
    ln --symbolic --backup --force "$file" "$destination"
done
1
ответ дан 1 December 2019 в 13:23

Относительно простая острота Python может сделать задание:

$ python -c 'import sys,os;map(lambda x:os.symlink(sys.argv[1],x),sys.argv[2:])' ~/input.txt ~/Desktop/input.txt ~/Pictures/input.txt
$ ls -l ~/Desktop/input.txt                                                                                              
lrwxrwxrwx 1 xieerqi xieerqi 23 2月   4 19:10 /home/xieerqi/Desktop/input.txt -> /home/xieerqi/input.txt

Путем это работает, просто. Мы используем sys модуль для обработки параметров командной строки и использования symlink() функция от os модуль. map() функция по существу используется в качестве замены для for цикл, который берет функцию и список как аргумент. Здесь, функция lambda x:os.symlink(sys.argv[1],x), и это будет выполняться для каждого объекта в sys.argv[2:] список.

Примечание, ~/input.txt исходный файл (называемый как sys.argv[1] , второй параметр командной строки), и ~/Desktop/input.txt и ~/Pictures/input.txt заканчиваются символьные ссылки. Они - аргументы 2 и 3, таким образом мы используем sys.argv[2:] часть списка, начинающая с 3-го объекта до конца списка. Можно ли задаваться вопросом, ну, в общем, где первый аргумент. Это -c флаг.

Форма сценария того же самого была бы

#!/usr/bin/env python
import sys,os
for item in sys.argv[2:]:
    os.symlink(sys.argv[1],item)
1
ответ дан 1 December 2019 в 13:23

попробуйте следующее:

ln -s /path/dir/{dir1,dir2,dir3} /path/destination
0
ответ дан 20 January 2020 в 20:59

Другие вопросы по тегам:

Похожие вопросы: