Третий отрывок из перевода первой части мануала.
В этом отрывке рассматриваются жесткие и символические ссылки, а также рассматривается удаление файлов и каталогов с помощью команд rm и rmdir.
Создание ссылок и удаление файлов
Жесткие ссылки
Мы уже упоминали термин «ссылка», когда говорили о взаимосвязи между каталогами (их именами) и инодами (индексными номерами, лежащими в основе файловой системы, которые мы не замечаем).В общем, в Linux есть два типа ссылок.
Тип, о котором мы говорили ранее, называется «жесткими ссылками».
Каждый индексный дескриптор может иметь произвольное количество жестких ссылок.
Когда последняя жесткая ссылка уничтожается и ни одна программа не удерживает файл открытым, Linux автоматически удаляет его.
Новые жесткие ссылки можно создать с помощью команды ln:
$ cd /tmp
$ touch firstlink
$ ln firstlink secondlink
$ ls -i firstlink secondlink
15782 firstlink 15782 secondlink
Как видите, жесткие ссылки работают на уровне индексного дескриптора, указывая на определенный файл.
В системах Linux существует несколько ограничений на жесткие ссылки.
В частности, вы можете создавать жесткие ссылки только на файлы, а не на каталоги.
Да да именно так; Хотя ".
" и «.
» — это жесткие ссылки на каталоги, генерируемые системой, вам (даже как пользователю «root») не разрешается создавать свои собственные.
Второе ограничение жестких ссылок заключается в том, что они не могут связать несколько файловых систем.
Это означает, что вы не сможете создать жесткую ссылку с /usr/бин/баш на /бин/баш и если ваши каталоги / И /usr расположены в разных файловых системах (разделах - прим.
пер.
).
Символические ссылки
На практике символические ссылки (или символические, иногда «симлинки» — с англ.) используются гораздо чаще, чем жёсткие.
Символические ссылки — это особый тип файлов, который ссылается на другие файлы по имени, а не напрямую по номеру индексного дескриптора.
Они не спасают файлы от удаления; если файл, на который указывает ссылка, исчезает, то символическая ссылка перестает работать и ломается.
Символические ссылки можно создать, передав параметр -s в ln. $ ln -s secondlink thirdlink
$ ls -l firstlink secondlink thirdlink
-rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19:08 firstlink
-rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19:08 secondlink
lrwxrwxrwx 1 agriffis agriffis 10 Dec 31 19:39 thirdlink -> secondlink
В выводе команды ls -l символические ссылки можно отличить тремя способами.
Во-первых, обратите внимание на символ l в первом столбце.
Во-вторых, размер символической ссылки равен количеству символов в ней ( вторая ссылка в нашем случае).
В-третьих, последний столбец вывода показывает, куда ведет ссылка, используя интуитивно понятное обозначение «-> ».
Симлинки в деталях
Символические ссылки обычно более гибкие, чем жесткие ссылки.Вы можете создавать символические ссылки на любой объект файловой системы, включая каталоги.
А благодаря тому, что их реализация основана на путях (а не inodes), вы можете совершенно свободно создавать символическую ссылку, указывающую на объект в другой файловой системе.
Однако этот факт также затрудняет их понимание.
Допустим, мы хотим создать ссылку в /tmp , что указывает на /usr/локальный/бен .
Мы должны ввести: $ ln -s /usr/local/bin bin1
$ ls -l bin1
lrwxrwxrwx 1 root root 14 Jan 1 15:42 bin1 -> /usr/local/bin
Или, альтернативно: $ ln -s .
/usr/local/bin bin2 $ ls -l bin2 lrwxrwxrwx 1 root root 16 Jan 1 15:43 bin2 -> .
/usr/local/bin
Как видите, обе символические ссылки указывают на один и тот же каталог.
Однако если наша вторая символическая ссылка когда-либо будет перенесена в другой каталог, она может сломаться из-за относительности пути: $ ls -l bin2
lrwxrwxrwx 1 root root 16 Jan 1 15:43 bin2 -> .
/usr/local/bin
$ mkdir mynewdir
$ mv bin2 mynewdir
$ cd mynewdir
$ cd bin2
bash: cd: bin2: No such file or directory
Потому что каталоги /tmp/usr/локальный/бен не существует, мы больше не можем перейти в бункер2 ; другими словами, бункер2 теперь сломан.
По этой причине иногда полезно избегать создания ссылок с информацией об относительном пути.
Однако во многих случаях относительные символические ссылки чрезвычайно полезны.
Рассмотрим пример, в котором мы хотим создать альтернативное имя для программы в /usr/бен : # ls -l /usr/bin/keychain
-rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/bin/keychain
От имени суперпользователя нам нужен короткий синоним для Брелок , такой как кс .
В этом примере у нас есть root-доступ, о чем свидетельствует изменение приветствия bash на «#».
Нам нужен root-доступ, потому что обычные пользователи не имеют прав на создание файлов в /usr/бен .
От имени суперпользователя мы можем создать альтернативное имя для Брелок следующим образом: # cd /usr/bin
# ln -s /usr/bin/keychain kc
# ls -l keychain
-rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/bin/keychain
# ls -l kc
lrwxrwxrwx 1 root root 17 Mar 27 17:44 kc -> /usr/bin/keychain
В этом примере мы создали символическую ссылку kc, которая указывает на файл.
/usr/bin/брелок .
Это решение пока будет работать, но создаст проблему, если мы решим переместить оба файла.
/usr/bin/брелок И /usr/bin/kc В /usr/локальный/бен : # mv /usr/bin/keychain /usr/bin/kc /usr/local/bin
# ls -l /usr/local/bin/keychain
-rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/bin/keychain
# ls -l /usr/local/bin/kc
lrwxrwxrwx 1 root root 17 Mar 27 17:44 kc -> /usr/bin/keychain
Поскольку мы использовали абсолютный путь для символической ссылки кс , то она еще ссылается на /usr/bin/брелок , которого не существует с тех пор, как мы переехали /usr/bin/брелок В /usr/локальный/бен .
Это привело к тому, что символическая ссылка kc теперь не работает. Как относительные, так и абсолютные пути в символических ссылках имеют свои преимущества, и в зависимости от вашей задачи вам следует использовать соответствующий тип пути.
Часто как относительные, так и абсолютные пути работают одинаково хорошо.
Пример ниже будет работать даже после перемещения обоих файлов: # cd /usr/bin
# ln -s keychain kc
# ls -l kc
lrwxrwxrwx 1 root root 8 Jan 5 12:40 kc -> keychain
# mv keychain kc /usr/local/bin
# ls -l /usr/local/bin/keychain
-rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/bin/keychain
# ls -l /usr/local/bin/kc
lrwxrwxrwx 1 root root 17 Mar 27 17:44 kc -> keychain
Теперь мы можем запустить программу Брелок печатание /usr/local/bin/kc .
/usr/local/bin/kc указывает на программу Брелок в том же каталоге, где он находится кс .
РМ
Итак, мы умеем пользоваться cp, mv и ln, пришло время узнать, как можно удалять объекты из файловой системы.
Обычно это делается с помощью команды rm. Чтобы удалить файлы, просто укажите их в командной строке: $ cd /tmp
$ touch file1 file2
$ ls -l file1 file2
-rw-r--r-- 1 root root 0 Jan 1 16:41 file1
-rw-r--r-- 1 root root 0 Jan 1 16:41 file2
$ rm file1 file2
$ ls -l file1 file2
ls: file1: No such file or directory
ls: file2: No such file or directory
Имейте в виду, что в Linux после удаления файла он обычно исчезает на века.
Поэтому многие начинающие системные администраторы при удалении файлов используют опцию -i. Опция -i указывает rm удалять файлы в интерактивном режиме — это означает запрос перед удалением любого файла.
Например: $ rm -i file1 file2
rm: remove regular empty file `file1'? y
rm: remove regular empty file `file2'? y
В приведенном выше примере команда rm запрашивает подтверждение удаления каждого из указанных файлов.
Если я соглашался, мне приходилось набирать «y» и дважды нажимать Enter. Если бы я ввел «n», файл остался бы нетронутым.
Или, если я сделал что-то не так, я мог нажать Control-C и сбросить всю команду rm -i, прежде чем она нанесет какой-либо ущерб моей системе.
Если вы все еще учитесь использовать команду rm, возможно, будет полезно добавить в файл следующую строку с помощью вашего любимого текстового редактора: ~/.
bashrc , а затем выйдите из системы и войдите снова.
После этого всякий раз, когда вы вводите rm, оболочка bash автоматически преобразует его в команду rm -i. Таким образом, rm всегда будет работать в интерактивном режиме: alias rm="rm -i"
rmdir
Чтобы удалить каталоги, у вас есть два варианта.
Вы можете удалить все объекты внутри каталога, а затем использовать rmdir для удаления самого каталога: $ mkdir mydir
$ touch mydir/file1
$ rm mydir/file1
$ rmdir mydir
Этот метод широко известен как «метод удаления каталогов для лохов».
Все настоящие пацаны и гуру админа, убившие пользователя в этом вопросе, используют гораздо более удобную команду rm -rf, описанную ниже.
Лучший способ удалить каталог — использовать рекурсивные параметры команды rm, чтобы указать ей удалить указанный каталог, а также объекты, содержащиеся в нем: $ rm -rf mydir
Обычно rm -rf является наиболее предпочтительным методом удаления дерева каталогов.
Будьте очень осторожны при использовании rm -rf, так как его сила может быть использована обеими сторонами: добром и злом.
"=" Продолжение.
Об авторах
Дэниел Роббинс
Дэниел Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниел проживает в Нью-Мексико со своей женой Мэри и двумя энергичными дочерьми.Он также является основателем и главой Funtoo написал множество технических статей для IBM DeveloperWorks , Службы разработчиков Intel и журнал пользователей C/C++.
Крис Хаузер
Крис Хаузер является сторонником UNIX с 1994 года, когда он присоединился к административной команде Университета Тейлора (Индиана, США), где получил степень бакалавра в области компьютерных наук и математики.С тех пор он работал в различных областях, включая веб-приложения, редактирование видео, драйверы UNIX и криптографическую безопасность.
В настоящее время работает в Sentry Data Systems. Крис также участвовал во многих бесплатных проектах, таких как Gentoo Linux и Clojure, и был соавтором книги.
Арон Гриффис
Айрон Гриффис живет в Бостоне, где последние десять лет он работал в Hewlett-Packard над такими проектами, как сетевые драйверы UNIX для Tru64, сертификация безопасности Linux, виртуализация Xen и KVM, а в последнее время — над платформой.Когда он не занимается программированием, Айрон любит думать о проблемах программирования, катаясь на велосипеде, жонглируя битами или болеея за профессиональную бейсбольную команду Boston Red Sox. Теги: #linux #console #настройка Linux #bash #для начинающих #для чайников #ln #rm #rmdir #symlinks #symlinks #hardlinks #symlinks
-
Факап Iap, Выполненный Google
19 Oct, 24 -
Кухонные Тайны И Тайны Холодильника
19 Oct, 24 -
Новый Онлайн-Сервис (Интернет-Блокнот)
19 Oct, 24 -
Интернет-Радио
19 Oct, 24 -
Твердотельный Накопитель Raid Уровня 0
19 Oct, 24 -
«Би-2» Взял Свое Из Каталога Fair
19 Oct, 24