[ Пред. ] [ Содержание ] [ След. ]

symlink

[ @debian @symlink ]

 


symlink — сокращение от „symbolic link” — ссылка на хардлинк.


При редактировании симлинка происходит редактирование оригинального файла, на который ссылается симлинк.


Но при удалении симлинка оригинальный файл остаётся на диске. См. теорию Software:Симлинки и хардлинки


И см. hardlink


Симлинки можно делать на определенные файлы, которые воспринимаются и открываются как файлы (pdf или txt). А ещё можно делать симлинки на файлы, которые работают как команды в консоли. Если нет нужды делать симлинки, которые нужны множеству пользователей, то лучше использовать алиасы в файле .bashrc — они будут работать по тому же принципу, но всегда проще прочитать файл ~/.bashrc и увидеть/отредактировать список алиасов и местонахождение файлов, на которые они ссылаются. Также это упрощает жизнь при переустановке системы. См. Сделать:alias


Создать симлинк на файл


ln -s /home/mySettings/myScripts/debian/debian_update_and_upgrade.sh ~/.local/bin/debup


В каталоге ~/.local/bin/ появится новый файл с названием “~debup”.


Почему “debup”? Как захотел, так и назвал. Если бы не прописал ему название, то появился бы файл ~debian_update_and_upgrade.sh


Почему он отображается с тильдой? Потому что это не сам файл, а симлинк на файл.


Создать симлинк на каталог


ln -s /home/mySettings/myScripts/ ~/test/


В каталоге ~/test/ появится “каталог” ~myScripts.


ln -s /home/mySettings/myScripts/ ~/test/ВсякоФайло


В каталоге ~/test/ появится “каталог” ~ВсякоФайло.


Если не указывать место, где должен появиться симлинк, то он появится в текущем каталоге.


Проверить симлинк


через ls


И параметр -l (long format)


ls -l debup


Ожидаем ответ такого вида:


lrwxrwxrwx 1 [UserName> [UserGroup> 62 дек 15 03:21 debup -> /home/mySettings/myScripts/debian/debian_update_and_upgrade.sh


Читается так:


Можно узнать сразу и если файл — симлинк, и если да, то узнать inode, на который он указывает


ls -li debup


Можно получить информацию сразу о нескольких файлах


ls -li debup dupbup


И если в ответе видно, что оба файла указывают на один и тот же inode, то перед нами — хардлинки.


через file


file test.txt


Ответ:


test.txt: symbolic link to /home/AppImages/test.txt


Если бы файл был хардлинком, ответ был бы такой:


test.txt: Unicode text, UTF-8 text


через readlink


readlink test.txt


Если это симлинк, в ответ должен вернуться путь на оригинал:


/home/AppImages/test.txt


Если это хардлинк, в ответ будет полная тишина (словно ничего не произошло).


И если проверяемый файл не существует, в ответ тоже вернется тишина, поэтому данный способ проверки мало кто использует. Есть возможность вызывать команду с параметром -v, но проще забить.


Превратить симлинк в команду в консоли


Можно пройти далее и положить этот симлинк в файл с бинарниками, которые учитывает система.



После этого в консоли (находясь в любом каталоге) можно набрать эту уникальную команду „updeb” и нажать Enter — так, словно в консоли была вызвана обычная линуксовая команда.


Собственно, я только что сделал новую команду в Linux, и за это мне полагается большая круглая медаль «За передовую технологическую магию».


Перед тем как создавать «новую крутую короткую команду», рекомендуется проверить, нет ли аналогичной команды в системе:


man debup


Если появится справочная страница — перепродумать название своего нового симлинка. Выход из справки по клавише „q”,


Положить линк на скрипт в «Меню приложений»


Не надо все скрипты пихать в приложения, ведь их место в консоли. Но если очень хочется, то можно.


mcedit ~/.local/share/applications/ИмяФайла.desktop


Отредактировать „ИмяФайла.desktop”:


[Desktop Entry]
Encoding=UTF-8
Name= Название новой программы
Comment= Если нужно
Type=Application
Terminal=true
Exec=~/.local/bin/МойСимЛинк
StartupNotify=true
Categories=System;


Новая иконка появится в Меню приложений > Система.


Если надо сделать «новое приложение» доступным для всех пользователей в системе, файл „ИмяФайла.desktop” надо через „sudo” положить в каталог „/usr/share/applications/”.