Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Linux.doc
Скачиваний:
11
Добавлен:
07.11.2018
Размер:
176.64 Кб
Скачать

Создание жесткой ссылки: ln имя_файла имя_ссылки

Жесткая ссылка фактически второе название физического файла на диске, так как указывает на тот же, что и у исходного файла индексный дескриптор.

Создайте текстовый файл text в домашнем каталоге.

Создадим жесткую ссылку hltext на этот файл.

ln ~/text ~/hltext

С помощью ls -i (и с точкой) можно убедиться, что оба файла имеют один и тот же индексный дескриптор (см. числа перед именем файла).

ls -i ~/text ~/hltext

Создайте еще одну жесткую ссылку hltext2 на text.

Команда ls -l позволяет увидеть число жестких ссылок на файл (см. число во второй колонке, следующее за правами доступа на файл). В нашем случае у всех созданных файлов количество жестких ссылок будет 3. И все эти файлы будут иметь один и тот же индексный дескриптор.

Обращаясь к hltext или text, мы фактически обратимся к одному и тому же файлу. Поэтому, если мы меняем что-то в одном файле, эти же самые изменения произойдут в другом файле.

Используя команду cat >> допишите в hltext несколько строчек. Затем просмотрите содержимое файла text, произошли ли изменения в этом файле?

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

rm ~/text

Просмотрите домашний каталог. Удалилась только ссылка, имеющая имя text, hltext и hltext2 по прежнему существуют. Файл только тогда действительно удаляется, когда на него больше нет ссылок. Обычно файлы имеют только одну ссылку, так что команда rm действительно приведет к удалению файла. Однако, если файл имеет много ссылок, применение rm приведет только к удалению одной из них; для того, чтобы удалить файл, вы должны удалить все ссылки на этот файл.

Создание символьной ссылки:

ln -s имя_файла имя_ссылки

Позднее появились символьные связи (symbolic link). Например, для каталога нельзя создать жесткую ссылку, поэтому для того, чтобы обращаться к нему с другим именем, необходимо создать символьную ссылку. Символьная ссылка - это отдельный объект, поэтому удаление ссылки не оказывает никакого влияния на сам файл с данными, более того, файл с данными может быть удален, а ссылка на него будет существовать, и лишь при попытке вызвать по этой ссылке сам файл система выдаст сообщение об ошибке (как ярлыки в Windows).

Создадим символьную ссылку sltext на hltext.

ln -s ~/hltext ~/sltext

Используйте команду ls -i, чтобы убедиться, что эти два файла имеют различные файловые дескрипторы.

Обратите внимание на вывод команды ls -l, свойства файлов sltext и hltext отличаются, что еще раз доказывает, что это разные объекты файловой системы, кроме того при символьной ссылке всегда указывается файл, на который она ссылается.

Функционально жесткие ссылки и символьные ссылки похожи, но есть некоторые различия. Например, можно создать символьную ссылку на файл, который не существует, но жесткую ссылку на несуществующий файл создать нельзя. Кроме того, не допускается создание жестких ссылок на каталоги.

Ввод и вывод. Перенаправление ввода и вывода

Каждый процесс в Linux получает при старте три потока данных (специальные файлы). Первый открыт на чтение и является стандартным вводом процесса stdin (процесс из него берет данные, читает), по умолчанию это клавиатура. Второй поток открыт на запись и называется стандартным выводом процесса stdout (процесс в него записывает данные), по умолчанию это экран. Третий поток данных предназначен для вывода сообщений об ошибках и называется стандартный вывод ошибок.

Рассмотрит команду cat, которая берет данные с потока ввода и передает их на поток вывода, т.е. c stdin на stdout.

Введите команду cat. Поскольку не указаны потоки ввода и вывода, то считаются стандартными, т.е. ввод с клавиатуры, вывод на экран. Поэтому система будет ожидать ввода текста, а после сразу же выводить его на экран.

В команде cat имя_файла поток ввода указан из файла, поэтому данные будут читаться из файла и передаваться на стандартный поток вывода - экран.

Оболочка Shell дает возможность перенаправлять стандартные потоки, например, вывод делать не на экран, а в файл, чтобы данные были записаны и сохранены. Для этого используются символы > и < .

> - перенаправление стандартного вывода

< - перенаправление стандартного ввода

cat textfile -поток ввода не указан, следовательно ввод с клавиатуры, а поток вывода перенаправлен в файл. Таким образом данные с клавиатуры записываются в файл.

Просмотрите созданный файл.

Если файл уже существует, то командная оболочка запишет его заново. Чтобы сохранить информацию в этом файле и добавить новую с клавиатуры, используется символ >>.

Добавьте в созданный файлtextfile еще данные: cat >> textfile

Снова просмотрите его.

cat < textfile > textfile2 - эта команда читает данные из файла textfile и записывает их в файл textfile2.

Команда sort данные, полученные с входного потока сортирует и направляет на поток вывода.

Используем эту команду, для сортировки данных введенных с клавиатуры и записи в файл text1.

sort text1 Запишем построчно слова:

bananas

carrots

apples

Эти слова со стандартного входа обрабатываются sort и уже в алфавитном порядке поступают на поток вывода, который перенаправлен в файл text1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]