[ @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, но проще забить.
Превратить симлинк в команду в консоли
Можно пройти далее и положить этот симлинк в файл с бинарниками, которые учитывает система.
- Если нужно, чтобы симлинк был доступен для всех пользователей в системе, его надо положить в „/usr/local/bin/” (или даже в „/usr/bin”, но туда лучше не лезть).
- Если нужно, чтобы симлинк был доступен только для действующего пользователя, его надо положить в „~/.local/bin/”.
После этого в консоли (находясь в любом каталоге) можно набрать эту уникальную команду „updeb” и нажать Enter — так, словно в консоли была вызвана обычная линуксовая команда.
Перед тем как создавать «новую крутую короткую команду», рекомендуется проверить, нет ли аналогичной команды в системе:
man debup
Если появится справочная страница — перепродумать название своего нового симлинка. Выход из справки по клавише „q”,
Положить линк на скрипт в «Меню приложений»
Не надо все скрипты пихать в приложения, ведь их место в консоли. Но если очень хочется, то можно.
mcedit ~/.local/share/applications/ИмяФайла.desktop
Отредактировать „ИмяФайла.desktop”:
Encoding=UTF-8
Name= Название новой программы
Comment= Если нужно
Type=Application
Terminal=true
Exec=~/.local/bin/МойСимЛинк
StartupNotify=true
Categories=System;
Новая иконка появится в Меню приложений > Система.
Если надо сделать «новое приложение» доступным для всех пользователей в системе, файл „ИмяФайла.desktop” надо через „sudo” положить в каталог „/usr/share/applications/”.