Цикл довузовской подготовки кафедры ЭФУ

ЛАБОРАТОРНЫЙ ПРАКТИКУМ:
"КОМАНДНАЯ ОБОЛОЧКА UNIX"

СТРУКТУРА ПРАКТИКУМА

ЗАДАНИЯ ПРАКТИКУМА

ЗАДАНИЕ №1

ЗАДАНИЕ №2

ЗАДАНИЕ №3

ЗАДАНИЕ №4

ЗАДАНИЕ №5

ВВЕДЕНИЕ

НЕОБХОДИМАЯ ИНФОРМАЦИЯ

Host Name рабочего сервера

Приглашение командной строки

Редактирование командной строки

Стандартные обозначения

Используемые команды

1. СЕАНС РАБОТЫ В UNIX-СИСТЕМЕ

1. Терминал и командная строка

2. Логины, пароли и доступ к серверу

3. Вход в систему/завершение работы

2.ФАЙЛОВАЯ СИСТЕМА UNIX

1. Файлы и каталоги. Абсолютный (полный) путь

2. Домашний и текущий каталог. Относительный путь

3. Просмотр структуры каталогов и файлов

4. Создание и удаление каталогов и файлов

5. Пример построения дерева каталогов

6. Копирование и перемещение файлов

3.ЧТО ДОЛЖЕН ЗНАТЬ НЕ ТОЛЬКО СИСАДМИН

1. Учетные записи и пользователи

2. Задачи и процессы в системе

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

4. Ввод/вывод и конвейеры

5. Поиск и обработка текстовых данных

4.ФАЙЛОВЫЙ МЕНЕДЖЕР MIDNIGHT COMMANDER

1. Внешний вид, начало и завершение работы

2. Работа с каталогами и файлами

3.4. Ввод/вывод и конвейеры


Неотъемлемой частью любой компьютерной программы, а тем более операционной системы является система ввода/вывода команд и данных. В UNIX стандартные процесс (команды и утилиты) работают со стандартными каналами обмена информацией:


stdin (standard input)   - стандартный ввод;
stdout (standard output) - стандартный вывод;
stderr (standard error)  - стандартный вывод ошибок.
		

В рамках данного практикума будут рассмотрены только два из них: stdin и stdout. Первый связан с клавиатурой, а второй с экраном монитора. Иллюстрацией может служить практически любая стандартная команда UNIX – команда вводится с клавиатуры, а результат ее работы выводится на экран.

Возникает вопрос: откуда, кроме клавиатуры можно что-то вводить и куда, кроме экрана что-то выводить. Ответ на оба эти вопроса один: эти «откуда» и «куда» есть не что иное, как файлы. Как правило, это текстовые файлы. Каналы stdin и stdout, по сути, являются текстовыми файлами для ввода/вывода, по умолчанию. И это не удивительно, поскольку в UNIX по большому счету нет ничего кроме учетных записей, процессов и файлов.

То, что вводится с клавиатуры, попадает в специализированный файл stdin, а на экран выводится содержимое файла stdout. Такая организация ввода/вывода позволяет легко заменять одни файлы другими. Для этого используются символы перенаправления:


>  (знак «больше»)   – перенаправление из stdout в файл);
<  (знак «меньше»)   - перенаправление в stdin из файла;
>>(двойное «больше») – недеструктивное перенаправление stdout.
		

Недеструктивное перенаправление вывода позволяет добавлять информацию в конец файла (Пример 3.12), тогда как обычное (по сути деструктивное) перенаправление уничтожает информацию и создает новый пустой файл. Таким образом, использование недеструктивного вывода позволяет, например, объединять текст нескольких файлов в одном без использования текстового редактора.

В предыдущих параграфах уже демонстрировалось перенаправление стандартного вывода stdout в файл, при создании текстовых файлов командой cat. Для перенаправления потока данных из файла в stdin можно также использовать команду cat (продолжается работа с текущей директорией: ~ /hacker/crack/question/thieve). Поток stdin команды cat связан с клавиатурой, однако через перенаправление его можно связать с файлом (Пример 3.14). Поток stdout команды cat связан с экраном монитора, поэтому текст из файла выводится на экран.


Пример 3.14. Ассоциация файла с потоком stdin команды cat

v100-1@beta:~/hacker/crack/question/thieve> cat < hacker1.txt
Если в сервер вашей фирмы
Вдруг забрался злобный хакер
v100-1@beta:~/hacker/crack/question/thieve> 
		

Связь команд UNIX через потоки данных стандартного ввода/вывода позволяет осуществлять состыковку команд через файлы stdin и stdout.

В качестве учебной задачи предлагается выполнить сортировку файлов ~ /hacker/crack/question/thieve в обратном алфавитном порядке (от z до a). Прежде всего, необходимо проверить наличие файлов в каталоге, а затем получить список файлов, перенаправив stdout команды ls в новый текстовый файл, пусть это будет текстовый файл с именем file-list (Пример 3.15). Просмотр текстового файла, как обычно, командой cat.


Пример 3.15. Перенаправление stdout команды ls в файл

v100-1@beta:~/hacker/crack/question/thieve> ls
hacker1.txt  hacker2.txt  hacker3.txt  hacker4.txt  hck2.txt
v100-1@beta:~/hacker/crack/question/thieve> ls > file-list
v100-1@beta:~/hacker/crack/question/thieve> cat  file-list
file-list
hacker1.txt
hacker2.txt
hacker3.txt
hacker4.txt
hck2.txt
v100-1@beta:~/hacker/crack/question/thieve>
		

Для сортировки текстового файла в алфавитном порядке используется команда sort, а для сортировки в обратном алфавитном порядке команда sort –r (Пример 3.16).


Пример 3.16. Создание файла непосредственно в директории

v100-1@beta:~/hacker/crack/question/thieve> sort –r file-list
hck2.txt
hacker4.txt
hacker3.txt
hacker2.txt
hacker1.txt
file-list
v100-1@beta:~/hacker/crack/question/thieve> 
		

Построив состыкованную команду (pipelines) из ls и sort, можно обойтись без промежуточного файла, каковым, по сути, является file-list. Для записи стыковки команд используется символ «|» (вертикальная черта). Состыкованная команда (или конвейер) имеет более короткую и удобную запись, по сравнению последовательно выполняемыми командами (Пример 3.17).


Пример 3.17. Конвейер команд ls и sort

v100-1@beta:~/hacker/crack/question/thieve> rm file-list
v100-1@beta:~/hacker/crack/question/thieve> ls | sort -r
hck2.txt
hacker4.txt
hacker3.txt
hacker2.txt
hacker1.txt
file-list
v100-1@beta:~/hacker/crack/question/thieve>
		

При необходимости можно комбинировать конвейеры с перенаправлением ввода/вывода. Пример 3.18 показывает, что можно записать отсортированный конвейером список в какой-нибудь текстовый файл.


unix-workdir

Пример 3.18. Запись результата работы конвейера в файл

v100-1@beta:~/hacker/crack/question/thieve> ls | sort –r > sort-list
v100-1@beta:~/hacker/crack/question/thieve> cat sort-list
hck2.txt
hacker4.txt
hacker3.txt
hacker2.txt
hacker1.txt
file-list
v100-1@beta:~/hacker/crack/question/thieve>