ЛАБОРАТОРНЫЙ ПРАКТИКУМ: "КОМАНДНАЯ ОБОЛОЧКА 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.txtv100-1@beta:~/hacker/crack/question/thieve> ls > file-listv100-1@beta:~/hacker/crack/question/thieve> cat file-list file-list hacker1.txt hacker2.txt hacker3.txt hacker4.txt hck2.txtv100-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-listv100-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-listv100-1@beta:~/hacker/crack/question/thieve> ls | sort -r hck2.txt hacker4.txt hacker3.txt hacker2.txt hacker1.txt file-listv100-1@beta:~/hacker/crack/question/thieve>
При необходимости можно комбинировать конвейеры с перенаправлением ввода/вывода. Пример 3.18 показывает, что можно записать отсортированный конвейером список в какой-нибудь текстовый файл.
![unix-workdir](/inform/edu/os/unix-pr2013/images/ex318.jpg)