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

9

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

Цель работы: знакомство с командной оболочкой ОС Linux.

Задачи:

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

  2. Разобраться со структурой каталогов в Unix, и способы навигации по каталогам. Изучить структуру домашнего каталога.

  3. Разобраться с базовыми командами работы с файлами в bash.

  4. Разобраться с атрибутами файлов/каталогов и командами смены прав и владельцев на файлы/каталоги.

  5. Разобраться с системой помощи по командам man.

  6. Освоить работу в оболочке Midnight Commander.

  7. Освоить текстовый редактор mcedit в Midnight Commander

  8. Освоить компилятор gcc.

  9. Изучить управляющие конструкции bash

  10. Разобраться с фильтрацией и конвейерной обработкой данных

  11. Научиться писать скрипты на bash

Практическая часть

  1. Написать скрипт, выводящий текущий каталог, номер текущего процесса (запускающего этот скрипт) и все параметры командной строки, с которым его запустили.

  2. Написать скрипт, выводящий имя и содержимое всех файлов с расширением sh в задаваемой пользователем директории. Содержимое файла выводится с помощью команды cat. Каталог задается с командной строки. Перед выводом содержимого каждого файла выводится полное имя файла (включая каталог) с помощью команды echo.

  3. Написать программу определения наличия файла в директории с вводимым пользователем именем. Имя искомого файла передается как параметр командной строки. В случае если файл присутствует в директории, выводится следующая информация о файле: доступен ли файл на чтение, запись, исполнение; иначе выводится сообщение «файл не найден».

  4. Написать программу, сравнивающую два числа. Числа вводятся пользователем с клавиатуры с помощью команды read. В результате сравнения выводится одно из следующих сообщений: «Первое число больше», «Второе число больше», «Числа равны».

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

  6. Написать простую тестовую программу на языке С и откомпилировать ее.

Теоретическая часть

1.

Для входа в систему введите после строчки “login:” имя пользователя i4” и пароль i4” после строчки password:”. Имейте в виду, что в Unix различаются большие и малые буквы. А символы Del и Backspace считаются как символы пароля. Поэтому, если нажали не тот символ, чтобы очистить строчку с паролем, нажмите Ctrl+U и введите пароль заново. Если вы корректно ввели имя пользователя и пароль, то вы попадете в ваш домашний каталог. Как правило, это каталог “/home/i4”.

Узнать ваше регистрационное имя можно командой whoami

Узнать о других зарегистрированных пользователях можно командой who

exit – выйти из текущей оболочки (bash, mc и т.п.)

logout – выйти из текущего сеанса (аналог Ctrl+D)

Alt+F1 … Alt+F6 – переключаться между виртуальными консолями

2.

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

/ - корень дерева.

|-bin, sbin - исполняемые файлы ОС

|-dev – файлы для доступа к устройствам

|-etc – конфигурационные файлы ОС и программ

|-lib – системные библиотеки

|-home – пользовательские каталоги

| |-user – домашний каталог пользователя user

|

|-mnt – каталоги для монтирования дисков

| |-floppy – каталог монтирования дисковода

| |-cdrom – каталог монтирования CD-ROM

|

|-tmp – временные файлы

|-usr – программы (аналог Program Files в Windows)

| |-bin, sbin – исполняемые файлы

| |-include – заголовочные файлы для компилятора С

|

|- var – содержит файлы и каталоги, которые часто меняются в размере

3.

Этот раздел представляет некоторые наиболее полезные базовые команды.

Обратите внимание, что опции обычно начинаются с ''-'' и во многих случаях несколько однобуквенных опций могут следовать за одним минусом, записанные слитно. Например, вместо использования ls -l -F, можно использовать ls -lF.

Вместо перечисления всех возможных опций каждой команды здесь даны только самые необходимые опции. Большинство из этих команд имеет большое число опций (большинство из которых никогда не используется). Вы можете для каждой команды с помощью man посмотреть все возможные опции.

