Главная страница 1
скачать файл

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

Основы работы с UNIX-подобными системами
Цель: изучение основных приемов и получение практических навыков работы с UNIX-подобными системами.
Содержание

Краткие теоретические сведения 1

Пользователи, привилегированный пользователь 1

Файловая система 1

Программы 2

Командный язык ОС Unix (shell) 2

Структура команд 3

Перенаправление ввода/вывода 3

Группировка команд 4

Справка по некоторым командам 4

man 4


apropos 4

ls 4


mkdir 7

cp 7


mv 8

cat 8


rm 9

vi 9


Рабочее задание 13


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

Пользователи, привилегированный пользователь


Ядро ОС UNIX идентифицирует каждого пользователя по его идентификатору (UID - User Identifier), уникальному целому значению, присваиваемому пользователю при регистрации в системе. Кроме того, каждый пользователь относится к некоторой группе пользователей, которая также идентифицируется некоторым целым значением (GID - Group IDentifier). Значения UID и GID для каждого зарегистрированного пользователя сохраняются в учетных файлах системы и приписываются процессу, в котором выполняется командный интерпретатор, запущенный при входе пользователя в систему. Эти значения наследуются каждым новым процессом, запущенным от имени данного пользователя, и используются ядром системы для контроля правомочности доступа к файлам, выполнения программ и т.д.

Администратор системы, который тоже является зарегистрированным пользователем, должен обладать большими возможностями, чем обычные пользователи. В ОС UNIX эта задача решается путем выделения одного значения UID (нулевого). Пользователь с таким UID называется суперпользователем (superuser) или root. Он имеет неограниченные права на доступ к любому файлу и на выполнение любой программы.


Файловая система


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

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

Kорневой каталог имеет имя "/". Он обычно содержит каталоги:

bin для наиболее используемых программ;

dev для специальных файлов, представляющих устройства (дисплеи, диски...);

etc для хранения настроек системы;

lib важнейшие библиотеки;

mnt для подключения (монтирования) новых файловых систем;

sys средства для изменения конфигурации системы;

tmp для хранения временных файлов;

usr каталоги и обычные файлы, содержащие информацию, привлекаемую при решении задач пользователя.
Каждому зарегистрированному пользователю соответствует некоторый каталог файловой системы, который называется "домашним" (home) каталогом пользователя. При входе в систему пользователь получает неограниченный доступ к своему домашнему каталогу и всем каталогам и файлам, содержащимся в нем. Потенциально возможен доступ и ко всем другим файлам, однако он может быть ограничен, если пользователь не имеет достаточных привилегий.

Доступ к домашнему каталогу можно произвести с помощью его псевдонима ~, например, команда

cd ~/work

призводит переход в подкаталог work домашнего каталога текущего пользователя.


Программы


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

Командный язык ОС Unix (shell)


Традиционный способ взаимодействия пользователя с системой UNIX основывается на использовании командных языков.

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

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

Командный язык shell фактически есть язык программирования очень высокого уровня. На этом языке пользователь осуществляет управление компьютером. Обычно, после входа в систему вы начинаете взаимодействовать с командной оболочкой. Признаком того, что оболочка (shell) готова к приему команд служит выдаваемое ею на экран приглашение (промптер). В простейшем случае это доллар ("$").

Shell не является необходимым и единственным командным языком. Например, немалой популярностью пользуется язык cshell, есть также kshell, bashell (из наиболее популярных в последнее время) и другие.

ОБРАТИТЕ ВНИМАНИЕ. shell - это одна из многих команд UNIX. То есть в набор команд оболочки (интерпретатора) "shell" входит команда "sh" - вызов интерпретатора "shell". Первый "shell" вызывается автоматически при вашем входе в систему и выдает на экран промтер. После этого вы можете вызывать на выполнение любые команды, в том числе и снова сам "shell", который вам создаст новую оболочку внутри прежней.

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

