Файл: Лабораторная Linux №1.doc

ВУЗ: Не указан

Категория: Методичка

Дисциплина: Операционные системы

Добавлен: 20.10.2018

Просмотров: 2578

Скачиваний: 20

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

Лабораторная работа №1

Ознакомление с рабочим столом ОС Linux и командным интерпретатором BASH

Теоретические сведения

Операционная система Linux

Рабочие столы Gnome и KDE

Файловая структура ОС Linux

Файловая структура ОС Linux – иерархическая структура каталогов, в которой размещена информация о файлах всей операционной системы. Дерево каталогов ОС Linux имеет один общийкорневой каталог для всей системы, обозначаемый знаком "слеш" (/) и включающий основные системные каталоги bin, boot, dev, etc, lib, lost+found, mnt, proc, sbin, pub, opt, tmp, var, usr. В версиях ядра ОС Linux могут быть небольшие различия в составе входящих каталогов.

Командный интерпретатор

Права доступа к файлам и каталогам

Команды командного интерпретатора BASH и специальные символы

Программные каналы, перенаправление входных и выходных потоков данных

Программа-оболочка Midnight Commander

Текстовые редакторы

Компилятор gcc

Мультифайловое программирование

Настройка командного интерпретатора с помощью специальных переменных

Команда сортировки sort

Контрольное задание

Лабораторное задание и порядок выполнения работы

Требования к отчету

Файловая структура ОС Linux

Файловая структура ОС Linux – иерархическая структура каталогов, в которой размещена информация о файлах всей операционной системы. Дерево каталогов ОС Linux имеет один общийкорневой каталог для всей системы, обозначаемый знаком "слеш" (/) и включающий основные системные каталоги bin, boot, dev, etc, lib, lost+found, mnt, proc, sbin, pub, opt, tmp, var, usr. В версиях ядра ОС Linux могут быть небольшие различия в составе входящих каталогов.

Kаталог bin содержит пользовательские команды и утилиты (примеры: cat, ls , fgrep, mkdir, zcat); dev используется для специальных файлов, представляющих устройства; etc служит для хранения команд администратора системы; lib включает важные совместно используемые библиотеки и модули ядра; lost+found необходим дя быстрого восстановления системы после сбоев; media – для монтирования компакт-дисков и flash-накопителей; mnt - содержит каталоги для монтирования новых файловых систем и временных накопителей; proc - каталог процессов; opt - дополнительные приложения (например, GNOME, если установлено KDE); sbin содержит системные команды, включая команды привилегированного пользователя; tmp используется для хранения временных файлов; usr включает исходные коды, файлы и команды системы, документацию, содержащую пользовательскую информацию, новые программы, устанавливаемые по умолчанию; var - каталог, предназначенный для быстро изменяющихся файлов, в частности, файлов почтовых ящиков, системных журналов, протоколов приложений, очереей печати.

В свою очередь эти каталоги могут содержать каталоги следующего уровня. Каталог usr включает подкаталоги: bin -хранение дополнительных команд; games - игры; include - хранение фрагментов системных программ; lib - хранение дополнительных библиотек.

Полные имена файлов, как и в других ОС включают имена каталогов на пути к ним: /usr/bin, /usr/games, /usr/include, /usr/lib. Формальным признаком полного имени в ОС Linux и Unix является то, что оно начинается со знака "слэш", обозначаемого знаком (/).

В качестве имени файла, как правило, может использоваться любая последовательность из букв, цифр и знаков подчеркиваний длиной до 255 символов. Могут применяться и другие символы, однако использование этих символов в имени требует специального экранирования. Старые файловые системы поддерживают длину имени файла четырнадцать символов (этого ограничения желательно придерживаться для переносимости файлов), однако в большинстве систем допускаются более длинные имена - до 256 символов. В общем случае расширения в именах файлов не являются обязательными. В ОС UNIX и ОС Linux прописные и строчные буквы воспринимаются как различные, например, Ivan, IVAN и ivan - это три различных имени.