Обратите также внимание на то, что многие из команд берут список файлов или каталогов, как аргументы, обозначенные как ''<file1> ... <fileN>''. Например, команда cp берет в качестве аргументов список файлов, которые надо копировать, за которыми следует имя целевого файла или каталога. При копировании нескольких файлов в качестве целевого может выступать только каталог.

cd

Изменяет текущий рабочий каталог. Синтаксис: cd <directory>; <directory> - каталог, в который перейти (''.'' ссылается на текущий каталог, ''..'' - на родительский каталог). Примеры:

cd .. переходит на уровень выше

cd . никуда не переходит, т.к. ''.'' – ссылка на текущ. каталог

cd переходит в домашний каталог (без параметров)

cd /bin переходит в каталог bin по абсолютному пути

cd bin переходит в подкаталог bin текущего каталога

cd ../foo переводит из текущего каталога в ../foo.

ls

Выдает информацию о файлах в каталоге. Синтаксис: ls <file1> ... <fileN> Где <file1> ... <fileN> имена файлов или каталогов, информацию про которые надо выдать. Наиболее часто используемые опции:

-F (для представления информации о типах файлов)

-l (выдает в длинном (``long'') формате информацию о размерах файлов, владельцах, правах доступа и т.д.). Пример: ls -lF /home/user выдаст содержимое каталога /home/user.

cp

Копирует файл(ы) в файл или каталог. Синтаксис: cp <file1> ... <fileN> <destination> Где <file1> ... <fileN> имена копируемых файлов, а <destination> файл или каталог, в который копируют. Пример: cp ../frog joe копирует файл ../frog в файл или каталог joe.

mv

Перемещает файл(ы) в другой файл или каталог. Эта команда не эквивалентна копированию с последующим уничтожением оригинала. Она может быть использована для переименования файлов, как команда RENAME из MS-DOS. Синтаксис: mv <file1> ... <fileN> <destination> Где <file1> ... <fileN> имена перемещаемых файлов, а <destination> имя файла или каталога, в который перемещают. Пример: mv ../frog joe перемещает файл ../frog в файл или каталог joe.

rm

Удаляет файлы. Имейте в виду, когда в UNIX удаляются файлы, они невосстановимы. Синтаксис: rm <file1> ... <fileN> Где <file1> ... <fileN> имена удаляемых файлов. Опции: -i потребует вашего подтверждения перед удалением файла. Пример: rm -i /home/user/joe /home/user/frog удаляет файлы joe и frog в каталоге /home/user.

mkdir

Создает новые каталоги. Синтаксис: mkdir <dir1> ... <dirN> Где <dir1> ... <dirN> создаваемые каталоги. Пример: mkdir /home/user/test создает каталог test в каталоге /home/user.

rmdir

Эта команда удаляет пустые каталоги. При использовании rmdir ваш текущий рабочий каталог должен находиться вне удаляемого каталога. Синтаксис: rmdir <dir1> ... <dirN> Где <dir1> ... <dirN> удаляемые каталоги. Пример: rmdir /home/larry/papers удаляет каталог /home/larry/papers, если он пустой.

more

Выдает содержимое названных файлов поэкранно. Синтаксис: more <file1> ... <fileN> Где <file1> ... <fileN> отображаемые файлы. Пример: more papers/history-final представляет файл papers/history-final.

cat

Используется для конкатенации файлов. cat используется также для выдачи полного содержания файла разом Синтаксис: cat <file1> ... <fileN> Где <file1> ... <fileN> выдаваемые файлы. Пример: cat letters/from-mdw выдает на дисплей файл letters/from-mdw.

echo

Просто повторяет аргументы. Синтаксис: echo <arg1> ... <argN> Где <arg1> ... <argN> "повторяемые" аргументы. Пример: echo "Hello world" выдает на экран ``Hello world''.

grep

выдает все строки в названном файле(лах), которые содержат заданный образец. Синтаксис: grep <pattern> <file1> ... <fileN> Где <pattern> - образец (представленный регулярным выражением) и <file1> ... <fileN> - файлы, в которых производится поиск. Пример: grep loomer /etc/hosts выдаст все строки, в которых файл /etc/hosts, содержит образец ``loomer''.