Структура команд


Любой командный язык семейства shell фактически состоит из трех частей:

  • служебных конструкций, позволяющих манипулировать с текстовыми строками и строить сложные команды на основе простых команд;

  • встроенных команд, выполняемых непосредственно интерпретатором командного языка;

  • команд, представляемых отдельными выполняемыми файлами.

Команды в shell обычно имеют следующий формат:

<имя команды> <флаги> <аргумент(ы)>

Например:

ls -ls /usr/bin

ls имя команды выдачи содержимого директория,

-ls флаги ( "-" - признак флагов, l - длинный формат, s - объем файлов в блоках).

/usr/bin директорий, для которого выполняется команда.


Перенаправление ввода/вывода


Механизм перенаправления ввода/вывода является одним из наиболее элегантных, мощных и одновременно простых механизмов ОС UNIX. Цель, которая ставилась при разработке этого механизма, состоит в следующем. Поскольку UNIX - это интерактивная система, то обычно программы вводят текстовые строки с терминала и выводят результирующие текстовые строки на экран терминала. Для того чтобы обеспечить более гибкое использование таких программ, желательно уметь обеспечить им ввод из файла или из вывода других программ и направить их вывод в файл или на ввод другим программам.

Реализация механизма основывается на следующих свойствах ОС UNIX. Во-первых, любой ввод/вывод трактуется как ввод из некоторого файла и вывод в некоторый файл. Клавиатура и экран терминала тоже интерпретируются как файлы (первый можно только читать, а во второй можно только писать). Во-вторых, доступ к любому файлу производится через его дескриптор (положительное целое число). Фиксируются три значения дескрипторов файлов. Файл с дескриптором 1 называется файлом стандартного ввода (stdin), файл с дескриптором 2 - файлом стандартного вывода (stdout), и файл с дескриптором 3 - файлом стандартного вывода диагностических сообщений (stderr). В-третьих, программа, запущенная в некотором процессе, "наследует" от породившего процесса все дескрипторы открытых файлов.

В головном процессе интерпретатора командного языка файлом стандартного ввода является клавиатура терминала пользователя, а файлами стандартного вывода и вывода диагностических сообщений - экран терминала. Однако при запуске любой команды можно сообщить интерпретатору (средствами соответствующего командного языка), какой файл или вывод какой программы должен служить файлом стандартного ввода для запускаемой программы и какой файл или ввод какой программы должен служить файлом стандартного вывода или вывода диагностических сообщений для запускаемой программы. Тогда интерпретатор перед выполнением системного вызова exec открывает указанные файлы, подменяя смысл дескрипторов 1, 2 и 3.

Конечно, то же самое может проделать и любая другая программа, запускающая третью программу в специально созданном процессе. Следовательно, все, что требуется для нормального функционирования механизма перенаправления ввода/вывода - это придерживаться при программировании соглашения об использовании дескрипторов stdin, stdout и stderr. Это не очень трудно, поскольку в наиболее распространенных функциях библиотеки ввода/вывода printf, scanf и error вообще не требуется указывать дескриптор файла. Функция printf неявно использует stdout, функция scanf - stdin, а функция error - stderr.


Группировка команд


Коротко перечислим средства группирования команд и перенаправления ввода/вывода:

  • cmd1 arg ...; cmd2 arg ...; ... cmdN arg ... - последовательное выполнение команд;

  • cmd1 arg ...& cmd2 arg ...& ... cmdN arg ... - асинхронное выполнение команд;

  • cmd1 arg ... && cmd2 arg ... - зависимость последующей команды от предыдущей таким образом, что последующая команда выполняется, если предыдущая выдала нулевое значение;

  • cmd1 arg ... || cmd2 arg ... - зависимость последующей команды от предыдущей таким образом, что последующая команда выполняется, если предыдущая выдала ненулевое значение;

  • cmd > file - стандартный вывод направлен в файл file;

  • cmd >> file - стандартный вывод направлен в конец файла file; cmd < file - стандартный ввод выполняется из файла file;

  • cmd1 | cmd2 - конвейер команд, в котором стандартный вывод команды cmd1 направлен на стандартный вход команды cmd2.