ОС UNIX и ОС Linux работают с файловой системой, а не с устройствами хранения информации, как это реализовано в ОС Widows и многих других ОС. Прежде чем считать информацию с внешнего устройства, его нужно смонтировать специальной командой mount, после чего подсоединенные файлы и каталоги становятся элементами файловой системы, и пользователь может обращаться к любым доступным файлам и каталогам, при этом в имени никак не отражается устройство, на котором файл (каталог) находится или создается.


Отдельные части файловой системы могут находиться на различных физических устройствах, например, на нескольких жестких и гибких дисках (или в различных частях одного диска). Соответствующие фрагменты (поддеревья файловой системы) монтируются в единую файловую систему также командой mount.

В ОС UNIX и ОС Linux имеется примерно 200 базовых команд - инструментальных средств, позволяющих пользователю решать многие проблемы, не прибегая к программированию на языках типа Си или использованию специальных пакетов.

Основные типы файловых систем, поддерживаемые ОС Linux: ext2, ext3, swap, ReiserFS, JFS.

Командный интерпретатор

Командные интерпретаторы используют интерфейс командной строки. В начале строки появляется приглашение к работе, после которого можно вводить команду (рис.1).

Большинство команд OC UNIX и OC Linux, выполняемых в командном интерпретаторе, можно выполнить из специальных утилит графического интерфейса, но не все, некоторые гораздо быстрее выполнить из КИ с заданием опций и параметров.

Структура команды командного интерпретатора следующая:

$ имя_команды опции параметры

Появление приглашения к работе со знаком $ в конце приглашенияили знаком # зависит от того, с какими правами доступа зарегистрирован работающий в системе. Знак $ является приглашением к работе для пользователя, # - приглашение для системного администратора. Опция - однобуквенный код, перед которым стоит дефис, уточняет действия команды. После дефиса может быть указано несколько опций. Все последующие указываются без пробелов. Дефис обозначает, что после него и до знака пробела указаны опции. Для каждой конкретной команды опции и параметры могут быть обязательными или нет. Параметр - дополнительные данные для выполнения команды, часто это имя файла или каталога. Указанный порядок расположения компонентов структуры команды КИ обязателен для любых командных интерпретаторов.

Пример 1. Команда ls выводит на экран протокол, состоящий из файлов текущего каталога. Опция l команды ls дает подробную информацию о файле. Чтобы вывести на экран подробную информацию обо всех файлах текущего каталога, следует набрать в командной строке:

$ ls -l

На экране появится протокол, фрагмент которого приведен ниже:

drwxrwxr-x 2 root 2048 nov 3 12: 11 bin

drwxrwxr-x 2 root 1024 jan 9 11:55 dev

drw-r--r-- 3 root 4096 nov 17 12: 01 include

drwxr-xr-x 7 root 480 nov 17 12:30 lib

Пример 2. Вывести подробную информацию об одном файле, например, о файле file1, находящемся в текущем каталоге:

$ ls -l file1

На экране появится протокол, состоящий из одной строки из одной строки, с подробной информацией о свойствах файла:

drwxrwxr-x 2 ivan 8192 jan 9 11:55 file1

Пример 3. Вывести подробную информацию о файлах каталога usr, пользователь при этом находится в корневом каталоге (рис.2):

$ ls -l /usr

Рис.2. Просмотр содержимого текущего каталога usr командой ls с опцией l

Права доступа к файлам и каталогам


Каждому файлу или каталогу соответствует строка информации при выводе команды lsl, как показано в примерах 1 и 2. Первый символ строки означает тип файла (d - каталог, знак "дефис"(-) - обычный файл). В каждой строке символы со второго по десятый описывают права доступа к файлам и каталогам, опеделенные для трех категорий пользователей: владельцев, членов группы, прочих пользователей. Каждая категория пользователей может иметь право на чтение, запись, выполнение файлов. В примере 2 дан потокол, в котором первая триада - права владельца, которая разрешает: r - чтение каталога, w - запись в него и х - выполнение, для файлов типа d (каталогов) w означает разрешение создавать в каталоге файлы и удалять их из него; вторая триада - rwx , предназначена членам группы, в которую входит владелец файла, для нее разрешены все три операции. Последняя триада r-x отражает права доступа прочих пользователей, которым разрешено только читать и выполнять файл, запрещено записывать в файл. Далее следует цифра 2, указывающая число cссылок на файл, что означает наличие в системе еще одного имени-ссылки, связанного с этим файлом; ivan - имя владельца, 8192 - число символов в файле, дата и время создания или последней модификации файла (9 января в 11 часов 55 минут); file1 - имя файла.