4.

Для каждого файла или каталога ОС задаёт права доступа, которые определяют кто и какие операции может проводить над данным файлом.

Имеется возможность ограничить доступ к файлу одним из трёх способов: предоставить право только пользователю, создавшему файл (владелец own); предоставить право доступа определённой группе (группа group){группу создаёт системный администратор}; предоставить право всем пользователям системы (прочие other).

Можно так же управлять типом доступа, например, только чтение (read), запись (write) и выполнение (execute).

Для каждой категории пользователей существует отдельный набор прав.

Для изменения прав доступа используется команда chmod.

Синтаксис команды имеет вид:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>

В строке прав доступа дефис обозначает отсутствие права доступа, право на чтение обозначается r, право на запись обозначается w, право на выполнение обозначается x.

Для добавления доступа используется +, а для отмены – знак -. Опции u, g, o, соответственно, указывают владельца, группу и прочие.

Несколько примеров допустимых команд:

chmod a+r stuff

Дает всем пользователям право читать файл stuff.

chmod +r stuff

То же самое, что и ранее (a - по умолчанию).

chmod og-x stuff

Лишает права на выполнение всех, кроме владельца.

chmod u+rwx stuff

Разрешает владельцу все (read, write и execute).

chmod o-rwx stuff

Запрещает все (read, write и execute) пользователям категории другие (other).

Кроме символьного способа установки применяют метод маски. Он позволяет устанавливать прав доступа на все три категории одновременно. Маска содержит три восьмеричные цифры на каждую группу пользователей. Эта маска преобразуется в двоичный девяти разрядный код, где 0-отмена доступа, 1-разрешение.

Например, chmod 644 имя_файла.

Изменять права доступа может только владелец, поэтому, если необходимо передать права, необходимо изменить пользователя командой

chown имя_польз имя_файла

5.

Узнать больше о командах можно с помощью утилиты man. Данная утилита выдает страницу Руководства по данной команде или ресурсу. (здесь "ресурс" - это любая системная утилита, которая не является командой, например библиотечная функция).

Синтаксис: man <command>

Где <command> имя команды или ресурса, о котором запрашивается информация. Пример: man ls - дает помощь по команде ls.

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

стрелки вверх/вниз, Page Up/Page Down – навигация по документу

/<шаблон> - поиск в тексте шаблона

n – поиск следующего совпадения шаблона

q – выход из man

6.

Midnight Commander является аналогом Far в Windows и Norton Commander в MS DOS. Назначение – облегчение отображения содержимого каталогов и операций работы с файлами. Запускается командой mc.

Функциональные клавиши почти такие же (F1 – помощь, F3 – просмотр содержимого файла, F4 – редактирование файла, F5 – копировать, F6-перенос/переименование, F8 – удалить файл/каталог, F10 – выйти из MC)

7.

Редактор MC почти такой же, как у FAR и NC. Те же функциональные клавиши. Освойте самостоятельно. Запуск редактора из mc: клавиша F4. Создание нового файла: Shift + F4. Запуск редактора с командной строки: mcedit <имя_файла>.

8.

Для компиляции программ на языке С/С++ используется компилятор gcc.

Синтаксис: gcc <опции> <файлы_с_исходниками>

Основные опции:

-o <имя_исполняемого_файла>

-I<каталог с файлами заголовков>

-L<каталог с файлами библиотек>

-l<подключаемая библиотека>

Как правило, стандартные файлы заголовков лежат в каталоге /usr/include.

Как правило, стандартные файлы библиотек лежат в каталоге /usr/lib.

К стандартным файлам в опциях компилятора пути указывать не надо.

Если не задана опция –о (имя выходного файла), то в случае успешной компиляции по умолчанию создается исполняемый файл a.out и ему устанавливается атрибут «исполняемый». Помните, что для запуска файла нужно установить атрибут «исполняемый».