Справка по некоторым командам

man


В большинстве UNIX-подобных систем встроена обширная справочная информация по большинству команд и программ. Для получения справки по команде используйте команду man, например:

man ls


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

apropos


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

apropos “working directory”

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

ls


ls - выдача информации о файлах или каталогах

СИНТАКСИС

ls [-R] [-a] [-d] [-C] [-x] [-m] [-l] [-n] [-o] [-g] [-r] [-t] [-u] [-c]

[-p] [-F] [-b] [-q] [-i] [-s] [-f] [имя ...]

ОПИСАНИЕ

Команда ls для каждого имени каталога распечатывает список входящих в этот каталог файлов; для файлов - повторяется имя файла и выводится дополнительная информация в соответствии с указанными флагами. По умолчанию имена файлов выводятся в алфавитном порядке. Если имена не заданы, выдается содержимое текущего каталога. Если заданы несколько аргументов, то они сортируются по алфавиту, однако сначала всегда идут файлы, а потом каталоги с их содержимым.

Существует три основных формата выдачи. По умолчанию выдается по одному файлу в строке; флаги -C и -x позволяют выдавать информацию в несколько колонок, а флаг -m задает свободный формат. Для определения формата вывода при указании флагов -C, -x и -m используется переменная окружения COLUMNS, значение которой равно количеству символов в выходной строке. Если эта переменная не установлена, используется база данных terminfo(4) и значение переменной окружения TERM. Если эта информация недоступна, длина выходной строки берется равной 80.

Командой ls обрабатываются следующие флаги:



-R

Рекурсивно обойти встретившиеся подкаталоги.

-a

Вывести список всех файлов (обычно не выводятся файлы, имена которых начинаются с точки).

-d

Если аргумент является каталогом, то выводить только его имя, а не содержимое. Часто используется с флагом -l для получения сведений о состоянии каталога.

-C

Вывод в несколько колонок с сортировкой по колонкам.

-x

Вывод в несколько колонок с сортировкой по строкам.

-m

Вывод в свободном формате, имена файлов разделяются запятыми.

-l

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

-n

То же, что и -l, но идентификаторы владельца и группы выводятся в виде чисел, а не в виде имен.

-o

То же, что и -l, но идентификатор группы не выводится.

-g

То же, что и -l, но идентификатор владельца не выводится.

-r

Изменить порядок сортировки на обратный алфавитный или, при наличии флага -t, сначала выводить более старые файлы.

-t

Имена файлов сортируются не по алфавиту, а по времени (сначала идут самые свежие файлы). По умолчанию используется время последнего изменения. См. также флаги -u и -c.

-u

Вместо времени последнего изменения использовать время последнего доступа для сортировки (с флагом -t) или для вывода (с флагом -l).

-c

Вместо времени последнего изменения использовать время последней модификации описателя файла (т.е. время создания файла, изменения режима доступа к нему и т.п.) для сортировки (с флагом -t) или для вывода (с флагом -l).

-p

Если файл является каталогом, то выдавать после его имени символ /.

-F

Если файл является каталогом, то выдавать после его имени символ /; если файл является выполняемым, то выдавать после его имени символ *.

-b

Выдавать непечатные символы, входящие в имя файла, в восьмеричном виде (\ddd).

-q

Выдавать непечатные символы, входящие в имя файла, в виде символа ?.

-i

Выдавать в первой колонке номера описателей файлов.

-s

Выдавать размер файлов в блоках (включая косвенные блоки).

-f

Рассматривать каждый аргумент как каталог и выводить его содержимое. Этот флаг отменяет флаги -l, -t, -s, -r и включает флаг -a. Сортировка имен файлов не производится; имена выдаются в таком порядке, в каком они перечислены в каталоге.