Команды командного интерпретатора BASH
и специальные символы

Язык команд КИ ОС UNIX и ОС Linux часто называют shell, что в переводе с английского означает "скорлупа". Ниже приведены часто используемые команды.

Справочник команд терминала man и общие команды. Команда man является справочником и содержит описание команд с их опциями и параметрами, так же приведены примеры использования команд. Если набрать в командной строке командного интерпретатора:

$ man

то откроется весь справочник, повключающий команды интерпретатора.

Если указать имя команды, то можно получить справочную информацию об указанной команде:

$ man <имя команды>

Например, информацию о командном интерпретаторе BASH можно посмотреть следующим образом: $ man bash Информацию о команде даты и времени можно посмотреть так: $ man date Информацию о дате и времени можно посмотреть так: $ date Результатом будет строка с указанием дня недели, месяца, года, даты и времени.

При задании команды в КИ можно указывать одну опцию или несколько. Например, чтобы показать подробную информацию обо всех файлах текущего каталога, включая скрытые файлы (опция а), в командной строке вводится: $ ls -alF

Прописные и строчные буквы различаются и при указании опций. Таким образом, F и f являются разными опциями. Если опций несколько, то они пишутся подряд без пробелов, начиная со знака "дефис". Выполнение команды начинается после нажатия на клавишу [Enter]. Если команда запущена на выполнение ошибочно, отменить ее действие можно, используя нажатие клавиши [Ctrl+c] или [Del]. Если команда с ее опциями и параметрами оказалась длиннее строки, то для продолжения команды в следующей строке нужно ввести символ "обратный слеш" (\), потом [Enter], далее продолжать набор команды в следующей строке. Вместо символа "обратный слеш" может использоваться другой символ, если его задать в переменной командного интерпретатора, что описано ниже.


Команда history. Командная строка представляет собой текстовый буфер ввода с возможностью редактирования. Если набрать команду с необходимыми опциями и параметрами до нажатия клавиши [Enter], текст можно отредактировать. Используя клавиши [Backspace] или [Del] можно удалить ненужные символы, а, включив режим вставки (клавиша [Insert]), можно вставить нужные символы, набрав их на клавиатуре. Перемещаться по тексту можно, используя клавиши стрелок влево и вправо (назад и вперед соответственно).

Существует архив команд текущего сеанса работы, находящийся в файле history_list, благодаря которому можно повторять предыдущие команды. Используя клавишу , следует найти нужную команду из ранее выполненных в данном сеансе командного интерпретатора, отредактировать ее, если нужно, и, нажав клавишу [Enter], выполнить.

Нажимая несколько раз клавишу , находим нужную команду. Если нужно вернуться по этому списку команд, нажимать клавишу.

Список последних выполненных команд с их номерами можно просмотреть так же, воспользовавшись командой-утилитой:

$ history

Выполнить команду из списка историй можно так: $ !№

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

Снятие блокировки (!). Эта команда используется, чтобы разрешить запись в уже существующий файл. Обычно по умолчанию установлена проверка на наличие существующих файлов и выдача на экран предупреждающего сообщения, но иногда файлы нужно перезаписывать в уже существующие. Тогда используется снятие блокировки. Например, файл f10 предположительно уже существует, но в него нужно записать содержиое файла file10, тогда удобна следующая запись:

$ cat file10 >! f10

Удобство более ощутимо, когда перезаписывается много файлов, поскольку просматривать, есть ли предыдущие версии, и потом удалять их дольше, чем поставить знак ! в вышеуказанной команде.

