Команда ln в операційних системах, розроблених на основі ядра Linux, використовується для створення символічних і жорстких посилань на файли. Від користувача вимагається дотримання синтаксису утиліти, правильне вказівку опцій і розташування файлів. Сьогодні ми б хотіли розповісти не тільки про дію цієї команди, але і детально описати два види згаданих вище лінків, оскільки вони кардинально різні і застосовні в певних ситуаціях. Звичайно, не обійдеться і без прикладів інструменту ln.
зміст
Більшість користувачів комп'ютерів хоча б раз стикалися з роботою в платформі Windows. Там покажчиками на файли виступають ярлики. Після звернення до такого об'єкта відбувається автоматичне перенаправлення на оригінальний файл. У Linux це виконують спеціальні посилання, що створюються користувачем вручну. Було розроблено два типи таких елементів - символічні і жорсткі. Вони мають значні відмінності, тому варто розглянути кожен тип більш детально.
Символічна посилання - файл певного типу, який виступає в ролі линка на інший об'єкт - файл будь-якого формату або певний каталог. Зазвичай такі об'єкти називають цільовими. Іноді ви можете помітити, що такий тип посилань називають soft links або sym-link. Такий елемент не містить в собі даних мети, а лише виступає покажчиком, тобто є повною копією ярлика з Віндовс. Усередині symbolic link знаходиться тільки шлях. Ніхто не забороняє вам створити безліч подібних лінків з різними іменами, але одним і тим же цільовим об'єктом. Зв'язок між двома складовими називається м'якою, оскільки при видаленні посилання цільової файл ніяким чином не страждає. Однак при видаленні файлу посилання стає неробочий. Вона зберігається на диску, але вказаний в ній шлях веде вже до неіснуючого об'єкту.
На зображенні вище ви бачите схематичне уявлення роботи такого ланцюга. Посилання звертається до файлу, а той вже надає доступ до зберігаються в ньому даних. Важливо розуміти, що це посилання можна переміщати в будь-яке місце на комп'ютері, від цього не залежить її працездатність, адже вона буде переходити по тому ж шляху, який був зазначений при створенні.
З жорсткими посиланнями справи йдуть трохи складніше. Вони, по суті, синоніми файлу, але при цьому не його копії. При створенні жорсткої посилання буде згенерований ще один покажчик на елемент. У файлової системи такі об'єкти визначаються як ще один файл, тому при створенні їх в одній і тій же директорії з метою не можна вказувати однакову з нею ім'я. Всі жорсткі лінки на файл повинні перебувати в одній ФС і не можуть бути присвоєні каталогу або неіснуючого елементу. На скріншоті нижче ви бачите схематичне взаємодія такого ланцюга.
Важливо відзначити, що лінк буде мати точно такий же ідентифікатор (inode), як і цільової файл. Як відомо, у всіх об'єктів свої унікальні номери. Через це між ними буде відмінність тільки в іменах. Всі права, власник і дати змін зберігаються. Можна сказати, що жорстка посилання - ще одна назва для об'єкта. При видаленні цільового файлу лінк все одно буде зберігати інформацію, яка перебувала в ньому, оскільки на вміст залишається ще один покажчик.
Перейдемо від теорії до практики і поговоримо про головну тему статті - команді ln. Як ви вже знаєте, вона використовується для створення двох типів посилань. Однак варто зауважити, що деякі файлові менеджери мають вбудовану функцію по додаванню символічного линка. Для цього потрібно клацнути ПКМ по файлу або папці і вибрати пункт «Створити посилання», «Create Link» або «Make Link». Тоді soft link буде поміщений в цей же каталог, а ви можете перемістити його в будь-яке інше місце на накопичувачі.
Для початку варто згадати додаткові дії, які часто стають корисними при здійсненні різних дій з файлами. Важливо знати шлях до цільового об'єкту або вміти його визначити. Що стосується визначення, відбувається воно так:
/home/user/folder/file_name
. cd /home/user/folder
. Така дія дозволить вказувати тільки відносний шлях до об'єкта. Розглянемо утиліту ln в дії. Почнемо зі створення символічного посилання на файл. Для цього скористайтеся стандартною консоллю і виконайте такі дії:
ln -s file slink
, де file - ім'я або повний шлях до файлу або директорії, а slink - назва посилання. Вона буде поміщена в той же каталог, де і знаходиться цільовий об'єкт. ls -li
, щоб побачити інформацію з приводу знаходяться в каталозі об'єктів. Символічна посилання виділена окремим кольором, а через -> вказана її мета. Як бачите, файл і лінк мають різні ідентифікатори і права. rm
. Вище ви могли помітити, що для перегляду вмісту папок використовувалася стандартна команда ls. Якщо є бажання ознайомитися з її дією більш детально, зверніть увагу на наш окремий матеріал нижче.
Читайте також: Приклади команди ls в Linux
Створення жорсткої посилання багато в чому схоже з тим типом, який ми розглянули вище. Єдина відмінність полягає у відсутності опції -s. Тоді вся процедура буде мати приблизно такий вигляд:
ln file hlink
. ls -li
, щоб переконатися в наявності зв'язки жорсткого линка і файлу. Як бачите, вони мають однаковий ідентифікатор, права і інші метадані. Різні лише імена. cat
, щоб переглянути вміст жорсткого линка. В консолі відобразиться та ж інформація, що спочатку зберігалася в вихідному файлі. Інформація буде доступна до тих пір, поки не втечуть всі покажчики на неї (вихідний файл і все жорсткі посилання). Команда cat, яка використовується в останньому пункті, відповідає за перегляд вмісту файлів. Детальний опис всіх її можливостей шукайте в статті далі.
Читайте також: Приклади команди cat в Linux
Вище ви були ознайомлені не тільки зі стандартною командою ln, а й дізналися про двох типах доступних посилань на об'єкти в Linux. Звичайно, частіше бувають задіяні символічні лінки, але жорсткі теж іноді стають корисними. Про інших популярних командах в Лінукс можете дізнатися з нашого окремого матеріалу.
Читайте також: Часто використовувані команди в «Терміналі» Linux