Режим доступа к файлу при указании флага -l выводится в виде 10 символов. Первый символ означает:

d

Файл является каталогом.

b

Файл является специальным блочным файлом.

c

Файл является специальным символьным файлом.

p

Файл является именованным каналом.

-

Обычный файл.

Остальные 9 символов делятся на три группы по три символа: права доступа владельца, других пользователей из его группы, всех прочих пользователей. Внутри каждой группы используются три символа, обозначающие права на чтение, запись и выполнение файла соответственно. Для каталога под правом на выполнение подразумевается право на просмотр в поисках требуемого файла.

При использовании команды

ls -l /util/by

результат выглядит примерно так:

-rwxr-xr-x 1 root sys 50 Jun 22 10:42 /util/by

Читая справа налево можно увидеть, что содержимое файла /util/by последний раз изменялось в 10 часов 42 минуты 22 января. Размер файла 50 байт. Владелец этого файла принадлежит группе sys, к тому же он является суперпользователем (входное имя - root). Следующее число, в данном случае 1, обозначает количество ссылок на файл /util/by. Наконец, последовательность минусов и букв указывает, что владелец, члены группы и прочие пользователи могут читать и выполнять файл, а владелец (и только он) имеет право писать в файл.

Права обозначаются следующим образом:

r

Право на чтение.

w

Право на запись.

x

Право на выполнение (поиск в каталоге).

-

Данное право доступа отсутствует.

l

Учет блокировки доступа (бит переустановки идентификатора группы равен 1, бит права на выполнение членами группы равен 0). Располагается на месте права на выполнение для членов группы.

s

Право переустанавливать идентификатор группы или идентификатор владельца и право выполнения файла для членов группы или владельца.

S

Неопределенная комбинация бит: право переустанавливать идентификатор владельца есть, а право выполнения файла для владельца отсутствует.

t

Установлен бит навязчивости [см. chmod(1)] у файла, который могут выполнять прочие пользователи. Располагается на месте права на выполнение для прочих пользователей.

T

Бит навязчивости установлен, а права на выполнение у прочих пользователей нет. Располагается на месте права на выполнение для прочих пользователей.

ПРИМЕРЫ


  1. Если файл имеет режим

-rwxr--r-

он доступен владельцу для чтения, записи и выполнения, а членам группы и прочим пользователям только для чтения.



  1. Режим

-rwsr-xr-

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



  1. В случае режима

-rw-rwl--

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



  1. По команде

ls -a

будут выведены имена всех файлов в текущем каталоге, включая и те, которые начинаются с точки и обычно не выдаются.



  1. По команде

ls -aisn

будет выдана разнообразная информация: список всех файлов, включая те, которые обычно не выводятся (a); номера описателей файлов будут выведены в левой колонке (i); размеры файлов (в блоках) выводятся во второй колонке (s); наконец, будут выданы числовые идентификаторы владельцев и групп (n).


mkdir


mkdir - создание каталога

СИНТАКСИС

mkdir [-m режим_доступа] [-p] каталог ...



ОПИСАНИЕ

По команде mkdir создается один или несколько каталогов с режимом доступа 0777 [возможно измененном с учетом umask(1) и опции -m]. Стандартные файлы (. - для самого каталога и .. - для вышележащего) создаются автоматически; их нельзя создать по имени. Для создания каталога необходимо располагать правом записи в вышележащий каталог.

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

Командой mkdir обрабатываются две опции:

-m режим_доступа

Явное задание режима_доступа для создаваемых каталогов [см. chmod(1)].

-p

При указании этой опции перед созданием нового каталога предварительно создаются все несуществующие вышележащие каталоги.



ПРИМЕРЫ

Чтобы создать поддерево каталогов tmpdir/temp/dir, надо выполнить команду

mkdir -p tmpdir/temp/dir