Путевое имя ‑ это полное имя файла с учетом каталогов, начиная с домашней директории пользователя, включает последовательно имена всех каталогов, ведущих к текущему. Иначе имя называется относительным. При входе в систему пользователь оказывается в определенной заранее вершине дерева файловой системы. Обычно это /home или /home/имя_пользователя, иногда используется каталог /usr. Путевое имя для суперпользователя root - путь от корневого каталога в текущий каталог. Команда pwd сообщает местоположение пользователя в файловой системе. С ее помощью выводится полное имя текущего каталога.

$ pwd

Команды создания и удаления каталогов. Команда предназначена для создания каталогов в любой вершине файловой структуры при наличии прав доступа и имеет следующий синтаксис:


$ mkdir <имена создаваемых каталогов>

Например, для создания в текущем каталоге двух новых каталогов с относительными именами k1 и k2, нужно выполнить команду:

$ mkdir k1 k2

Для удаления пустых (не содержащих файлов и каталогов) каталогов используется команда rmdir, имеющая структуру:

$ rmdir <имена удаляемых каталогов>

Удалить обычный файл можно командой:

$ rm <имена удаляемых файлов>

Чтобы просмотреть содержимое рабочего (текущего) каталога со всеми его подкаталогами (рис.3): $ ls –R

Рис.3. Просмотр содержимого текущего каталога. Рабочий стол GNOME

Выводится писок файлов и подкаталогов в текущем каталоге с указанием имен подкаталогов, после их имени ставится знак "слеш" (/).

Перемещение по каталогам. Чтобы перейти в другой каталог, используется команда сd:

$ cd <каталог>

Этот символ можно также использовать при копировании или перемещении, указав каталог на один уровень выше, чем текущий.

Пример 1. Находясь в корневом каталоге, можно перейти в каталог /usr/lib, набрав команду:

$ cd /usr/lib

Указано полное имя каталога /usr/lib. Если пользователь находится в каталоге usr, то указывается относительное имя: $ cd lib

Пример 2. Команда cd без параметров осуществит переход в начальный каталог пользователя, т.е. в каталог, в котором пользователь оказывается при входе в систему: $ cd

Копирование файлов и каталогов выполняется командой cp, причем последнее указанное в строке КИ имя считается именем каталога, в который нужно скопировать файлы. Общая структура команды:

$ cp <полное_имя_файла/имя_каталога,_которые_копируются> <полное_имя_файла/имя_каталога,_куда_копируется>

Команда cp имеет следующие основные опции:

-r - используется при копировании подкаталога из одного каталога в другой. Копирование выполняется со всеми подкаталогами, входящими в копируемый подкаталог.

-i - проверка, существует ли уже файл (каталог) с таким именем, в месте, указанном для копирования.

Полное имя можно не указывать, если действия выполняются в текущем каталоге, что в общем виде представлено структурой:

$ cp <имя_файла> имя_каталога/новое_имя_файла>

Пример 3. Копирование файла file1 из каталога dx в каталог user в файл file2, каталоги dx и user лежат в текущем каталоге:

$ cp dx/file1 user/file2 ,

Пример 4. $ cp file1_katal/file11

Здесь katal - каталог, находящийся в текущем каталоге. Можно использовать и такую форму записи, но тогда имя нового файла в каталоге katal будет как и исходное, file1:

$ cp file1 katal

Пример 5. Можно копировать несколько файлов в каталог:

$ cp <имена_файлов> <имя_каталога>,

$ cp file1 file2 katal

Чтобы скопировать все файлы текущего каталога в указанный каталог katal2 (сохранив также старые файлы) для указания нескольких символов используется знак “*”, следует выполнить:

$ cp *.* katal2

Пример 6. Чтобы скопировать все файлы с заданным расширением:

$ cp *.cpp katal3

Перемещение файлов и каталогов выполняется командой mv. Синтаксис команды аналогичен синтаксису команды cp. Общая структура команды: