Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Командная строка UNIX. Лабораторный практикум по дисциплине «Операционные системы»
.pdf
Окно терминала, использующего черно-белую цветовую палитру, представлено на рис. 3.7.
Рис. 3.7. Общий вид окна графического терминала
В случае запуска нескольких графических терминалов (рис. 3.8) переключение между ними можно осуществлять комбинацией клавиш
Ctrl+Alt+F1.
Рис. 3.8. Два окна с запущенными графическими терминалами
Текстовая консоль запускается на выполнение путем нажатия комбинации трех клавиш Ctrl+Alt+ одна из функциональных клавиш (F1-F6) (рис.
3.9).
Рис. 3.9. Текстовая консоль Ubuntu
11

Переключаться между консолями можно при помощи сочетания клавиши Alt и одной из функциональных клавиш (F1-F6).
В ответ на приглашение login: пользователь должен ввести имя, под которым он зарегистрирован в системе (рис. 3.10). Затем в ответ на password:
необходимо ввести пароль.
Рис. 3.10. Пример регистрации пользователя в системе
Пароль, в отличие от регистрационного имени, при вводе никак не отражается.
Регистрационное имя пользователя и его пароль задаются системным
администратором при добавлении пользователя в систему.
Если регистрация пользователя прошла успешно, на экран выводятся
строка приветствия, несколько служебных строк и приглашение к вводу
команды в виде знака $ (рис. 3.11).
Рис. 3.11. Вид экрана после удачного завершения регистрации пользователя
3.2. Формат команд
Команды операционной системы UNIX имеют следующий формат:
имя_команды [-ключ] [-a модификатор_ключа] [параметр1]…
[параметрК]
12

Имя команды записывается только строчными (малыми) буквами и
цифрами. Длина имени команды должна составлять от двух до девяти символов.
Ключ представляет собой последовательность, состоящую из знака минус (–), за которым следует одна буква. Ключи обычно задают режим работы команды. Допускается использование нескольких ключей в одной команде. В этом случае имена ключей записываются последовательно за одним знаком минус. Порядок перечисления ключей является несущественным. За некоторыми ключами может следовать модификатор ключа, относящийся только к этому ключу.
Параметры обычно определяют объекты, на которые будут распространяться действия команды.
При задании параметров можно использовать символы расширения (?)
знак вопроса и (*) звёздочка. Знак вопроса (?) заменяет один символ во
введённом выражении. Это обозначает, что, если в текущем каталоге находятся файлы 1file.txt, 2file.txt и т.д., то при указании параметра команды в
виде ?file.txt все файлы такого вида будут обработаны. Если же в качестве
аргумента ввести (*) звёздочку, то команда заменит совершенно любое количество символов в выражении.
П р и м е р
ls *.odt
После выполнения этой команды на экран выведутся все файлы с расширением odt.
При работе в системе UNIX необходимо иметь в виду, что она различает большие и малые буквы.
3.3. Командная оболочка UNIX
Командная оболочка UNIX (англ. Unix shell, часто просто «шелл» или
«sh») — командный интерпретатор, используемый в операционных системах семейства UNIX. В первую очередь под shell понимаются POSIXсовместимые оболочки, восходящие к Bourne shell (шелл Борна), появившемуся в UNIX Version 7.
В ОС Linux стандартной командной оболочкой является расширенная
Борном свободная (разработанная в рамках проекта GNU) оболочка sh, получившая название bash (bourne again shell — «Возрождённый» shell).
Bash — командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash может читать команды из файла, который называется скриптом (или сценарием). Как и все UNIX-оболочки, он
поддерживает автодополнение названий файлов и папок, подстановку вывода результата команд, переменные, контроль за порядком выполнения,
операторы ветвления и цикла.
13

3.4. Перенаправление ввода-вывода
Синтаксис перенаправления
Описание
Команда1 | Команда2
Назначение стандартного вывода команды1
в качестве стандартного ввода команды2
Команда < [путь]имя_файла
Ввод команды поступает из заданного файла
Команда > [путь]имя_файла
Вывод команды направляется в заданный
файл. Если указанный файл не существует,
то он создается, в противном случае — перезаписывается
Команда >> [путь]имя_файла
Вывод команды направляется в заданный
файл. При этом если указанный файл не
существует, то он создается, в противном
случае вывод дописывается в конец файла
По умолчанию команды получают ввод из параметров, указываемых
при вводе команды в командной строке, и направляют свой вывод, включая
и сообщения об ошибках, на экран монитора. Однако иногда возникают
ситуации, в которых ввод нужно получить не с клавиатуры, а из какоголибо другого источника, а вывод направить в файл или на другое устройство вывода, например, на принтер. Кроме того, сообщения об ошибках
иногда желательно направлять в файл, а не в окно консоли.
В bash есть встроенные файловые дескрипторы: 0 (stdin), 1 (stdout), 2
(stderr):
stdin — стандартный ввод; то, что набирает пользователь в консоли;
stdout — стандартный вывод программы;
stderr — стандартный вывод ошибок.
В Unix используются четыре способа перенаправления стандартных
ввода и вывода:
1) перенаправление стандартного вывода команды в файл;
2) переназначение стандартного ввода команды с клавиатуры на файл;
3) дописывание стандартного вывода команды в существующий файл;
4) передача стандартного вывода одной команды в качестве стандарт-
ного ввода другой команды. Этот способ перенаправления ввода-вывода
принято называть потоком.
Для перенаправления ввода и вывода используется синтаксис, представленный в табл. 3.1.
Т а б л и ц а 3.1
Синтаксис перенаправления ввода и/или вывода
14

О к о н ч а н и е т а б л. 3.1
Синтаксис перенаправления
Описание
Команда < [путь]имя_файла1 >
[путь]имя_файла2
Ввод команды поступает из первого заданного файла, а вывод направляется во второй
с перезаписью
Команда < [путь]имя_файла1 >>
[путь]имя_файла2
Ввод команды поступает из заданного первого заданного файла, а вывод дописывается во второй файл
Команда 2> [путь]имя_файла
Создается заданный файл, в который
направляется вывод сообщений об ошибках.
Если такой файл уже существует, то он перезаписывается
Команда 2>&1 [путь]имя_файла
Сообщения об ошибках и стандартный вывод записываются в один и тот же файл
3.5. Способы объединения команд
В UNIX существует возможность объединять несколько команд в одной
командной строке. Это можно делать несколькими способами.
1. Последовательное выполнение. Команды выполняются одна за дру-
гой, независимо от результата их исполнения. В качестве разделителя выступает символ точки с запятой «;».
2. Условное выполнение (И). Проверяется код завершения первой про-
граммы. Если он равен 0, производится выполнение второй программы и
т.д. Таким образом, последняя команда выполнится только при успешном
завершении всех предыдущих. В качестве разделителя выступают два амперсанда «&&».
П р и м е р
test -r /tmp/txt && cp /tmp/txt
Проверяется возможность чтения файла /tmp/txt, и в случае успеха файл
копируется в текущий каталог.
3. Условное выполнение (ИЛИ). Проверяется код завершения первой
программы. Если он не равен 0, производится выполнение второй программы и т.д. Последняя команда будет запущена, только если ни одна из
предыдущих не закончилась успешно. В качестве разделителя выступают
две вертикальные черты «||».
П р и м е р
test -d /tmp/dir || mkdir /tmp/dir
Проверяется существование каталога /tmp/dir. Если его нет, он создаётся.
4. Конвейер. При выполнении программ связываются их стандартные
выходы и входы, так что текстовые данные передаются через них последовательно, как по конвейеру.
15

В качестве разделителя используется символ вертикальной черты «|».
П р и м е р
cat file.txt | uniq | sort
Читается содержимое файла file.txt. Из него удаляются повторяющиеся
строки, а оставшиеся сортируются по алфавиту. Результат выводится на
экран.
3.6. Возможности интерфейса командной оболочки
Командная оболочка bash предоставляет пользователю ряд особенностей пользовательского интерфейса, облегчающих работу с командной
строкой. К этим особенностям относятся: возможность редактирования
содержимого командной строки, возможность работы с историей команд,
автоматическое дополнение команд.
3.6.1. Редактирование командной строки
Вводимую команду можно редактировать с помощью клавиш
Backspace и Delete, перемещаться стрелками по всей строке.
3.6.2. История команд
Все команды, набранные пользователем, командная оболочка запоминает и позволяет обращаться к ним впоследствии. По стрелке вверх список
поданных команд «прокручивается» от последней к первой, а по стрелке
вниз — обратно. Соответствующая команда отображается в командной
строке как только что набранная. Её можно отредактировать и запустить на
выполнение.
Чтобы история команд могла сохраняться между сеансами работы пользователя, bash записывает ее в файл .bash_history, находящийся в домашнем каталоге пользователя. Делается это в момент завершения сеанса пользователя: накопленная за время работы история дописывается в конец этого
файла. При следующем запуске командной оболочки ОС считывает
.bash_history целиком. История хранится не вечно, количество запоминаемых команд в .bash_history ограничено. Обычно сохраняется 500 команд,
но это значение может быть изменено.
3.6.3. Автодополнение
Автодополнения позволяют быстро набирать команды и пути в файловой системе. Если во время набора имени команды или файла нажать клавишу Tab, то командная оболочка либо попытается дополнить указанную
команду или файл в случае, когда они определяются введенной частью однозначно, либо предложит возможные варианты с данным началом.
16