cp


cp - копирование файлов

СИНТАКСИС

cp файл1 [файл2 ...] целевой_файл

ОПИСАНИЕ

Команда cp копирует файл1 в целевой_файл. Файл1 не должен совпадать с целевым_файлом (будьте внимательны при использовании метасимволов shell'а). Если целевой_файл является каталогом, то файл1, файл2,..., копируются в него под своими именами. Только в этом случае можно указывать несколько исходных файлов.

Если целевой_файл существует и не является каталогом, его старое содержимое теряется. Режим, владелец и группа целевого_файла при этом не меняются.

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


mv


mv - перемещение (переименование) файлов

СИНТАКСИС

mv [-f] файл1 [файл2 ...] целевой_файл



ОПИСАНИЕ

Команда mv перемещает (переименовывает) файл1 в целевой_файл. Файл1 не должен совпадать с целевым_файлом (будьте внимательны при использовании метасимволов shell'а). Если целевой_файл является каталогом, то файл1, файл2, ..., перемещаются в него под своими именами. Только в этом случае можно указывать несколько исходных файлов.

Если целевой_файл существует и не является каталогом, его старое содержимое теряется. Если при этом обнаруживается, что в целевой_файл не разрешена запись, то выводится режим этого файла [см. chmod(2)] и запрашивается строка со стандартного ввода. Если эта строка начинается с символа y, то требуемые действия все же выполняются, при условии, что у пользователя достаточно прав для удаления целевого_файла. Если была указана опция -f или стандартный ввод назначен не на терминал, то требуемые действия выполняются без всяких запросов. Вместе с содержимым целевой_файл наследует режим файла1.

Если файл1 является каталогом, то он переименовывается в целевой_файл, только если у этих двух каталогов общий надкаталог; при этом все файлы, находившиеся в файле1, перемещаются под своими именами в целевой_файл. Если файл1 является файлом, а целевой_файл - ссылкой, причем не единственной, на другой файл, то все остальные ссылки сохраняются, а целевой_файл становится новым независимым файлом.


cat


cat - слияние и вывод файлов

СИНТАКСИС

cat [-u] [-s] [-v] [-t] [-e] файл ...



ОПИСАНИЕ

Команда cat по очереди читает указанные файлы и выдает их содержимое на стандартный вывод. Так, например,

cat f

распечатывает содержимое файла f, а



cat f1 f2 > f3

сливает первые два файла и помещает результат в третий. Чтобы добавить файл f1 к файлу f2, надо выполнить команду

cat f1 >> f2

Если не указан ни один файл или среди аргументов встретился -, команда cat читает данные со стандартного ввода. Опции команды cat имеют следующий смысл:



-u

Вывод не буферизуется (по умолчанию буферизуется).

-s

Не сообщается о несуществующих файлах.

-v

Визуализация непечатных символов (кроме табуляций, переводов строк и переходов к новой странице). Управляющие символы изображаются в виде ^X (CTRL+X); символ DEL (восьмеричное 0177) - в виде ^?. Символы, не входящие в набор ASCII (то есть со взведенным восьмым битом) выдаются в виде M-x, где x - определяемый младшими семью битами символ.

С опцией -v можно использовать следующие опции:

-t

Визуализация символов табуляции в виде ^I.

-e

Визуализация символов перевода строки в виде $ (строка при этом все же переводится).

Если опция -v не указана, то опции -t и -e игнорируются.

rm


rm - удаление файлов или каталогов

СИНТАКСИС

rm [-f] [-i] файл ...

rm -r [-f] [-i] каталог ... [файл ...]

ОПИСАНИЕ

Команда rm служит для удаления указанных имен файлов из каталога. Если заданное имя было последней ссылкой на файл, то файл уничтожается. Для удаления пользователь должен обладать правом записи в каталог; иметь право на чтение или запись файла не обязательно.

Если нет права на запись в файл и стандартный ввод назначен на терминал, то выдается (в восьмеричном виде) режим доступа к файлу и запрашивается подтверждение; если оно начинается с буквы y, то файл удаляется, иначе - нет. Если стандартный ввод назначен не на терминал, команда rm ведет себя так же, как при наличии опции -f.

Допускаются следующие три опции:



-f

Команда не выдает сообщений, когда удаляемый файл не существует, не запрашивает подтверждения при удалении файлов, на запись в которые нет прав. Если нет права и на запись в каталог, файлы не удаляются. Сообщение об ошибке выдается лишь при попытке удалить каталог, на запись в который нет прав (см. опцию -r).

-r

Происходит рекурсивное удаление всех каталогов и подкаталогов, перечисленных в списке аргументов. Сначала каталоги опустошаются, затем удаляются. Подтверждение при удалении файлов, на запись в которые нет прав, не запрашивается, если задана опция -f или стандартный ввод не назначен на терминал и не задана опция -i.

При удалении непустых каталогов команда rm -r предпочтительнее команды rmdir(1), так как последняя способна удалить только пустой каталог.



-i

Перед удалением каждого файла запрашивается подтверждение. Опция -i устраняет действие опции -f; она действует даже тогда, когда стандартный ввод не назначен на терминал.

ПРИМЕРЫ Опция -i часто используется совместно с -r. По команде:

rm -ir dirname

запрашивается подтверждение:

directory dirname: ?

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

vi


vi, view,vedit - активизирует экранно-ориентированный редактор

СИНТАКСИС

vi [option...] [command...] [filename...]

view [option...] [command...] [filename...]

vedit [option...] [command...] [filename...]



ОПИСАНИЕ

Совет: Перед любыми действиями с документом введите следующую команду:

:set showmode

После этого текущий режим отображается в правом нижнем углу экрана.


Запуск и завершение VI


vi filename

Открыть файл filename для редактирования

vi -r filename

Открыть последнюю сохраненную версию filename после аварийного выхода

vi filename file2 ...

Открыть filename, затем file2 ... Переход к следующему файлу - :n

ZZ или :wq или :x

Сохранить изменения и завершить VI

:w

Сохранить изменения в текущем файле

:w!

Безусловно сохранить текущий файл

:w file

Сохранить текущий файл под именем file

:q!

Завершить VI без сохранения

Режимы


VI работает в командном режиме и режиме ввода. Сразу после запуска редактор находится в командном режиме, в котором можно перемещаться по тексту, выполнять копирование и вставку текста из буфера. Режим ввода включается по командам вставки, дополнения, замены. Нажатие [ESC] возвращает редактор в командный режим. Большинство команд выполняется сразу после нажатия клавиши. Исключение - команды строчного редактора ex, начинающиеся с двоеточия, которые выполняются после нажатия [Return].

Вставка текста


i

Вставка перед курсором

I

Вставка перед строкой

a

Добавление за курсором

A

Добавление после строки

:r file

Вставить содержимое file после текущей строки




В режиме ввода:

CTRL-i или TAB

Вставить смещение вправо на shift width

CTRL-d

Уменьшить смещение вправо на shift width

CTRL-h или Backspace

Удалить предыдущий символ

CTRL-w

Удалить предыдущее слово

CTRL-u

Удалить предыдущую строку



Перемещение по тексту


h

Влево

j

Вниз

k

Вверх

l

Вправо

«стрелки»

Перемещение по тексту (в больших файлах работает медленно, в некоторых конфигурациях может работать некорректно).

w

К следующему слову

b

К началу слова

^

К первому непробельному символу строки

+ или

К первому символу следующей строки

-

К первому непробельному символу предыдущей строки

e

К концу слова

(

К началу предложения

)

К концу предложения

{

К началу абзаца

}

К концу абзаца

Примечание: абзацы разделяются пустой строкой.

0 или |

К началу строки

$

В конец строки

1G

К первой строке файла

G

К последней строке файла

H

К верхней строке экрана

L

К нижней строке экрана

CTRL-d

Прокрутка вниз на пол-экрана

CTRL-f

Прокрутка вниз на экран

CTRL-u

Прокрутка вверх на пол-экрана

CTRL-b

Прокрутка вверх на экран

%

К парной скобке: ( ), { }, [ ]

Удаление текста


Большинство команд удаления образуются из символа d и команды перемещения. Например, dw удаляет слово. Другие команды удаления:

x

Удалить текущий символ

nx

Удалить n символов вправо, начиная с текущего

X

Удалить символ слева от курсора

nX

Удалить n символов влево от курсора

dd или :d

Удалить текущую строку

"(a-z)dd

Вырезать текущую строку в именованный буфер (от a до z)

Копирование в буфер


Подобно командам удаления, большинство команд копирования в буфер состоят из символа y и команды перемещения. Например, y$ помещает в буфер конец строки.

yy или :y

Копировать текущую строку

"(a-z)yy

Копировать текущую строку в именованный буфер (от a до z)

Изменение текста


Команды изменения действуют как команды удаления с последующим переводом в режим ввода. Большинство из них состоит из символа c и команды перемещения. Например cw заменяет слово.

Вставка из буфера


p

Поместить текст из буфера после курсора

P

Поместить текст из буфера перед курсором

"(a-z)p или "(a-z)P

Поместить текст из буфера (от a до z) после/перед текущей строкой

Буферы


Имя буфера может быть указано перед любой командой удаления, изменения, копирования или вставки. Префикс имеет вид "c, где c - любой символ нижнего регистра. Например, "adw удаляет слово и помещает его в буфер a. Затем его можно будет поместить в текст по команде "ap.

Поиск/замена подстрок


/str

Поиск str вперед от курсора

?str

Поиск str назад от курсора

n

Повторить поиск в том же направлении

:n,ms/str1/str2/opt

Искать строку str1 со строки n до m (n и m могут быть опущены); заменить str1 на str2; с опциями opt. Возможные опции: g - глобальный, c - подтверждать замены (y - заменить, - не заменять), p - печатать измененные строки

&

Повторить последнюю команду :s

:g/str1/s/str2/str3/

Найти строку, содержащую str1, заменить str2 на str3

;

Повторить поиск

,

Повторить поиск в обратном направлении

Регулярные выражения


. (точка)

Любой символ, кроме «новой строки»

*

0 или более вхождений любого символа

[...]

Любой из указанных символов

[^...]

Любой из символов, кроме указанных

\<

Строго в начале слова

\>

Строго в конце слова

^

В начале строки

$

В конце строки

\(...\)

Группа условий

\n

Значение n-ой группы

\

Отмена значения спецсимвола (например, \$ позволяет искать символ $)

\\

Отмена особого действия символа \

Счетчики


Практически перед любой командой можно указать количество ее повторений. Например, 5dw приведет к удалению 5 слов, а 3fe - к перемещению курсора вперед на 3-е вхождение символа «e». Подобным образом можно действовать и с командами вставки, например, вставить 100 одинаковых строк.

Режимы VI


Заметьте: вводится :set option для включения режима и :set nooption для выключения. Чтобы установить настройки для каждого запуска VI, в домашнем каталоге создается файл .exrc, содержащий данные команды без двоеточия перед ними.

:set ai

Автоматический отступ (по предыдущей строке)

:set all

Вывести на экран все режимы

:set eb

Звуковой сигнал при ошибках

:set ic

Игнорировать регистр при поиске

:set list

Показывать символы табуляции (^l) и конца строки ($)

:set nu
:set number

Показывать номера строк

:set showmode

Показывать текущий режим в нижней части экрана

:set showmatch

Подсвечивать парную открывающую скобку при вводе закрывающей

:set wa

Исключить нормальную проверку перед записью

:set wm=n

Установить размер правого поля для автопереноса. Для отключения автопереноса n=0

Прочее


~

Смена регистра символа над курсором

J

Слияние следующей строки с текущей

nJ

Слияние n строк

.

Повторить последнюю команду, изменяющую текст

u

Отменить последнее изменение

U

Отменить все изменения в строке

CTRL-G

Показать имя файла, номер строки, общее число строк и положение в файле (%)



Рабочее задание


    1. Перезагрузите компьютер и в меню загрузчика выберите BSD UNIX.

    2. Зарегистрируйтесь в системе, используя в качестве login dm0001 с пустым паролем.

    3. Запустите консоль (XTERM).

    4. Изучите справку по команде uname. Определите тип и версию операционной системы.

    5. Определите системные дату и время.




    1. С помощью команды aproposworking directory изучить основные команды работы с рабочим каталогом.

    2. Изучите руководство по команде ls.

    3. Просмотрите содержимое корневого каталога файловой системы в нескольких форматах и объясните полученный результат:

  • осуществить просмотр с выводом файлов в несколько колонок без детальной информации о файлах;

  • осуществить просмотр в длинном формате (с указанием режима доступа, именем владельца и группы и датой последней модификации) с выдачей размера файлов в блоках;

  • осуществить просмотр в свободном формате - имена файлов должны выводится через запятую.

    1. Просмотрите содержимое каталога /dev.

    2. Создайте в домашнем каталоге структуру каталогов как показано на рисунке



    1. В каталог SYS скопируйте несколько файлов из каталога /bin, в CONFIG — несколько файлов и из каталога /etc, в DOC — произвольный файл, в WORK — его копию.

    2. Выведите содержимое каталогов.

    3. Удалите рекурсивно каталог TXT.




    1. В домашнем каталоге создайте каталог lab и перейдите в него.

    2. Скопируйте в текущий каталог несколько файлов, например, несколько текстовых файлов настроек из каталога /etc (например, конфигурационных).

    3. Выведите на экран и просмотрите один из скопированных текстовых файлов.

    4. Cкопируйте с консоли текстовый файл с расширением inf. В него запишите номер группы, фамилию, имя. Сохраните файл в домашнем каталоге.

    5. Скопируйте этот файл под другим именем.

    6. Переименуйте копию так, чтобы она имела расширение txt.




    1. С помощью текстового редактора откройте файл с личной информацией (п. 3.5) в каталоге ROOT/WORK и допишите информацию о версии операционной системы. Сохраните файл.

    2. С помощью команд перенаправления ввода/вывода несколько раз скопируйте информацию из созданного файла в новый файл так, чтобы количество строк составило не менее 20.

    3. Из созданного файла выведите строки, содержащие BSD.
скачать файл



Смотрите также:
Лабораторная работа №7 Основы работы с unix-подобными системами
249.61kb.
Лабораторная работа №1 по курсу «Системное программное обеспечение»
23.17kb.
Лабораторная работа №3 Управление данными
343.45kb.
Лабораторная работа №29 исследование электрических затухающих колебаний
41.47kb.
Лабораторная работа №5 «Изучение деления ядра атома урана по фотографии треков»
51.65kb.
Рабочей программы дисциплины “Теория управления распределенными системами”
23.06kb.
Лабораторная работа №1. Обработка данных
70.15kb.
Лабораторная работа по курсу метрологии
141.86kb.
Лабораторная работа №3. Вычисления в табличном процессоре Excel
38.95kb.
Учебная программа Дисциплина Основы ведения научно-методической и научно- исследовательской работы. Специальность 033200 Иностранный язык
79.04kb.
4 теплоизоляционные материалы 1 лабораторная работа №6 Методы испытаний различных теплоизоляционных материалов
133.42kb.
Лабораторная работа №1. Выполнение упражнений на создание статической и динамической композиции в программах обработки графической информации
91.8kb.