Символната връзка (наричана още символна връзка) е вид файл в Linux, който сочи към друг файл или папка на вашия компютър. Символните връзки са подобни на преките пътища в Windows.
Някои хора наричат символните връзки „меки връзки“ - вид връзка в Linux / UNIX системите - за разлика от „твърдите връзки“.
Разлика между мека връзка и твърда връзка
Меките връзки са подобни на преките пътища и могат да сочат към друг файл или директория във всяка файлова система.
Твърдите връзки също са преки пътища за файлове и папки, но не може да се създаде твърда връзка за папка или файл в различна файлова система.
Нека разгледаме стъпките, свързани със създаването и премахването на символна връзка. Също така ще видим какво са счупени връзки и как да ги изтрием.
Как да създадете Symlink
Синтаксисът за създаване на символна връзка е:
ln -s
ln
е командата за връзка. На -s
уточнява флаг, че връзката трябва да е мека. -s
може да се въведе и като -symbolic
.
По подразбиране ln
командата създава твърди връзки. Следващият аргумент е path to the file (or folder)
, че искате да свържете. (Тоест файлът или папката, за които искате да създадете пряк път.)
И последният аргумент е path to link
самият той (пряк път).
Как да създадете Symlink за файл - Примерна команда
ln -s /home/james/transactions.txt trans.txt
След като стартирате тази команда ще можете да получите достъп до /home/james/transactions.txt
с trans.txt
. Всяка промяна в trans.txt
също ще бъде отразена в оригиналния файл.
Имайте предвид, че тази команда по-горе ще създаде файла с връзки trans.txt
в текущата ви директория. Можете също така да създадете свързан файл в папка, свързващ това:
ln -s /home/james/transactions.txt my-stuffs/trans.txt
Трябва да има директория, която вече се нарича "my-stuffs" в текущата ви директория - ако не, командата ще изведе грешка.
Как да създадете Symlink за папка - Примерна команда
Подобно на горното, бихме използвали:
ln -s /home/james james
Това ще създаде папка със символни връзки, наречена "james", която ще съдържа съдържанието на /home/james
. Всички промени в тази свързана папка ще засегнат и оригиналната папка.
Как да премахнете символна връзка
Преди да искате да премахнете символна връзка, може да поискате да потвърдите, че файлът или папката е символна връзка, така че да не фалшифицирате файловете си.
Един от начините да направите това е:
ls -l
Изпълнението на тази команда на вашия терминал ще покаже свойствата на файла. В резултат, ако първият знак е малка буква L ('l'), това означава, че файлът / папката е символна връзка.
Също така ще видите стрелка (->) в края, показваща файла / папката, към която сочи връзката.
Има два метода за премахване на символна връзка:
Как да използвам Unlink за премахване на Symlink
Синтаксисът е:
unlink
Това изтрива символната връзка, ако процесът е успешен.
Дори ако символната връзка е под формата на папка, не добавяйте '/', защото Linux ще приеме, че е директория и unlink
не може да изтрива директории.
Как да използвам rm за премахване на Symlink
Както видяхме, символната връзка е просто друг файл или папка, сочеща към оригинален файл или папка. За да премахнете тази връзка, можете да премахнете свързания файл.
Следователно синтаксисът е:
rm
Например:
rm trans.txt rm james
Имайте предвид, че опитът да се направи rm james/
би довел до грешка, тъй като Linux ще приеме, че "james /" е директория, която ще изисква други опции като r
и f
. Но не това искаме. Символната връзка може да е папка, но ние се занимаваме само с името.
Основното предимство на rm
over unlink
е, че можете да премахвате няколко символни връзки наведнъж, както можете с файлове.
Как да намерите и изтриете счупени връзки
Счупените връзки възникват, когато файлът или папката, към която символната връзка сочи към промени в пътя или бъде изтрит.
Например, ако „транзакции.txt“ се премести от /home/james
към /home/james/personal
, връзката „транс.т.к.ст“ се прекъсва. Всеки опит за достъп до файла ще доведе до грешка „Няма такъв файл или директория“. Това е така, защото връзката няма собствено съдържание.
Когато откриете счупени връзки, можете лесно да изтриете файла. Лесен начин за намиране на счупени символни връзки е:
find /home/james -xtype l
Това ще изброи всички счупени символни връзки в james
директорията - от файлове до директории до поддиректории.
Преминаването на -delete
опцията ще ги изтрие така:
find /home/james -xtype l -delete
Обобщавайки
Символната връзка е интересна характеристика на Linux и UNIX системите.
Можете да създадете лесно достъпни символни връзки, които да се отнасят до файл или папка, които иначе не биха били удобни за достъп. С малко практика ще разберете как те работят на интуитивно ниво и те ще ви направят много по-ефективни в управлението на файлови системи.