4. ОСНОВЫ РАБОТЫ С КОМАНДНОЙ СТРОКОЙ
В ОС LINUX
Несмотря на то, что большинство команд во всех UNIX-подобных ОС
совпадают по наименованию, существуют некоторые различия в числе и
составе ключей, а также параметрах команд. Для практического изучения
выбрана операционная система Linux. Всё дальнейшее изложение материала будет вестись с привязкой к особенностям этой операционной системы.
4.1. Просмотр файлов инструкций
(получение справки о команде)
Получить справку о любой команде операционной системы или найти
нужную команду можно с помощью команды man (от слова manual — руководство, инструкция).
Синтаксис:
man <имя_команды>
man [-k] <контекст>
Первый вариант команды man используется для получения справки о
команде, имя которой указывается в качестве параметра.
П р и м е р
man cd
Команда выводит инструкцию по команде cd.
Управление просмотром инструкции осуществляется с помощью односимвольных команд, которые не отображаются на экране дисплея:
d — вперед на половину экрана;
пробел — вперед на экран;
b — возврат на один экран назад.
Для получения справки о работе команды man можно воспользоваться командой man man
Второй вариант команды man используется тогда, когда имя нужной
команды неизвестно. Для поиска команды, предназначенной для выполнения нужных функций, необходимо после ключа –k указать ключевое слово
(контекст), характеризующее команду и которое находится в кратких описаниях команд. Единственное неудобство — ключевое слово необходимо
указывать на английском языке.
П р и м е р
man –k file
Команда позволяет найти команды, в кратком описании которых встречается ключевое слово file, т.е. команды, предназначенные для разнообразной работы с файлами.
17

Рис. 4.1. Фрагмент вывода команды man –k file.
Полученный список команд (рис. 4.1) содержит информацию о группе
объектов, в названии которых (правая колонка) встречается сочетание символов "file".
Этот режим работы команды man весьма эффективен и для изучения
набора команд операционной системы.
4.2. Команды по работе с файловой системой
4.2.1. Определение места текущего каталога в файловой
системе
После успешной регистрации в системе пользователь попадает в свой
домашний каталог, который назначается текущим каталогом (где пользователь находится в текущий момент времени). Очень часто, прежде чем
начать выполнять какие-либо действия в системе, нужно определить, в какой части файловой системы находится текущий каталог. Решить эту задачу помогает команда pwd, которая показывает полный путь к текущему
каталогу.
П р и м е р
Предположим, что пользователь зарегистрировался в системе под именем student. Тогда в ответ на ввод команды pwd на экран будет выведен
полный путь к домашнему каталогу пользователя (рис. 4.2).
Рис. 4.2. Результат выполнения команды pwd
18

4.2.2. Просмотр содержимого текущего каталога
Ключ
Назначение
–1 (цифра 1)
Вывод информации о каждом следующем файле или каталоге в
отдельной строке
–a
Вывод списка всех файлов и подкаталогов в каталоге, включая
скрытые файлы (их имена начинаются с точки)
–c
Сортировка по дате создания
–F
Пометить исполняемые файлы звездочкой (*), каталоги —
наклонной чертой (/) и символические ссылки — символом @
–r
Вывод в обратном порядке
–R
Рекурсивная работа
Одной из наиболее часто возникающих ситуаций при работе с командной строкой является необходимость посмотреть содержимое какого-либо
каталога. В UNIX для этих целей используется команда ls.
Синтаксис:
ls [–ключи] [имя_файла | имя_каталога] …
Если команда ls вводится без параметров и ключей, то на экран выводится содержимое текущего каталога. При этом выводятся только имена
файлов и подкаталогов текущего каталога без каких-либо пометок и дополнительной информации (рис. 4.3).
Рис. 4.3. Пример вывода команды ls без параметров и ключей
По умолчанию результат работы команды ls сортируется в алфавитном
порядке.
Если задано несколько параметров, то параметры сначала сортируются
соответствующим образом, причем файлы выводятся перед содержимым
каталогов.
Для каждого заданного параметра команда ls выводит:
содержимое (оглавление) указанного каталога, если параметр является
именем каталога;
имя файла и другую требуемую информацию, если параметр является
именем файла.
Для управления форматом вывода служат многочисленные ключи команды (табл. 4.1).
Т а б л и ц а 4.1
Ключи команды ls
19

О к о н ч а н и е т а б л. 4.1
Ключ
Назначение
–l (малая буква L)
Длинный (наиболее полный) формат вывода
–u
Сортировка по дате последнего доступа к файлу
–C
Вывод содержимого каталога в несколько столбцов. Устанавливается по умолчанию при выводе на терминал
–i
Для каждого файла выводится номер индексного дескриптора (уникальный номер файла)
–f
Вывод не сортируется, т.е. порядок вывода соответствует
порядку файлов в каталоге
Примеры вывода команды ls с различными ключами представлены на
рис. 4.4—4.7.
Рис. 4.4. Вывод команды ls с ключом –a
Рис. 4.5. Вывод команды ls с ключом –1 (цифра 1)
Рис. 4.6. Вывод команды ls с ключом –F
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
