Man pages на русском

         

PRINTF(3S)


НАЗВАНИЕ

printf, fprintf, sprintf, snprintf, asprintf, vprintf, vfprintf, vsprintf, vsnprintf, vasprintf - вывод с преобразованием по формату

СИНТАКСИС

#include <stdio.h>

int printf (format, val ...) char *format;

int fprintf (stream, format, val ...) FILE *stream; char *format;

int sprintf (s, format [, val] ...) char *s, *format;

int snprintf(char *str, size_tsize, const char *format, ...)

int asprintf(char **ret, const char *format, ...)

#include <stdarg.h>

int vprintf(const char *format, va_list ap)

int vfprintf(FILE *stream, const char *format, va_list ap)

int vsprintf(char *str, char *format, va_list ap)

int vsnprintf(char *str, size_t size, const char *format, va_list ap)

int vasprintf(char **ret, const char *format, va_list ap)

ОПИСАНИЕ

Функция printf направляет данные в стандартный поток вывода stdin. Функция fprintf направляет данные в поток вывода, заданный аргументом stream. Функция sprintf направляет данные, заканчивающиеся пустым символом (\0), в массив s; пользователь должен позаботиться о выделении достаточного количества памяти для массива. Каждая функция возвращает число переданных символов (не считая пустого в случае sprintf), или отрицательное число, если при выводе обнаружилась ошибка.

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

Каждый спецификатор преобразования начинается символом %, после которого последовательно записываются:

Флаги (один, несколько или ни одного), которые уточняют смысл спецификации преобразования. Необязательная последовательность десятичных цифр, задающая минимальную ширину поля, в котором изображается результат преобразования. Если результат может быть изображен меньшим количеством символов, то поле дополняется слева (или справа, если задан флаг выравнивания по левой границе) пробелами до минимальной ширины; если последовательность, задающая ширину поля, начинается нулем, то для дополнения используются нули. Точность, задающая минимальное количество цифр в изображении результата преобразования типа d, i, o, u, x, X, количество цифр после десятичной точки в изображении результата преобразования типа e, E, f, максимальное количество значащих цифр в изображении результата преобразования типа g, G, или максимальное количество символов в изображении результата преобразования типа s. Точность записывается в виде точки (.), за которой следует несколько десятичных цифр; отсутствие цифр интерпретируется как ноль. Дополнение результата символами, обусловленное точностью, подавляет дополнение, обусловленное шириной поля. Необязательный символ l, означающий, что относящиеся к нему преобразования d, i, o, u, x, X применяются к целым выводимым значениям типа long. Для остальных преобразований символ l игнорируется. Символ, обозначающий тип преобразования.


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

Флаги и их смысл:
- Выравнивание результата преобразования по левой границе. + Обязательное изображение знака (для чисел со знаком). пробел Если первый символ результата преобразования со знаком отличен от + и -, то изображение результата предваряется пробелом. Тем самым флаг + аннулирует действие флага пробел. # Этот флаг означает, что значение преобразуется к "альтернативной форме". Для преобразований c, d, i, s, u этот флаг не имеет значения. Для преобразования типа o результат изображается с увеличенной точностью, с тем чтобы первая цифра результата была нулем. Для преобразований типа x, X ненулевой результат будет изображаться с префиксом 0x или 0X. Для преобразований типа e, E, f, g, G результат обязательно изобразится с десятичной точкой, даже если за ней нет цифр (обычно точка в этом случае опускается). Для преобразований g, G не подавляются незначащие хвостовые нули (что обычно делается).

Символы, обозначающие тип преобразования, и их смысл:
d, i, o, u, x, X Целое выводимое значение преобразуется в десятичное со знаком (d, i), беззнаковое восьмеричное (o), десятичное (u) или шестнадцатеричное (x, X); буквы abcdef изображают шестнадцатеричные цифры при преобразовании x, а ABCDEF - при преобразовании X. Точность задает минимальное количество цифр в изображении результата; если результат можно изобразить меньшим количеством цифр, то слева добавляются незначащие нули. Значение точности по умолчанию равно 1. Результат преобразования нуля с нулевой точностью - пустая цепочка. f Выводимое значение типов float или double преобразуется в десятичное число и изображается в виде [-]ddd.ddd, где число цифр после точки определяется точностью. Если точность опущена, то считается, что она равна 6; если точность равна нулю, точка не печатается. e, E Выводимое значение типов float или double преобразуется в десятичное число и изображается в виде [-]d.ddde+/-dd, где перед точкой находится ровно одна цифра, а число цифр после точки определяется точностью; по умолчанию точность равна 6; если точность равна нулю, точка не печатается. Спецификация E отличается от e только обозначением порядка (E вместо e). Порядок всегда содержит по крайней мере две цифры. g, G Выводимое значение типов float или double преобразуется в десятичное число и изображается либо в формате f, либо в формате e (или E, если задана спецификация G); точность определяется числом значащих цифр. Вид изображения зависит от значения аргумента: вид e используется только в том случае, если порядок меньше -4 или больше значения точности. Хвостовые незначащие нули подавляются; десятичная точка печатается, только если за ней есть цифры. c Печатается значение-символ. s Выводимое значение, заданное указателем, рассматривается как цепочка символов, ограниченная пустым символом (\0); печать цепочки прекращается либо по ограничителю, либо после вывода количества символов, равного значению точности. По умолчанию точность считается бесконечно большой; в этом случае цепочка печатается до тех пор, пока не встретится ограничитель. Пустой указатель (NULL) дает непредсказуемые результаты. % Печать символа %; выводимых значений не требуется.


SCANF(3S)


НАЗВАНИЕ

scanf, fscanf, sscanf - ввод с преобразованием по формату

СИНТАКСИС

include <stdio.h>

nt scanf (format [, pointer] ...) har *format;

nt fscanf (stream, format [, pointer] ...) ILE *stream; har *format;

nt sscanf (s, format [, pointer] ...) har *s, *format;

ОПИСАНИЕ

Функция scanf читает данные из стандартного потока ввода stdin. Функция fscanf читает данные из потока ввода, заданного аргументом stream. Функция sscanf читает цепочку символов с адресом s. Каждая из перечисленных функций вводит символы, интерпретирует их в соответствии с форматом и записывает по указанным адресам. Аргументами функций являются: format - формат, управляющий преобразованием, и pointers - указатели на области памяти, куда следует помещать результаты преобразований. Если для заданного формата не хватает указателей, результат непредсказуем; если же указателей слишком много, лишние просто игнорируются.

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

Пробельные символы (собственно пробел, табуляция, перевод строки, переход к новой странице), которые (за исключением двух описанных ниже случаев) вызывают чтение до следующего непробельного символа. Обычный символ (не %), который должен совпадать со следующим символом потока ввода. Спецификаторы преобразований, состоящие из символа %, необязательного символа подавления присваивания *, необязательного числа, задающего максимальную ширину поля в потоке ввода, необязательного символа l или h, указывающего размер переменной, получающей значение, а также кода преобразования.

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

Код преобразования определяет способ интерпретации входного поля; соответствующий аргумент-указатель, как правило, должен иметь соответствующий тип. Для пропускаемых полей указатель не задается. Распознаются следующие коды преобразований:

% Из потока ввода должен быть прочитан единственный символ %; никаких присваиваний не выполняется. d Из потока ввода должно быть прочитано целое десятичное число; соответствующий аргумент должен быть указателем на целое. u Из потока ввода должно быть прочитано целое десятичное без знака; соответствующий аргумент должен быть указателем на целое без знака. o Из потока ввода должно быть прочитано целое восьмеричное число; соответствующий аргумент должен быть указателем на целое. x Из потока ввода должно быть прочитано целое шестнадцатеричное число; соответствующий аргумент должен быть указателем на целое. i Из потока ввода должно быть прочитано целое число; соответствующий аргумент должен быть указателем на целое. Значение числа вычисляется в соответствии с соглашениями языка C: префикс 0 обозначает восьмеричное число, префикс 0x - шестнадцатеричное, отсутствие префикса - десятичное. n Общее количество символов (включая пробельные), прочитанных с начала выполнения функции, запоминается в очередной переменной из списка аргументов. Из потока ввода ничего не читается. e, f, g

Из потока ввода должно быть прочитано число с плавающей точкой; оно представляет собой последовательность цифр с необязательным знаком, необязательной десятичной точкой и необязательным порядком; порядок обозначается буквой e или E, за которой может следовать +, - или пробел, а затем - целое число. Соответствующий аргумент должен быть указателем на переменную типа float. s Из потока ввода должна быть прочитана цепочка символов; соответствующий аргумент должен быть указателем на символьный массив достаточной длины, чтобы в нем поместились вводимые данные с завершающим пустым символом \0, который добавляется автоматически. Признак конца входного поля - пробельный символ. c Из потока ввода должен быть прочитан единственный символ; соответствующий аргумент должен быть указателем на символ. Обычный пропуск пробельных символов в этом случае не производится; для чтения ближайшего непробельного символа нужно задать спецификатор %1s. Если задана ширина поля, то соответствующий аргумент должен указывать на символьный массив; в этом случае вводится заданное количество символов. [ Входные данные обрабатываются особым образом. За открывающей скобкой следует ряд символов, которые называются шаблоном сканирования, а затем закрывающая скобка; входное поле представляет собой максимальный участок потока ввода, состоящий исключительно из символов шаблона. Если первым символом шаблона является ^, это означает, что входное поле представляет собой максимальный участок потока ввода, содержащий любые символы кроме перечисленных в шаблоне. Шаблон сканирования записывается по определенным правилам. Несколько символов можно задать конструкцией первый-последний; таким образом, ряд [0123456789] можно изобразить как [0-9]. При использовании этого правила первый должен быть лексикографически меньше или равен последнему, иначе минус рассматривается как обычный символ шаблона. Минус рассматривается как обычный символ, если он находится на первом или на последнем месте в шаблоне. Если в шаблон нужно включить закрывающую скобку, то она должна быть самым первым символом шаблона (возможно, с предшествующим ^), в противном случае она рассматривается как ограничитель шаблона. Соответствующий этому спецификатору аргумент должен быть указателем на символьный массив достаточной длины, способный вместить читаемые данные вместе с ограничителем \0, добавляемым автоматически. Это преобразование считается завершившимся успешно, если из потока ввода выбран хотя бы один символ, соответствующий шаблону. <


/p>

Кодам преобразований d, u, o, x, i может предшествовать символ l или h, означающий, что соответствующий аргумент указывает на переменную типа long или short, а не int. Аналогично, кодам e, f, g может предшествовать символ l, означающий, что соответствующий аргумент указывает на переменную типа double, а не float. Для остальных кодов преобразований модификаторы l и h игнорируются.

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

Функция scanf возвращает число успешно введенных и преобразованных величин; это число может оказаться нулем, если слишком рано обнаружилось несоответствие с форматом. Если ввод закончился без конфликтов и преобразований, результат равен EOF.

ПРИМЕРЫ



В результате вызова

nt n; float x; char name[50]; = scanf("%d%f%s", &i, &x, name);

при наличии во входном потоке символов

5 54.32E-1 Bill

будет присвоено: переменной n - значение 3, переменной i - значение 25, переменной x - значение 5.432, а в массив name будет занесено Bill\0. После вызова

nt i,j; float x; char name[50]; void)scanf("%i%2d%f%*d %[0-9]", &j, &i, &x,name);

при наличии во входном потоке символов

11 56789 0123 56a72

будет присвоено: переменной j - значение 9, переменной i - значение 56, переменной x - значение 789., последовательность 0123 будет пропущена, а в массив name будет занесено 56\0. Если после этого вызова последует вызов getchar [см. ], то будет прочитан символ a. В результате вызова

nt i, j, s, e; char name[50]; void)scanf("%i %i %n%s%n", &i, &j, &s, name, &e);

при наличии во входном потоке

x11 0xy johnson

будет присвоено: переменной i - значение 17, переменной j - значение 0, переменной s - значение 6, в массив name будет занесено xy\0, а переменной e присвоено значение 8. Таким образом, длина заполненной части массива name равна e - s = 2. При следующим за этим вызове getchar [см. ] будет прочитан пробел.

СМ. ТАКЖЕ

, , , , .

ДИАГНОСТИКА

Описанные функции возвращают значение EOF при исчерпании потока ввода, или число успешно введенных и преобразованных величин.

СЮРПРИЗЫ

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








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VAL(1)


НАЗВАНИЕ

val - проверка корректности SCCS-файла

СИНТАКСИС

val - val [-s] [-rс_идентификатор] [-mимя] [-yтип] файл ...

ОПИСАНИЕ

Команда val определяет, является ли указанный файл SCCS-файлом с атрибутами, соответствующими указанным. Опции могут задаваться в любом порядке.

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

Команда val выдает диагностические сообщения на стандартный вывод для каждой командной строки и для каждого обрабатываемого файла, а также возвращает 8-битный код завершения, описанный ниже.

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

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

-rс_идентификатор

Значение аргумента - с_идентификатор версии в SCCS-файле. Выполняется проверка того, что с_идентификатор неоднозначен (как, например, -r1, поскольку при отсутствии версии 1 могут существовать версии 1.1, 1.2 и т.д.) или некорректен (как, например, -r1.0 или -r1.1.0, поскольку содержит некорректный номер ветви). Если с_идентификатор однозначен и корректен, проверяется его существование.

-mимя

Значение аргумента имя сравнивается со значением ключевого слова %M% в SCCS-файле.

-yтип

Значение аргумента тип сравнивается со значением ключевого слова %Y% в SCCS-файле.

КОД ЗАВЕРШЕНИЯ

8-битный код, возвращаемый командой val, является об единением возможных ошибок, то есть может быть проинтерпретирован как шкала, в которой каждый бит, равный 1, означает следующее (слева направо):

0. Опущен аргумент файл. 1. Неизвестный или несколько раз повторенный флаг. 2. Поврежден SCCS-файл. 3. Файл не открывается или не является SCCS-файлом. 4. С_идентификатор некорректен или неоднозначен. 5. С_идентификатор не существует. 6. Значение %Y% не совпадает со значением опции -y. 7. Значение %M% не совпадает со значением опции -m.


Команда val может обрабатывать несколько файлов на одной командной строке или несколько командных строк (читая их со стандартного ввода). В этом случае возвращаемый код является поразрядным ИЛИ кодов для каждой командной строки и каждого обрабатываемого файла.

СМ. ТАКЖЕ

, , , , .

ДИАГНОСТИКА

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

СЮРПРИЗЫ

Команда val может обработать до 50 файлов на одной командной строке. Указание более 50 файлов приводит к аварийному завершению программы и дампу памяти.








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VALUES(5)


НАЗВАНИЕ

values - машинно-зависимые величины

СИНТАКСИС

#include <values.h>

ОПИСАНИЕ

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

Предполагаемое представление целых чисел со знаком двоичный обратный или двоичный дополнительный код со старшим знаковым битом.

BITS (тип) Количество бит, отводимых под данные указанного типа (например, int). HIBITS Целое типа short int, в старшем бите которого установлено значение 1, в остальных - 0 (для большинства реализаций это 0x8000). HIBITL Целое типа long int, в старшем бите которого установлено значение 1, в остальных - 0 (для большинства реализаций это 0x80000000). MAXSHORT Максимальное значение типа short int (для большинства реализаций это 0x7FFF=32767). MAXLONG Максимальное значение типа long int (для большинства реализаций это 0x7FFFFFFF=2147483647). MAXINT Максимальное целое число естественной для данной машины разрядности (для данной системы совпадает с MAXLONG). MAXFLOAT, LN_MAXFLOAT Максимальное вещественное число одинарной точности и его натуральный логарифм. MAXDOUBLE, LN_MAXDOUBLE Максимальное вещественное число двойной точности и его натуральный логарифм. MINFLOAT, LN_MINFLOAT Минимальное положительное вещественное число одинарной точности и его натуральный логарифм. MINDOUBLE, LN_MINDOUBLE Минимальное положительное вещественное число двойной точности и его натуральный логарифм. FSIGNIF Количество значащих бит мантиссы вещественного числа одинарной точности. DSIGNIF Количество значащих бит мантиссы вещественного числа двойной точности.

СМ. ТАКЖЕ

, .

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VARARGS(3) XENIX System V (21 июня 1987)


ИМЯ

varargs - yпpaвляeт cпиcкoм пepeмeннoй длины

СИНТАКСИС

#include <varargs.h>

function(va_alist) va_dcl va_list pvar; va_start(pvar); f=va_arg(pvar,type); va_end(pvar);

ОПИСАНИЕ

Эти мaкpocы пoзвoляют пиcaть мoбильныe пpoгpaммы, paбoтaющиe co cпиcкaми apгyмeнтoв пepeмeннoй длины. Фyнкции, кoтopым мoгyт пepeдaвaтьcя cпиcки apгyмeнтoв paзличнoй длины (нaпpимep ) и кoтopыe нe иcпoльзyют varargs, cтaнoвятcя нeпepeнocимыми, пocкoлькy cпocoб пepeдaчи apгyмeнтoв мaшиннo-зaвиcим.

Va_alist иcпoльзyeтcя в кaчecтвe пapaмeтpa фyнкции c пepeмeнным чиcлoм apгyмeнтoв и oбoзнaчaeт cпиcoк apгyмeнтoв.

Va_dcl являeтcя oпиcaтeлeм для va_alist. Пocлe нeгo нe нyжнo cтaвить тoчкy c зaпятoй.

Va_list этo тип пepeмeнныx, иcпoльзyeмыx для пepeмeннoй pvar, кoтopaя иcпoльзyeтcя для paбoты co cпиcкoм. Дoлжнa быть oпиcaнa пo мeньшeй мepe oднa тaкaя пepeмeннaя.

Va_start(pvar) вызывaeтcя для инициaлизaции pvar нa нaчaлo cпиcкa.

Va_arg (pvar,type) вoзвpaщaeт cлeдyющий apгyмeнт из cпиcкa, нa кoтopый yкaзывaeт pvar. Type являeтcя типoм oжидaeмoгo apгyмeнтa. B cпиcкe мoгyт быть cмeшaны apгyмeнты paзныx типoв, нo фyнкция дoлжнa знaть тип oчepeднoгo apгyмeнтa, тaк кaк этo нeльзя oпpeдeлить вo вpeмя выпoлнeния пpoгpaммы.

Va_end(pvar) вызывaeтcя для зaвepшeния paбoты co cпиcкoм.

B пpoгpaммe мoжeт быть нecкoлькo yчacткoв paбoты c пepeмeнным cпиcкoм apгyмeнтoв, зaключeнныx в пapы va_start ... va_end.

ПPИМEP

#include <stdio.h>

#include <varargs.h>

main() { show(2,3.1,"buf",4.1,"end"); show(1,5.9,"hello"); show(4,6.2,"oops",5.3,"blah",5.1,"lovely", 2.3,"madrigal"); }

/* Пepвый apгyмeнт имeeт тип "цeлoe" и yкaзывaeт * нa кoличecтвo пap apгyмeнтoв, кoтopыe пocлeдyют * зa ним. Этими пapaми являютcя пepeмeнныe * c плaвaющeй тoчкoй и yкaзaтeли нa cтpoки. * * Зaпoмнитe, чтo пpи пepeдaчe пepeмeнныx c * плaвaющeй тoчкoй oни пpeoбpaзyютcя в тип * double, a пepeмeнныe типa char - в тип int. */ show(n,va_alist) int n; va_dcl { va_list ap; int i; double f; char *p;

va_start(ap); for(i=0; i<n; i++) { f = va_arg(ap,double); p = va_arg(ap,char *); printf("%4.1f %s\n",f,p); } va_end(ap); }

ЗAМEЧAНИЯ

Bызывaющaя фyнкция caмa дoлжнa oпpeдeлять кoличecтвo apгyмeнтoв, тaк кaк вызывaeмaя фyнкция нe мoжeт oпpeдeлить чиcлo пepeдaнныx eй apгyмeнтoв пo cтeкy. Haпpимep, фyнкции excel пepeдaeтcя нyлeвoй yкaзaтeль в кaчecтвe пpизнaкa кoнцa cпиcкa apгyмeнтoв. Printf oпpeдeляeт чиcлo apгyмeнтoв, aнaлизиpyя фopмaтнyю cтpoкy.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VARARGS(5)


НАЗВАНИЕ

varargs - обработка списка аргументов переменной длины

СИНТАКСИС

#include <varargs.h>

va_alist

va_dcl

void va_start (pvar) va_list pvar;

тип va_arg (pvar, тип) va_list pvar;

void va_end (pvar) va_list pvar;

ОПИСАНИЕ

Данный набор макросов позволяет писать мобильные функции с переменным количеством аргументов. Функциям с переменным числом аргументов [таким как ], не использующим varargs, присуща немобильность, так как на различных компьютерах действуют различные соглашения о передаче аргументов.

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

Макрос va_dcl раскрывается в описание va_alist. За va_dcl не надо ставить точку с запятой.

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

Макрос va_start вызывается для инициализации pvar перед просмотром списка аргументов.

Макрос va_arg вернет следующий аргумент в списке, на который указывает pvar. Необходимо указывать ожидаемый тип аргумента, поскольку во время выполнения узнать его, вообще говоря, нельзя.

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

Возможен многократный просмотр списка аргументов, каждый просмотр открывается макросом va_start и завершается макросом va_end.

ПРИМЕР

Ниже приводится возможная реализация системного вызова execl(2).

#include <varargs.h> #define MAXARGS 100

/* execl вызывается следующим образом: execl (file, arg1, arg2, ..., (char *)0); */ execl(va_alist) va_dcl { va_list ap; char *file; char *args [MAXARGS]; int argno=0;

va_start(ap); file = va_arg(ap, char *); while ((args [argno++] = va_arg(ap, char *)) != (char *)0) ; va_end(ap); return execv(file, args); }

СМ. ТАКЖЕ

, , .

ПРИМЕЧАНИЯ

Способ определения числа аргументов зависит от вызываемой функции - универсального способа (например, основанного на анализе стека) не существует. Так, при вызове execl последний аргумент должен быть нулевым указателем; printf определяет количество аргументов по формату.

Было бы ошибкой задавать в качестве второго аргумента макроса va_arg типы char, short или float, так как согласно правилам языка C перед вызовом функции аргументы типов char и short приводятся к типу int, а аргументы типа float - к типу double.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VAX(1)


НАЗВАНИЕ

vax

СИНТАКСИС

vax

ОПИСАНИЕ

Код завершения команды vax равен 0 (истина), если Вы работаете на VAX-11/750 или VAX-11/780; в противном случае код завершения отличен от нуля.

СМ. ТАКЖЕ

.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VC(1)


НАЗВАНИЕ

vc - управление версиями

СИНТАКСИС

vc [-a] [-t] [-cсим] [-s] [ключевое_слово=значение ...]

ОПИСАНИЕ

Команда vc копирует строки со стандартного ввода на стандартный вывод. При этом текст в строках изменяется в соответствии с аргументами команды vc и операторами, встретившимися в стандартном вводе. Во время копирования об явленные ключевые_слова, обнаруженные в обычном тексте и/или операторах, могут быть заменены на их значения.

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

Если в команде vc не указана опция -t (см. ниже), то оператором считается строка, начинающаяся с управляющего символа. По умолчанию управляющим символом является двоеточие (:); с помощью опции -c (см. ниже) управляющий символ можно сменить. Строка, начинающаяся с символа \, за которым следует управляющий символ, не является оператором и копируется на стандартный вывод без \. Если строка начинается с символа \, за которым следует не управляющий символ, то она копируется целиком.

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

Замена ключевого слова его значением происходит всякий раз, когда окруженное управляющими символами ключевое слово встречается в операторе. Чтобы ключевые слова заменялись на их значения во всех строках, нужно указать опцию -a. Неинтерпретируемый управляющий символ может быть включен в значение ключевого слова; для этого нужно перед ним поместить символ \. Если требуется включить сам символ \, его следует повторить дважды.

Допустимые опции:

-a Принудительная замена ключевых слов, окруженных управляющими символами, на их значения не только в операторах, но и во всех текстовых строках. -t При поиске управляющего символа все символы от начала строки до первого символа табуляции включительно игнорируются. Если далее идет управляющий символ, часть строки до него, включая символ табуляции, отбрасывается. -cсим Задание другого управляющего символа вместо двое точия. -s Подавляются сообщения-предупреждения (не ошибки), выдаваемые в стандартный протокол.


Операторы управления версиями (или просто операторы):

:dcl ключевое_слово[,...ключевое_слово]

Об явление ключевых слов. Все используемые ключевые слова должны быть об явлены.

:asg ключевое_слово=значение

Присваивание нового значения ключевому_слову. Старое значение, указанное в командной строке vc или предыдущих операторах, пропадает. Об явленные ключевые слова, которым ничего не присваивалось, имеют пустое значение.

:if условие
...
:end

Используется для того, чтобы пропускать строки в стандартном вводе. Если условие истинно, то все строки между if и соответствующим end копируются на стандартный вывод. Если условие ложно, то промежуточные строки, в том числе и операторные, пропускаются. Заметим, что все внутренние if и end распознаются исключительно для того, чтобы отслеживать правильность соответствия между if и end. Синтаксис условия:

<усл> ::= ["not"] <или>

<или> ::= <и> | <и> "|" <или>

<и> ::= <выр> | <выр> "&" <и>

<выр> ::= "(" <или> ")" | <знач> <оп> <знач>

<оп> ::= "=" | "!=" | "<" | ">" <знач> ::= <цепочка произвольных символов> | <цепочка цифр>

Допустимые знаки операций и их смысл:

= равно != не равно & и | или > больше < меньше ( ) группировка not может встречаться только сразу после if; инвертирует значение всего условия.

Операндами операций > и < могут быть только целые без знака. Например, результатом сравнения 012 >

12 будет ложь. Операнды всех остальных операций рассматриваются как цепочки символов. Например, результатом сравнения 012 != 12 будет истина. Приоритет операций (в порядке убывания):

= != > < равный приоритет & |

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

::текст



Если в начале строки, копируемой в стандартный вывод, находятся два управляющих символа, то замена ключевых слов на значения будет произведена в тексте независимо от того, указана опция -a в команде vc или нет. При копировании первые два управляющих символа удаляются.

:on
:off Включает или выключает замену ключевых слов во всех строках.

:ctl сим

Изменяет управляющий символ на сим.

:msg сообщение

Выдает указанное сообщение в стандартный протокол.

:err сообщение

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

ERROR: сообщение ERROR: err statement on line ... (vc15)

Выполнение команды vc прекращается, код завершения равен 1.

СМ. ТАКЖЕ

, .

КОДЫ ЗАВЕРШЕНИЯ

0 Ошибок не было. 1 Зафиксированы ошибки.

ДИАГНОСТИКА

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








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VCP(1)


НАЗВАНИЕ

vcp, vls, vcat, vrm, minit - работа с дискетами операционной системы PDOS
vcp - копировать файлы на(с) дискету(ы).
vls - показать каталог дискеты.
vcat - показать файлы, удовлетворяющие шаблону и принадлежащие определенному уровню.
vrm - удалить специфицированные в командной строке файлы.
minit - инициализировать (не форматировать, а создать файловую систему) дискету.

СИНТАКСИС

vcp -o [-c] [-l уровень] [-a AC|BN|OB|SY|BX|EX|TX|DR|]файл1 [файл2 ...] vcp -i [-c] [-l уровень] шаблон1 [шаблон2...]имя_каталога vls [-sn|l|s] [-l уровень] [шаблон] vcat [-l уровень] шаблон vrm [-l уровень] файл1 [файл2...] minit [имя_диска]

ОПИСАНИЕ

Программа vcp копирует файлы с дискеты или на дискету, в зависимости от первой опции (-i или -o). При любом копировании могут выдаваться необязательные опции -c и -l. Если указана опция -c, то при копировании с дискеты все символы CR заменяются на NL, а при копировании на дискету все символы NL преобразуются в CR. Преобразованию подвергаются только файлы, имеющие атрибуты AC, TX и EX. Опция -l задает уровень, на котором находится копируемый файл. В случае использования опции -i последний аргумент означает имя каталога UNIX-а, куда будут копироваться файлы. Использование опции -a позволяет указать атрибут файла. Значение по умолчанию для атрибута файла - TX.

Программа vls изображает каталог PDOS-ой дискеты. Опция -s задает способ сортировки файлов, где n означает сортировку по имени, l - по номеру уровня и s - по размеру. При указании опции -l будут показаны только файлы, находящиеся на данном уровне. Так как командный интерпретатор shell заменяет мета-символы '*' и '?' на удовлетворяющие шаблону файлы в рабочем каталоге, то может понадобиться средство отмены назначения этих специальных символов с помощью '\'.

Программа vcat показывает файлы, удовлетворяющие данному шаблону и при задании уровня - находящиеся на указанном уровне. Текстовые файлы преобразуются по принятым в UNIX-е соглашениям.

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

Программа minit инициализирует дискету для операционной системы PDOS. Также можно задать необязательное имя дискеты. Дискета должна быть предварительно отформатирована с 256 байтами/сектор ( команда "format /dev/dsk/fd256" ).

ПРИМЕРЫ


vcp -i -c \* /tmp

Скопировать все файлы с дискеты в каталог /tmp, преобразовав при этом ASCII файлы (файлы с атрибутами AC, TX, EX).

vls -l 1 -ss *:C

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

vcat \*

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

vrm *:C

Удалить на дискете все файлы с расширением :C.

vcp -o -a SY *

Скопировать все файлы текущего каталога на дискету и присвоить им атрибут файла SY.

ФАЙЛЫ

/dev/rdsk/fd256 /dev/dsk/fd256









Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VI(1)


ИМЯ

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

СИНТАКСИС

vi [option...] [command...] [filename...] view [option...] [command...] [filename...] vedit [option...] [command...] [filename...]

ОПИСАНИЕ

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

Команда view аналогична vi, за исключением того, что автоматически устанавливается опция "только чтение" (-R). При использовании view файл изменяться не может.

Команда vedit аналогична vi, за исключением различия в установках опций. vedit использует режим novice, включает опцию magic, устанавливает опцию report=1, вызывает showmode и устанавливает redraw.

Опция showmode информирует пользователя vedit об используемом им режиме, выводя сообщение в нижнем правом углу экрана. Например, после использования команды ESC-i будет напечатано предложение "INSERT MODE" (режим вставки).

Необходимо отметить, что вы не можете установить опцию novice из пределов vi или ex. Если вы хотите использовать опцию novice, вы должны использовать утилиту vedit. (Существует возможность устанавливать опцию nonovice из пределов vedit).

vi и строковый редактор ex - это один и тот же редактор: имена vi и ex идентифицируют скорее особый пользовательский интерфейс чем функциональное различие. Различие в пользовательском интерфейсе, однако, совершенно поразительное. ex - мощный строчно-ориентированный редактор, схожий с редактором ed. Однако, и в 'ex', и в 'ed' визуальная корректировка экрана терминала ограничена, а команды вводятся с командной строки. С другой стороны, vi - это экранно-ориентированный редактор, устроенный таким образом, где то, что вы видите на экране, точно соответствует содержимому файла, который вы редактируйте.

В командной строке vi допустимы следующие опции:

-t Эквивалент первоначальной команды tag; редактирует файл, содержащий признак tag (тег), и устанавливает редактор согласно определению этого признака. -r Используется при восстановлении, когда имело место повреждение редактора или всей системы, отыскивает последнюю сохраненную версию указанного файла. Если файл не определен, то эта опция выводит список сохраненных файлов. -l Специфическая для редактирования LISP, эта опция устанавливает опции showmatch и lisp. -Wn По умолчанию устанавливает "окно" размером 'n'. Чрезвычайно удобно в наборных устройствах, чтобы начинать работу в малом окне. -R Устанавливает опцию "только чтение", при этом файлы могут только просматриваться, но не редактироваться. <


/p>

БУФЕР РЕДАКТИРОВАНИЯ

vi не выполняет никаких операций редактирования над указанным вами файлом. Вместо этого он работает с копией вашего файла, которая находится в буфере редактирования.

Когда вы активизируйте vi с одним аргументом - именем файла, этот файл копируется во временной буфер редактирования. Редактор запоминает имя файла, определенного при вызове, таким образом, что позднее он может скопировать содержимое буфера редактирования обратно в указанный файл. Содержимое заданного файла не изменяется до тех пор, пока все изменения не будут скопированы обратно в первоначальный файл.

РЕЖИМЫ РАБОТЫ

Внутри vi существует три отдельных режима:

Режим команды: в этом режиме сигнал с клавиатуры интерпретируется как команда редактирования.

Режим вставки: перейти в этот режим можно набором любых команд вставки, присоединения, открытия, подстановки, изменения или замещения, имеющихся в vi. В этом режиме символы, набранные на клавиатуре, вставляются в буфер редактирования.

Режим переключения в 'ex': редакторы vi и ex почти одинаковы. отличаясь, в основном, только пользовательским интерфейсом. В vi команды - это одиночные клавиши. В ex командами являются строки текста, завершенные нажатием клавиши RETURN. vi имеет специальную команду "escape", которая позволяет перейти к большинству строчно-ориентированных команд редактора ex. Для использования режима переключения в ex наберите символ ':'. Этот символ отобразится в командной строке как указатель на следующую команду редактора ex. Выполняемая команда может быть прервана нажатием клавиши INTERRUPT. Большинство команд обработки файла выполняется в режиме переключения в ex (например, команды чтения из файла и записи из буфера редактирования обратно в файл).

СПЕЦИАЛЬНЫЕ КЛАВИШИ

В редакторе vi существует несколько специальных клавиш. Следующие клавиши используются для редактирования, ограничения или прерывания команд и командных строк:
ESC Используется для возврата в режим команды vi или для отмены неполностью набранной команды. RETURN Завершает команды ex в режиме переключения в ex. Также используется для начала новой строки в режиме вставки. INTERRUPT Часто то же самое, что и клавиша DEL или RUBOUT во многих терминалах. Генерирует прерывание, выдавая редактору указание на остановку текущей работы. Используется для прекращения любой выполняемой команды. / Используется для определения строки, по которой осуществляется поиск. Знак "косая черта" появляется в строке состояния как указатель на шаблон поиска. Знак вопроса '?' работает также, только поиск в файле ведется назад (т.е. в обратном направлении). : Двоеточие является указателем на команду редактора ex. После него вы можете набрать любую команду редактора ex, затем нажать клавишу ESC или RETURN, после чего заданная команда будет выполнена. <



/p>

В режиме вставки могут использоваться следующие символы:
BKSP В текущей строке возвращает курсор назад на один символ. Последний символ, набранный перед BKSP, удаляется из входного буфера, но остается на экране дисплея. Ctrl-U Перемещает курсор назад на первый символ вставки или перезапускает ввод. Ctrl-V Удаляет специальное значение следующего набранного символа. Используйте Ctrl-V для вставки управляющих символов. Символы "перевод строки" и Ctrl-J не могут быть вставлены в текст иначе, как символы "новая строка". Ctrl-Q и Ctrl-S захватываются операционной системой перед тем, как будут обработаны редактором vi, поэтому они тоже не могут быть вставлены как текст. Ctrl-W Перемещает курсор назад на первый символ последнего вставленного слова. Ctrl-T При вводе, с установкой опции autoindent и в начале текущей строки введение этого символа обеспечит вставку пустого пространства размером shiftwidth. Ctrl-@ Введенный в качестве первого символа при вводе, он заменяется на последний вставленный текст, и ввод прекращается. Из последней вставки запоминается только 128 символов. Если было вставлено более 128 символов, то эта команда символы не вставляет. Символ Ctrl-@ не может находиться в файле, даже заключенный в кавычки.

НАЧАЛО РАБОТЫ И ВЫХОД ИЗ РЕДАКТОРА VI

Для входа в редактор vi наберите:
vi Редактирует пустой буфер редактирования vi file Редактирует указанный файл vi +123 file Переходит на строку с номером 123 vi +45 file Переходит на строку с номером 45 vi +/word file Ищет первое вхождение слова "word" vi +/tty file Ищет первое вхождение слова "tty"

Существует несколько путей выхода из редактора vi:
ZZ Содержимое буфера редактирования записывается в файл только при условии, что были сделаны какие-либо изменения. :x Содержимое буфера редактирования записывается в файл только при условии, что были сделаны какие-либо изменения. :q! Отменяет сеанс редактирования. Восклицательный знак указывает редактору vi на необходимость безусловного выхода. В этом случае содержимое буфера редактирования не переписывается.



КОМАНДЫ РЕДАКТОРА VI

vi - это визуальный редактор с "окном" в редактируемом файле. То, что вы видите на экране, является представлением редактора vi содержимого файла. Команды не вызывают никаких изменений на экране, пока не будет нажата команда исполнения. Большинство команд могут использовать счетчик, стоящий перед ними и показывающий число повторов команды. Этот параметр в следующих описаниях команд не задан, но он подразумевается, если не отвегнут каким-нибудь стоящим перед ним аргументом. Когда редактор vi получает команду неправильного формата, он сигнализирует об этом звонком.

ПЕРЕМЕЩЕНИЕ КУРСОРА

Клавиши управления курсором позволяют вам перемещать ваш курсор по файлу. Следует отметить, в частности, клавиши направления (если они имеются на вашем терминале), клавиши управления курсором H, J, K, L и SPACEBAR, BKSP, Ctrl-N и Ctrl-P. Эти три набора клавиш выполняют одинаковые функции.

Forward Space (Перемещение вперед): I, SPACEBAR, клавиша перемещения вправо. Синтаксис: I
SPACEBAR
Клавиша перемещения вправо Функция: Перемещает курсор на один символ вперед. Если задан счетчик, то перемещает вперед на указанное число символов. Вы не можете переместиться за предел конца строки.

Backspace (Перемещение назад): h, BKSP, клавиша перемещения влево. Синтаксис: h
BKSP
Клавиша перемещения влево Функция: Перемещает курсор на один символ назад. Если задан счетчик, то перемещает назад на указанное число символов. Вы не можете переместиться за предел начала строки.

Next Line (Следующая строка): +, RETURN, Ctrl-N, LF. Синтаксис: +
RETURN Функция: Перемещает курсор вниз на начало следующей строки. Синтаксис: j
Ctrl-N
LF
Клавиша перемещения вниз Функция: Перемещает курсор вниз на одну строку, оставляя его в прежней колонке. Обратите внимание на различие между этими командами и предыдущим набором команд (+, RETURN), которые перемещают курсор на НАЧАЛО cледующей строки.

Previous Line (Предыдущая строка): -, k, Ctrl-P, клавиша перемещения вверх. Синтаксис: k
Ctrl-P
Клавиша перемещения вверх Функция: Перемещает курсор на одну строку вверх, оставляя его в прежней колонке. Если задан счетчик, то курсор перемещается на указанное число строк. Синтаксис: Функция: Перемещает курсор на начало предыдущей строки. Если задан счетчик, то курсор перемешается на указанное число строк.



Beginning of Line (Начало строки): O, ^. Синтаксис: ^
O Функция: Перемещает курсор на начало текущей строки. Обратите внимание, что 'O' всегда возвращает курсор на первый символ текущей строки. Знак '^' работает несколько иначе: он перемещает курсор на первый символ строки, который не является меткой табуляции или пробелом. Это очень удобно при редактировании файла, имеющего большое число абзацев, например, текста программы.

End of Line (Конец строки): $ Синтаксис: $ Функция: Перемещает курсор в конец текущей строки. Обратите внимание, что курсор находится над последним символом в строке. Если задан счетчик, то курсор перемещается на (счетчик-1)-строк вперед в конец строки.

Goto Line (Перейти к строке): G Синтаксис: G Функция: Перемещает курсор на начало строки с номером linenumber. Если аргумент line number не задан, то курсор перемещается на начало последней строки файла. Для определения номера текущей строки нажмите Ctrl-G.

Column (Колонка): | Синтаксис: | Функция: Перемещает курсор в текущей строке в позицию с номером column. Если этот аргумент не задан, то курсор перемещается в первую позицию текущей строки.

Word Forward (Перемещение вперед на слово): w, W. Синтаксис: w
W Функция: Перемещает курсор вперед на начало следующего слова. Команда 'w' ищет слово, определенное как строку буквенно-числовых символов, разделенных пунктуацией или пустым пространством (например, метка табуляции, символ новой строки или пробел). Команда 'W' ищет слово, определенное как строку непустых символов.

Back Word (Перемещение назад на слово): b, B. Синтаксис: b
B Функция: Перемещает курсор назад на начало текущего слова. Команда 'b' ищет слово, определенное как строку буквенно-числовых символов, разделенных пунктуацией или пустым пространством (например, метки табуляции, символы новой строки или пробелы). Команда 'B' ищет слово, определенное как строку непустых символов. Если курсор уже находится внутри слова, то он перемещается назад, на начало этого слова.

End (Конец): e, E. Синтаксис: e
E Функция: Перемещает курсор в конец слова. Команда 'e' перемещает курсор на последний символ слова, где слово определено как строка буквенно-числовых символов, разделенных пунктуацией или пустым пространством (например, метки табуляции, символы новой строки или пробелы). Команда 'E' перемещает курсор на последний символ слова, где слово определено как строка непустых символов. Если курсор уже находится внутри слова, то он перемещается на конец этого слова.



Sentence (Предложение): (, ). Синтаксис: (
) Функция: Перемещает курсор в начало (левая скобка) или в конец предложения (правая скобка). Предложение определено как последовательность символов, заканчивающаяся точкой (.), знаком вопроса (?) или восклицательным знаком (!) и следующими за ними двумя пробелами или символами новой строки. Предложение начинается с первого непустого символа, за которым следует все предложение. Предложение также ограничено параграфом или разделителями разделов. Смотрите ниже.

Paragraph (Параграф): {, }. Синтаксис: {
} Функция: Перемещает курсор на начало ({) или конец (}) параграфа. Параграф определен опцией paragraph. По умолчанию параграфы разделены макросами команды nroff - '.IP', '.LP', '.P', '.QP', '.bp'. Параграфы также начинаются после пустых строк.

Section (Раздел): [[, ]]. Синтаксис: [[
]] Функция: Перемещает курсор на начало ([[) или конец (]]) раздела. Раздел определен опцией section. По умолчанию разделы разделены макросами команды nroff - '.NH', '.SH'. Разделы также начинаются с символов "прогон страницы" (Ctrl-L) и со строк, начинающихся со знака ({).

Match Delimiter (Согласующий разделитель): %. Синтаксис: % Функция: Перемещает курсор на согласующий разделитель, которым могут быть круглая, операторная или фигурная скобки. Это очень удобно при согласовании пар вложенных круглых, операторных и фигурных скобок.

Home (Возврат на исходное место): H. Синтаксис: [offset] H Функция: Перемещает курсор в верхний левый угол экрана. Используйте эту команду для быстрого перемещения наверх экрана. Если задан параметр offset, то курсор возвращается на (offset-1)-линий от вершины экрана. Необходимо отметить, что команда 'dH' уничтожает все строки от текущей строки до верхней строки, показанной на экране.

Middle Screen (Середина экрана): M. Синтаксис: M Функция: Перемещает курсор на начало средней линии экрана. Используйте эту команду для быстрого перемещения курсора в середину экрана сверху или снизу экрана. Необходимо отметить, что команда 'dM' удаляет все строки, от текущей до выбранной командой 'M'.



Lower Screen (Низ экрана): L. Синтаксис: [offset] L Функция: Перемещает курсор на нижнюю строку экрана. Используйте эту команду для быстрого перемещения в нижнюю часть экрана. Если задан параметр offset, то курсор возвращается на (offset-1)-линий от самого низа экрана. Необходимо отметить, что команда 'dL' уничтожает все линии, от текущей до нижней линии, показанной на экране.

Previous Context (Предыдущий контекст): ", ". Синтаксис: "
'character (символ)
"
'character (символ) Функция: Перемещает курсор на предыдущий контекст или на контекст, отмеченный командой 'm'. Если одиночная кавычка или обратная кавычка сдвоена, то курсор перемещается на предыдущий контекст. Если после такой же кавычки задан одиночный символ, то курсор перемещается в место расположения указанной кавычки, как определенной командой 'm'. Предыдущий контекст - это место в файле последнего несвязанного (nonrelative) перемещения курсора. Одиночная кавычка (') используется для перемещения на начало начало строки, представляющей предыдущий контекст. Обратная кавычка (') используется для перемещения к предыдущему контексту внутри строки.

КОМАНДЫ ЭКРАНА

Команды экрана не являются командами управления перемещением курсора и не могут использоваться в командах удаления как разграничители объектов текста. Однако команды экрана осуществляют перемещение текста и очень удобны для страничной организации или "прокрутки" информации из файла на экране дисплея. Эти команды описаны ниже.

Scroll (Прокрутка): Ctrl-U, Ctrl-D. Синтаксис: [size] Ctrl-U
[size] Ctrl-D Функция: "Прокручивает" экран на половину окна вверх (Ctrl-U) или вниз (Ctrl-D). Если задан аргумент size, то производится прогон на (size)-строк. Это значение запоминается для всех последующих операций "прокрутки".

Page (Разбиение на страницы): Ctrl-F, Ctrl-B. Синтаксис: Ctrl-F
Ctrl-B Функция: Постранично листает экран вперед и назад. Если возможно, то между страницами сохраняются две неразрывные строки. Предварительно заданный счетчик указывает число страниц, на которое надо передвинуть вперед или назад.



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

Zero Screen (Обнуление экрана): z Синтаксис: [linenumber]z[size]RETURN
[linenumber]z[size].
[linenumber]z[size]Функция: Перерисовывает содержимое экрана дисплея с текущей строки, расположенной или "обнуленной" (zeroed) в верхней части, в середине или в нижней части экрана, соответственно. Если вы задаете аргумент size, то число высвечиваемых линий равно size. Если задан стоящий впереди аргумент linenumber, то строка с номером linenumber размещается вверху экрана. Если последний аргумент - RETURN, то текущая строка размещается вверху экрана. Если последний аргумент - (.), то текущая строка размещается в середине экрана. Если последний аргумент - (-), то текущая строка размещается внизу экрана.

Redraw (Перерисовка): Ctrl-R, Ctrl-L. Синтаксис: Ctrl-R
Ctrl-L Функция: Перерисовывает содержимое экрана. Используйте эту команду для стирания любых системных сообщений, которые могут накладываться на информацию, содержащуюся на вашем экране. Необходимо отметить, что системные сообщения не влияют на редактируемый вами файл.

ВСТАВКА ТЕКСТА

Команды вставки текста всегда переводят вас в режим вставки. Выход из режима вставки всегда осуществляется нажатием клавиши ESC. Следующие команды вставки являются "чистыми" командами вставки; при их применении текст не уничтожается. Эти команды отличаются от команд модификации текста - изменения, замещения и подстановки, которые сначала удаляют, а затем вставляют текст за одну операцию.

Insert (Вставить): i, I. Синтаксис: i[text]ESC
I[text]ESC Функция: Вставляет текст text в буфер редактирования. Команда 'i' переводит вас в режим вставки. Текст вставляется перед символом, расположенным под курсором. Для вставки новой строки нажмите RETURN. Для выхода из режима вставки нажмите ESC. Команда 'I' также переводит вас в режим вставки, но начинает вставлять текст с начала текущей строки, а не перед курсором.



Append (Присоединить): a, A. Синтаксис: a[text]ESC
A[text] ESC Функция: Присоединяет текст text к содержимому буфера редактирования. Команда 'a' работает точно также, как команда 'i', только вставка текста начинается после курсора, а не перед ним. Это является одной из возможностей добавления текста в конец строки. Команда 'A' начинает вставку текста в конце текущей строки, а не после курсора.

Open New Line (Открыть новую строку): o, O. Синтаксис: o[text]ESC
O[text]ESC Функция: Открывает новую строку и вставляет текст. Команда 'o' открывает новую строку под текущей строкой, команда 'O' открывает новую строку над текущей строкой. После того, как новая строка открыта, обе команды работают аналогично команде 'I'.

УДАЛЕНИЕ ТЕКСТА

Большинство команд удаления текста используют в качестве оператора выполнения клавишу 'D'. Этот оператор удаляет текстовые объекты, ограниченные курсором и командой перемещения курсора. Удаленный текст всегда продолжает храниться в буфере. Команды удаления описаны ниже.

Delete Character (Удалить символ): x, X. Синтаксис: x
X Функция: Удаляет символ. Команда 'x' удаляет символ, находящийся под курсором. При заданном впереди счетчике count удаляется (count)-символов вправо от символа, стоящего под курсором. Это быстрый и легкий способ удалить несколько символов. Команда 'X' удаляет символ, расположенный перед курсором. При заданном впереди счетчике count удаляется (count)-символов в обратном направлении, начиная с символа, стоящего перед курсором.

Delete (Удалить): d, D. Синтаксис: d cursor-movement
dd
D Функция: УУдаляет текстовый объект. Команда 'd' в качестве аргумента берет cursor-movement (перемещение курсора). Если cursor-movement - внутристрочная команда, то производится удаление от курсора до конца текстового объекта, ограниченного аргументом cursor-movement. Удаление в прямом направлении (вперед) удаляет символ, расположенный под курсором; удаление в обратном направлении (назад) не выполняется. Если cursor-movement - многострочная команда, то удаление производится с текущей строки, включая ее саму, до текстового объекта, ограниченного аргументом cursor-movement.



Команда 'dd' удаляет целые строки. Команда 'D' удаляет все от позиции курсора, включая ее, до конца текущей строки.

Удаленный текст автоматически заносится в стек буферов, пронумерованных от 1 до 9. Самый последний удаленный текст также размещается в специальном буфере удаления, который имеет логический номер 0. Этот специальный буфер является буфером по умолчанию для всех команд 'put' (поместить), используя двойные кавычки (") для указания номера буфера для команд удаления, помещения и "выдергивания". Доступ к буферам с 1 по 9-й может быть организован командами 'p','P' (поместить) с присоединением двойных кавычек к номеру буфера. Например, команда:

"4p

помещает содержимое буфера удаления с номером 4 в ваш буфер редактирования под текущей строкой. Необходимо отметить, что последний удаленный текст помещается по умолчанию, и указание номера буфера при этом не требуется.

МОДИФИКАЦИЯ ТЕКСТА

Команды модификации текста, все вызывают замену одного текста другим. Это означает, что некоторый текст, вероятно, будет удален. Все команды модификации текста могут быть отменены командой 'u'.

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

Repeate (Повторить): . Синтаксис: . Функция: Повторяет последнюю команду вставки или удаления. Существует специальный случай для повтора команд 'p' и 'P'. Когда эти команды стоят перед именем буфера удаления, следующая команда 'u' высвечивает содержимое буфера удаления.



Change (Изменить): c, C. Синтаксис: c cursor-movement text ESC
C text ESC
cc text ESC Функция: Изменяет текстовый объект и заменяет его на текст text. Текст вставляется, как по команде 'i'. Знак доллара ($) отмечает степень изменения. Команда 'c' изменяет произвольно выбранный текстовый атрибут, ограниченный курсором и аргументом cursor-movement. Команды 'C' и 'cc' обрабатывают строки целиком и по выполняемым функциям идеинтичны.

Replace (Заменить): r, R. Синтаксис: r char
R text ESC Функция: Заменяет символ или строку на char или text. Используйте 'r' для замены одиночного символа, а 'R' - для замены всей строки. Счетчик count обеспечивает (count)-кратную вставку текста.

Substitute (Подставить): s, S. Синтаксис: s text ESC
S text ESC Функция: Замещает текущий символ или текущую строку текстом text. Используйте команду 's' для замены одиночного символа новым текстом. Используйте команду 'S' для замены текущей строки новым текстом. Если впереди задан счетчик count, то текст вставляется (count)-раз вместо заменяемого символа или строки, в зависимости от того, какая команда используется.

Filter (Фильтрация): ! Синтаксис: ! cursor-movement cmd RETURN Функция: Фильтрует текстовый объект, ограниченный курсором и аргументом cursor-movement, посредством какой-либо команды cmd системы XENIX. Например, следующая команда сортирует все строки, расположенные между курсором и нижней часть экрана, заменяя отсортированные строки другими, определенными строками:

!L sort

Как часть команды cmd могут быть включены аргументы и метасимволы shell; однако стандартный ввод и вывод всегда связаны с текстовым объектом, над которым выполняется фильтрация.

Join Lines (Объединить строки): J. Синтаксис: J Функция: Объединяет текущую строку со следующей строкой. Если задан счетчик count, то объединяется (count)-строк.

Shift (Сдвинуть): <, >. Синтаксис: >[cursor-movement]
<[cursor-movement]
>>

<< Функция: Сдвигает текст вправо (>) или влево (<). Текст сдвигается на количество позиций, определяемое значением shiftwidth, которое обычно равно восьми пропускам. Обе команды, > и <, сдвигают все строки в текстовом объекте, ограниченные курсором и аргументом cursor-movement. Команды >> и << выполняют действие над целыми строками. Все версии команды могут использовать стоящий впереди счетчик для увеличения числа объектов, над которыми выполняется операция.



ПЕРЕМЕЩЕНИЕ ТЕКСТА

Команды перемещения текста перемещают его в/из буферов, поименованных от 'a' до 'z' и из буферов удаления с номерами от 1 до 9. Эти команды или "выдергивают" текст из буфера редактирования и помещают его в определенный буфер, или "помещают" текст в буфер редактирования из поименованного буфера или из буфера удаления. По умолчанию текст помещается и извлекается из "безымянного" буфера, в котором также размещается последний удаленный текст. Таким образом, совершенно резонно удалить текст, затем передвинуть ваш курсор в то место, куда вы хотите вставить удаленный текст, и после этого поместить текст обратно в буфер редактирования, в новое место, с помощью команды 'p'/'P'.

Поименованные буферы наиболее удобны для сохранения дорожки нескольких частей текста, которую вы хотите иметь постоянно наготове для более позднего доступа к этим текстам, или их перемещения и переразмещения. Эти буферы поименованы буквами от 'a' до 'z'. Для ссылки в команде на один из этих бууферов (или на один из буферов удаления) используйте знак кавычки. Например, для извлечения строки из файла в буфер 'a' наберите "ayy. Для того, чтобы поместить этот текст обратно в файл, наберите "ap.

Если вы удаляете текст в буфере с именем 'A', а не 'a', то текст присоединяется к содержимому буфера. Необходимо отметить, что содержимое поименованных буферов не разрушается при переключении файлов. Поэтому вы должны удалить или извлечь текст в буфер, выбрать новый файл и затем выполнить команду 'put'. Содержимое буферов теряется при выходе из редактора, поэтому будьте осторожны.

Put (Поместить): p, P. Синтаксис: ["alphanumeric]p
["alphanumeric]P Функция: Помещает текст из буфера в буфер редактирования. Если имя буфера-источника не указано, то текст выбирается из "безымянного" буфера. Команда 'p' помещает текст под текущей строкой или после курсора, в зависимости от того, содержит буфер полную строку или нет. Команда 'P' помещает текст или над текущей строкой, или перед курсором, в зависимости от того, содержит буфер неполную строку или нет.



Yank (Извлечь): y, Y. Синтаксис: ["letter]y cursor-movement
["letter]yy
["letter] Y Функция: Копирует текст из буфера редактирования в поименованный буфер. Если имя буфера не указано, то текст помещается в "безымянный" буфер. Если используется строчная буква letter, то текст добавляется в буфер, не переписывая и не разрушая предыдущее содержимое. Когда в качестве аргумента используется cursor-movement, то извлекается ограниченный текстовый объект. Команды 'Y' и 'yy' извлекают одну строку, или, если задан счетчик, несколько строк.

ПОИСК

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

Search (Найти): /, ? Синтаксис: /[pattern]/[offset]RETURN
/[pattern]RETURN
?[pattern]?[offset]RETURN
?[pattern]RETURN Функция: Осуществляет поиск текста, соответствующего шаблону pattern, в прямом (/) или обратном (?) направлении. Строка является действительным регулярным выражением. Если шаблон pattern не задан, то для поиска используется последнее используемое значение pattern. После второго разделителя может быть задан аргумент offset, определяющий начало строки, относительно строки, в которой был найден шаблон pattern. Например,

/word/

находит начало строки, непосредственно предшествующей строке, содержащей слово "word". Другая команда:

/word/+2

находит начало строки, стоящей на две строки дальше от той строки, которая содержит слово "word". Смотрите также опции ignorecase и magic.

Next String (Следующая строка): n, N. Синтаксис: n
N Функция: Повторяет последнюю команду поиска. КОманда 'n' повторяет поиск в том же направлении, что и последняя команда поиска. Команда 'N' повторяет поиск в направлении, противоположном направлению последней команды поиска.

Finf Character (Найти символ): f, F. Синтаксис: f char
F char
;
, Функция: Находит символ char в текущей строке. Команда 'f' выполняет поиск в прямом направлении, команда 'F' - в обратном. Знак (;) повторяет поиск последнего символа. Запятая (,) меняет направление поиска на противоположное.



To Character (Перейти к символу): t, T. Синтаксис: t char
T char
;
, Функция: Помещает курсор над символом char. Знак (;) повторяет поиск последнего символа. Знак (,) меняет направление поиска на обратное.

Mаrk (Отметить): m Синтаксис: m letter Функция: Отмечает место в файле, где находится буква letter. Вы можете переместиться к этой отметке при помощи команды 'to mark', описанной ниже. Это часто удобно использовать для создания метки, перемещения курсора от этой метки в необходимом направлении и затем удаления от курсора до метки 'a' с помощью команды d'a.

To Mark (Перейти на метку): ', '. Синтаксис: 'letter
'letter Функция: Перемещает курсор на метку letter. Эта команда позволяет вам переместиться к месту расположения метки. Метки обозначаются одиночными строчными буквами алфавита. Прежде чем вы сможете переместиться к метке, вам необходимо сначала создать ее с помощью команды 'm'. Знак (') перемещает вас непосредственно в позицию расположения метки внутри строки; знак (') перемещает вас на начало строки, содержащей метку. Необходимо отметить, что эти команды являются также разрешенными командами перемещения курсора.

КОМАНДЫ ВЫХОДА И ПЕРЕКЛЮЧЕНИЯ

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

ex Escape (Переключить на режим 'ex'): ':' Синтаксис: : Функция: Вводит режим переключения в 'ex' для выполнения команды редактора ex. В строке состояния появляется двоеточие (:) как подсказка-указание для ввода ex-команды. Затем вы можете ввести ex-команду, закончить ее символами RETURN или ESC, после чего эта команда выполнится. Затем вам предложат нажать клавишу RETURN для возврата в режим команды vi. При вводе ex-команды или при ее выполнении вы можете нажать клавишу INTERRUPT для прекращения того, что вы собирались делать, и для возврата в режим команды vi.

Exit Editor (Выход из редактора): ZZ Синтаксис: ZZ Функция: Осуществляет выход из режима команды vi и записывает редактируемый файл, если были сделаны какие-либо изменения. При этом вы возвращаетесь в тот интерпретатор shell, из которого был запущен редактор vi.



Quit to ex (Возврат в режим 'ex'): Q Синтаксис: Q Функция: Вводит режим редактора ex. Когда вы сделайте это, то будете редактировать тот же файл. Вы можете вернуться в режим редактора vi, набрав команду vi в редакторе ex.

КОМАНДЫ РЕДАКТОРА EX

Ввод двоеточия (:) при нахождении в режиме команды выдает подсказку-указание (:) в строке состояния. Это подсказка для ввода команды, доступной в строковом редакторе ex. В основном, ex-команды позволяют вам записывать в/читать из файлов, переключать на shell или менять редактируемые файлы.

Большинство этих команд выполняет действия, которые оказывают влияние на "текущий" по умолчанию файл. Текущим обычно считается файл, который вы выбрали при запуске редактора vi, хотя текущий файл может быть изменен командой file(f) или командой next(n). По основным характеристикам эти команды совпадают с аналогичными командами редактора ex. Все подобные команды редактора ex прекращаются по нажатию клавиш RETURN или ESC. В наших примерах мы будем использовать RETURN. Ввод команды заканчивается нажатием INTERRUPT.

СТРУКТУРА КОМАНДЫ

В качестве имен большинства ex-команд используются английские слова, а доступной для использования аббревиатурой являются начальные буквы этих слов. В описаниях обслуживаются только аббревиатуры как наиболее часто используемая форма записи команды. В пользу часто используемых команд решается проблема неопределенности аббревиатур. Например, для команды substitute в качестве аббревиатуры можно использовать 's', в то время как наиболее короткой доступной формой записи команды set является 'se'.

Большинство команд использует стоящие впереди адреса, определяющие строки, над которыми необходимо выполнять действие. Ряд команд также может содержать следующий за ними счетчик count, показывающий число строк, которые захватываются при вызове команды. Числа count при необходимости округляются в сторону меньшего значения. Таким образом, команда '10p' высвечивает десятую строку в буфере, а команда 'move 5' перемещает текущую строку за строку с номером 5.

Некоторые команды также используют другую информацию или параметры, размещенные после имени команды. В качестве примеров можно привести имена опций в команде set, например, set number, имя файла в команде edit, регулярное выражение в команде substitute, или адрес назначения для команды copy. Например:



1,5 copy 25

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

Дополнительно к этому, большое число команд использует флаги, включая символы 'p' и 'l'. Эти два символа должны стоять после пробела или метки табуляции. В таком случае, команда, обозначенная этими символами, выполняется после того, как выполнится команда. Т.к. редактор ex высвечивает обновленную текущую строку после каждого обновления, необходимость в использовании 'p' возникает редко. С этими флагами может быть задано любое число знаков '+' и '-'. Если они используются, то перед выполнением команды печати к значению текущей строки добавляется определенное смещение.

Большинство команд, изменяющих содержимое буфера редактирования, обеспечивает обратную связь, если число изменений превышает предел, заданный параметром report option. Эта обратная связь помогает обнаружить нежелательные большие изменения таким образом, что они затем могут быть легко и быстро отменены командой undo. После выполнения команд с глобальным эффектом вы будете проинформированы, если суммарный объем изменений в нескольких строках, расположенных в буфере, превысит заданный предел во время выполнения этой команды.

АДРЕСОВАНИЕ КОМАНДЫ

Следующие обозначения определяют синтаксис адресования строк в ex-командах:

. (точка)

Текущая строка. Большинство команд представляет текущую строку как ппоследнюю строку, которую они обрабатывали. Текущая строка для большинства команд является адресом по умолчанию, поэтому знак точки редко используется в качестве адреса.

n

n-строка в буфере редактирования; строки пронумерованы последовательно, начиная с 1.

$

Последняя строка в буфере.

%

Аббревиатура для "1,$"; определяет желаемый буфер.

+n или -n

Смещение 'n' относительно текущей строки буфера. Формы записи '.+3', '+3', '+++' идеинтичны. Если текущая строка имеет номер 100, то приведенные записи указывают на строку с номером 103.



/pattern/ или ?pattern?

Сканирует текст вперед или назад, соответственно, в поиске регулярного выражения, заданного шаблоном pattern. Сканирование ведется обычно до конца буфера. Если вы хотите только распечатать следующую строку, содержащую pattern, хвостовые знаки (/) и (?) могут быть опущены. Если параметр pattern пропущен или пустой, то выделяется строка, соответствующая последнему определенному регулярному выражению. Формы RETURN и ??RETURN выполняют сканирование, используя последнее указанное регулярное выражение. После замещения RETURN и ??RETURN будут выполнять сканирование, используя это замещенное регулярное выражение.

" или 'x

Перед каждым независимым перемещением знака точки (.), определяющего текущую строку, предыдущая строка отмечается меткой, роль которого обычно выполняет символ ("). Это облегчает ссылку или возврат на этот предыдущий контекст. Метки устанавливаются командой 'm' редактора vi, используя одиночную строчную букву в качестве имени метки. На отмеченную строку позже можно сослаться с помощью записи 'x, где x - имя метки.

Адреса команд состоят из серии адресов, разделенных знаками (,) или (;). Такие адресные списки сравниваются слева направо. Если адрес разделен знаком (;), то знак текущей строки (.) устанавливается в значение предыдущего адресного выражения, прежде чем будет интерпретирован следующий адрес. Если задано больше адресов, чем требуется команде, то, по крайней мере, один или два последних адреса игнорируются. ЕСли команда имеет два адреса, то первая адресуемая строка должна предшествовать второй строке в буфере. В списке адресов допускается спецификация пустого адреса; в этом случае по умолчанию принимается знак текущей строки (.). Таким образом, ",100" эквивалентно ".,100". Если перед командой, не требующей адреса, он все же задан, то это считается ошибкой.

ФОРМАТ КОМАНДЫ

Для всех ex-команд используется следующий формат:

[address][command][!][parameters][count][flags] [адрес][команда][!][параметры][счетчик][флаги]



Все части необязательны, в зависимости отк оманды и ее опций. Следующая часть описывает специальные команды.

КОМАНДЫ СПИСКА АРГУМЕНТОВ

Команды списка аргументов позволяют вам работать с набором файлов посредством запоминания списка имен файлов, которые определяются при активизации редактора vi. Команда args позволяет вам проверить этот список. Команда file дает вам информацию о текущем файле. Команда n(next) позволяет вам либо редактировать следующий файл из списка аргументов, либо изменить список. Команда rewind позволяет вам перезапустить редактирование файлов в списке. Все эти команды описаны ниже:

args

Высвечиваются элементы списка аргументов, при этом текущий аргумент заключен в квадратные скобки. Например, список может выглядеть следующим образом: file1 file2 [file3] file4 file5. Текущим является файл file3.

f

Высвечивает имя текущего файла, независимо от того, был ли он модифицирован с момента последней команды write (или файл доступен только по чтению), номер текущей строки, число строк в буфере и уже отредактированную часть содержимого буфера в процентах. В редких случаях, когда текущий файл помечен как "[Not edited]" (не редактируется), об этом также сообщается; в таких случаях вы должны использовать команду 'w!' для записи в файл, т.к. редактор не уверен, что команда 'w' не разрушит файл, не относящийся к текущему содержимому буфера.

f file

Текущее имя файла заменяется на имя file, которое подразумевается как "[Not edited]".

n

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

n!

Этот вариант подавляет предупреждения о модификациях, не записанных в буфер, отвергая необратимо любые изменения, которые могли быть выполнены.

n[+command] filelist

Указанный список файлов filelist расширяется, и результирующий список заменяет текущий список аргументов; затем редактируется первый файл из нового списка. Если задана команда command (она не должна содержать пробелов), то она выполняется после редактирования первого такого файла.



rew

Порядок аргументов в списке меняется на обратный, и редактируется первый по новому порядку файл.

rew!

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

Если вы используйте интерпретатор shell языка "Си" (C-Shell) и устанавливаете переменную prompt для вывода подсказки-указания prompt), требуемой для работы с неинтерактивными интерпретаторами shell, то при использовании вами выше приведенных команд prompt рассматривается как имя файла. Это может привести к возникновению неожиданных ситуаций. Чтобы избежать их, используйте значение prompt, назначаемое по умолчанию, какое определено в файле /usr/lib/mkuser/mkuser.cshrc.

КОМАНДЫ РЕДАКТИРОВАНИЯ

Для редактирования файла, отличного от редактируемого в настоящее время, вы часто будете использовать один из вариантов команды 'e'.

Отметим, что в последующем изложении имя текущего файла всегда запоминается редактором vi и помечается знаком (%). Имя предыдущего файла в буфере редактирования отмечено знаком (#).

e file

Используется для начала редактирования нового файла. Редактор сначала проверяет, был ли модифицирован буфер с момента использования последней команды 'w'. Если это было сделано, то выдается предупреждение, и команда прерывается. Иначе, команда удаляет желаемое содержимое буфера редактирования, делает указанный файл текущим и высвечивает новое имя файла. После проверки, что этот файл действителен (т.е. не является двоичным файлом, каталогом или устройством), редактор читает файл в свой буфер. Если чтение файла выполнено без ошибок, в строке состояния появляется число прочитанных строк и символов. Если файле встречаются какие-либо символы, не соответствующие коду ASCII, то они лишаются своих старших битов, которые определяют несоответствие коду ASCII, а все пустые символы подавляются. Если никакая из перечисленных ошибок не возникает, то файл считается отредактированным. Если последняя строка входного файла пропускает хвостовой символ новой строки, то она подавляется и об этом выдается сообщение. Текущей строкой изначально считается первая строка файла.



e! file

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

e +n file

Заставляет редактор начать редактирование с n-строки. Аргумент 'n' может быть также командой редактора, не содержащей пробелы, например, +/pattern.

Ctrl-^

Это сокращенный эквивалент ":e #RETURN", который возвращает к предыдущей позиции в последнем редактируемом файле. Если вы не хотите записывать файл, вам нужно использовать запись вида ":e! #RETURN".

КОМАНДЫ ЗАПИСИ

Команды записи позволяют вам переписывать весь ваш буфер редактирования или его часть в текущий или какой-либо другой файл. Эти команды перечислены ниже:

w file

Переписывает сделанные изменения обратно в файл file, высвечивая количество переписанных строк и символов. Обычно параметр file пропускается, и буфер переписывается в текущий файл. Если имя file определено то текст переписывается в этот файл. Редактор осуществляет запись в файл, только если это текущий файл и он редактируется, или если файл не существует. В других случаях для записи вы должны задать команду 'w' в измененной форме - 'w!'. Если файл не существует, то он создается. Имя текущего файла меняется, если только оно отлично от текущего; текущая строка никогда не изменяется.Если при записи текущего или редактируемого файла возникает ошибка, то редактор выдает сообщение: No write since last change (С момента последнего изменения запись не производилась), даже если буфер не был предварительно модифицирован.

w >> file

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

w! name

Подавляет проверку обычной команды write и осуществляет запись в любой файл, который разрешен со стороны системы.

w! command

Записывает определенные строки в команду command. Обратите внимание на различие между командой "w! file", которая подавляет проверку, и командой "w! cmd", которая осуществляет запись в команду. Выходная информация этой команды высвечивается на экране и в буфер редактирования не вставляется.



КОМАНДЫ ЧТЕНИЯ

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

r file

Помещает копию текста из заданного файла в буфер редактирования после определенной строки. Если файл не задан, то используется текущее имя файла. Текущее имя файла не меняется, пока его нет; в этом случае файл принимает текущее имя. Если буфер файла пустой, то это трактуется как команда 'e'.

Адрес 0 разрешен для этой команды, и он вызывает чтение файла с начала буфера. Когда команда 'r' заканчивается успешно, то выдается статистика подобно той, которая сопровождает выполнение команды 'e'. После команды 'r' текущей считается последняя прочитанная строка.

r! command

Читает входную информацию команды command в буфер после определенной строки. Пробел или метка табуляции перед знаком (!) обязательны.

КОМАНДЫ ОКОНЧАНИЯ РАБОТЫ

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

q

Осуществляет выход из редактора vi. Автоматическая запись из буфера редактирования в файл не производится. Однако, если с момента последней команды 'w' были сделаны изменения, то vi выдает предупреждающее сообщение, и выход из редактора не осуществляется. vi также выдает диагностику, если в списке аргументов остались имена еще неотредактированных файлов. Обычно вы хотите сохранить все ваши изменения; для этого вам следует набрать команду 'w'. Если вы захотите отвергнуть их, то набериите команду 'q!'.

q!

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

wq name

Подобно последовательному выполнению команды 'w', затем 'q'.

wq! name

Подавляет проверку, обычно выполняемую перед командой 'w'. Например, если вы владеете файлом, но не имеете разрешения на запись в него, команда 'wq!' позволит вам изменить содержимое.



x name

Если были сделаны какие-либо изменения, и они не переписывались, то переписывает буфер и затем осуществляет выход из редактора.

ГЛОБАЛЬНЫЕ КОМАНДЫ И КОМАНДЫ ЗАМЕЩЕНИЯ

Глобальные команды и команды замещения позволяют вам выполнять сложные изменения в файле с помощью одной команды. Опытный пользователь vi должен уметь работать с этими командами.

g/pattern/cmds

Команда 'g' имеет две отдельные фазы. В первой фазе в буфере редактирования отмечается каждая строка, соответствующая шаблону pattern. Затем заданный список команд выполняется с текущей строкой; знак (.) изначально устанавливается в каждой отмеченной строке.

Список команд состоит из команд, оставшихся в текущей входной строке, и может продолжать увеличение строк с помощью завершения, по крайней мере, последней такой строки знаком (\). Такая многострочная опция не будет работать из пределов vi; чтобы выполнить эту операцию, вам необходимо перейти в режим 'ex'. Если параметр cmds (или хвостовой разделитель(/)) пропущен, высвечивается каждая строка, соответствующая шаблону pattern. Сама команда 'q' не может быть указана в списке команд cmds. При выполнении глобальной команды опции autoprint и autoident подавляются, и значение опции report временно очень большое, в отличие от обычного ее значения. В конце, перед началом глобальной команды метка контекста (') или (') устанавливается в значение текущей строки (.) и не меняется во время выполнения данной команды.

Следующие глобальные команды, большинство которых - команды замещения, охватывают наиболее часто встречающиеся потребности, свойственные глобальным командам:

g/s1/p

Печатает все строки, содержащие строку s1.

g/s1/s//s2

Замещает первое вхождение s1 во всех строках, содержащих ее, на подстроку s2.

g/s1/s//s2/g

Заменяет все вхождения s1 на s2. Это распространяется также на многократное вхождение s1 в одной строке.

g/s1/s//s2/gp

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

g/s1/s//s2/gc

Приглашает вас подтвердить каждое замещение s1 на s2. Для положительного ответа нажмите 'Y', для отрицательного - любую другую клавишу.



g/s0/s/s1/s2/g

Отмечает все линии, содержащие строку s0, и затем только для них заменяет все вхождения s1 на s2.

g!/pattern/cmds

Запускает команды cmds в каждой строке, не соответствующей шаблону pattern.

g/^/s// /g

Вставляет пробелы в начале каждой строки файла.

s/pattern/repl/options

В каждой указанной линии первое вхождение текста, соответствующее регулярному выражению pattern, заменяется текстом repl. Если применяется индикатор опции confirm-'c', то перед каждым замещением заменяемая линия печатается на экране с вставкой, отмеченной символом (^). По нажатию 'Y' замена выполняется; любое другое нажатие замены не вызывает. После команды 's' текущей является последняя замененная строка.

v/pattern/cmds

Синоним команды 'q!', запускающий указанные команды cmds в каждой строке, не соответствующей шаблону pattern.

КОМАНДЫ ПЕРЕМЕЩЕНИЯ ТЕКСТА

Команды перемещения текста в большой степени могут быть заменены командами, доступными в редакторе vi. Однако, очень удобны следующие две команды:

co addr flags

Копия указанных линий размещается после адреса addr, которым может быть 0. Знак текущей строки (.) адресует на последнюю строку копии.

[range]m addr

Команда 'm' перемещает строки, определенные параметром range, в позицию после строки, заданной аргументом addr. Например, m+ меняет меняет текущую строку со следующей строкой, т.к. по умолчанию range указывает на текущую строку. Первая из перемещенных строк становится текущей.

КОМАНДЫ ПЕРЕКЛЮЧЕНИЯ В SHELL

Часто у вас возникает необходимость выйти из редактора и выполнить обычные команды системы XENIX. Также у вас может возникнуть необходимость изменить вас рабочий каталог, чтобы ваше редактирование не влияло на целостность другого рабочего каталога. Ниже описаны необходимые для этого операции:

cd directory

Указанный каталог directory становится вашим текущим каталогом. Если каталог не определен, то в качестве имени целевого каталога используется текущее значение опции home. После выполнения команды 'cd' текущий файл не рассматривается как уже отредактированный, поэтому запись в файлы, существовавшие до этого, по прежнему допустима.



sh

Создается новый shell. В этом shell вы можете вызывать любое количество команд. Для возврата в vi нажмите Ctrl-D.

!command

Остаток линии после знака (!) посылается в shell для выполнения. Внутри текста команды command символы '%' и '#' расширяются как имена текущего файла и последнего редактируемого файла, а символ '!' заменяется на текст предыдущей команды. Таким образом, в частности, '!!' повторяет последнее такое переключение в shell. Если выполняется любое такое расширение, то расширенная строка повторяется на экране. Текущая строка этой команды не изменяется.

Если с момента последнего изменения в буфере редактирования перезапись отсутствовала (т.е. "[No write]"), то перед выполнением команды в качестве предупреждения выдается диагностика. Когда команда выполнится, высвечивается знак (!).

Если вы используйте интерпретатор shell языка "Си" (C-Shell) и устанавливаете переменную prompt для вывода подсказки-указания prompt), требуемой для работы с неинтерактивными интерпретаторами shell, то при использовании вами выше приведенных команд prompt рассматривается как имя файла. Это может привести к возникновению неожиданных ситуаций. Чтобы избежать их, используйте значение prompt, назначаемое по умолчанию, какое определено в файле /usr/lib/mkuser/mkuser.cshrc.

ДРУГИЕ КОМАНДЫ

Следующие описания команд объясняют, как использовать разнообразные ex-команды, которые не входят ни в одну из выше перечисленных категорий:

abbr

Преобразовывает первый аргумент в следующую за ним строку. Например, команда ":abbr rainbow yellow green blue red" преобразовывает "rainbow" в "yellow green blue red". Преобразования можно отключить с помощью команды unabbreviate: :una rainbow.

map, map!

Преобразовывает любой символ или escape-последовательность в существующую последовательность команд. Символы, преобразованные командой map, работают и в режиме команды, и в режиме вставки, в то время как символы, преобразованные командой map!, работают только в режиме команды. Символы, преобразованные командой map!, не могут быть возвращены в исходное состояние командой unmap.



nu

Высвечивает каждую указанную строку со стоящим впереди номером строки в буфере. Текущей строкой считается последняя высвеченная строка. Для задания автоматической нумерации линии в буфере установите опцию number.

preserve

Текущий буфер редактирования сохраняется как в случае внезапного выхода системы из строя. ЭТА КОМАНДА ПРЕДНАЗНАЧЕНА ДЛЯ ИСПОЛЬЗОВАНИЯ В СЛУЧАЕ ОПАСНОСТИ, когда выполнение команды 'w' привело к ошибочной ситуации, и вы не знаете, как вам сохранить все сделанное ранее.

=

Высвечивает линейный номер адресуемой линии.

recover file

Восстанавливает файл из системной области сохранения. Система сохраняет копию буфера редактирования, если только вы сделали изменения в файле, и работа системы была нарушена, или если вы выполняете команду preserve. Когда вы используете команду preserve, вас оповестят по электронной почте о том, что файл был сохранен.

set argument

Без аргументов argument команда set высвечивает те опции, чье значение изменилось с установленного по умолчанию; с аргументом all эта команда высвечивает все значения опций. Задание за именем опции знака (?) вызывает показ текущего значения этой опции. Нет необходимости использовать знак (?), если опция не является булевским значением. Для задания значений, являющихся опциями переключения, используйте запись вида: set option, а для для их выключения: set nooption. Строковые и числовые опции задаются следующим образом: set option=value. Для команды set может быть задано более одной опции; все они обрабатываются слева направо. Значения option могут устанавливаться автоматически с помощью переменной среды EXINIT. Для более детальной информации смотрите команду .

tag label

Основная цель редактирования направлена на определение местоположения признака label. При необходимости для поиска label редактор vi переключится на другой файл в текущем каталоге. Если перед заданием команды tag вы модифицировали текущий файл, то сначала вы должны переписать его. Если следующую команду tag вы задаете без аргументов, то используется предыдущее значение label.

Подобно этому, если вы нажимаете Ctrl-], то vi осуществляет поиск слова, непосредственно следующего за курсором. Это эквивалентно выполнению следующих действий: набирается команда ':tag', затем искомое слово, нажимается клавиша ENTER. Файл признаков (тегов - tegs) обычно создается такими программами как ctags, и состоит из набора линий с тремя полями, разделенными пробелами или метками табуляции. Первое поле задает имя тега, второе поле - имя файла, где расположен тег, и третье - определяет режим адресования, который будет использоваться редактором для поиска данного тега. Это поле обычно является контекстуальной разверткой, использующей шаблон /pattern/, чтобы быть невосприимчивым к минимальным изменениям в файле. Такие развертки всегда выполняются, как если бы была установлена опция nomagic. Имена тегов в файле тегов должны быть отсортированы в алфавитном порядке. Существует ряд опций, которые могут использоваться для установки рабочей среды vi. Они могут быть установлены ex-командой set или при редактировании, или непосредственно сразу за вызовом vi в файле его установки .exrc .



unmap

Возвращает любые символы или escape-последовательности, преобразованные командой map, в исходное состояние.

Первое, что должно быть сделано перед тем, как вы сможете использовать возможности редактора vi - это необходимо установвить тип терминала, чтобы vi мог понять, как общаться с терминалом, который вы используйте.

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

ОПЦИИ

Существует только два вида опций: опции переключения и строковые опции. Опции переключения - 'on' (включить) и 'off' (выключить). Переключение отменяется использованием слова 'no' перед именем опции в команде set. Строковые опции - это строки символов, являющиеся назначаемыми значениями в форме option = value (опция = значение). В линии может быть определено несколько опций. Опции редактора vi описаны ниже:

autoindent, ai
по умолчанию: noai Может быть использована для облегчения подготовки текста структурированной программы. Для каждой линии, созданной операцией присоединения, изменения, вставки, открытия или замещения, vi просматривает предыдущую линию, чтобы определить и вставить соответствующее количество отступов. Для возврата курсора на предыдущую метку табуляции нажмите Ctrl-D. Метки табуляции, следующие в обратном направлении, определены как многократная опция shiftwigth. Вы не можете переместиться назад на абзац, кроме как по нажатию Ctrl-D.

Специально обрабатываемой в этом режиме является линия без символов, добавленных к ней, которая превращается в линию, полностью заполненную пробелами (пропуски, обеспечиваемые для autoindent, отвергаются). Также, специально обрабатываемыми для данного режима являются строки, начинающиеся с символа (^) непосредственно сопровождаемые символом Ctrl-D. Это вызывает перенаправление ввода на начало линии, но сохраняет предыдущий отступ для следующей линии. Подобным образом, 'O' с последующим немедленным символом Ctrl-D переустанавливает курсор на начало без сохранения предыдущего отступа. В глобальных командах опция autoindent не встречается.



autoprint, ap
по умолчанию: ap Вызывает высвечивание текущей линии после каждой ex-команды copy, move или substitute. Это вызывает тот же самый эффект, что и использование символа 'p' в конце каждой такой команды. Autoprint подавляется в глобальных командах, и применяется только к последней команде в строке.

autowrite, aw
по умолчанию: noaw Вызывает автоматическое переписывание содержимого буфера в текущий файл, если вы его модифицировали, когда даете одну из команд next, rewind, tag, !, Ctrl-^ (переключить файлы) или Ctrl-] (перевести тег).

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

directory, dir
по умолчанию: dir=/tmp Определяет каталог, в котором vi размещает файл буфера редактирования. Если каталог не имеет разрешения на запись, то редактор будет немедленно остановлен в случае неудачи при записи в файл буфера.

edcompatible
по умолчанию: noedcompatible Вызывает запоминание факта наличия или отсутствия суффиксов 'g' и 'c' в командах замещения, а также включение их с помощью повтора суффиксов. Суффикс 'r' вызывает замещение подобно команде (~), в отличие от команды (&).

errorbells, eb
по умолчанию: noeb Перед сообщением об ошибке выдается звонок. Если возможно, вместо звонка редактор всегда выводит сообщение об ошибке в инверсном видеорежиме.

hardtabs, ht
по умолчанию: ht=8 Задает границы, в которых установлены метки табуляции для аппаратуры терминала или в которых система расширяет метки табуляции.

ignorecase, ic
по умолчанию: noic Преобразовывает все прописные символы в тексте в строчные в соответствующем регулярном выражении. ПРи этом, в регулярном выражении производится замена всех прописных символов на строчные, за исключением символов, стоящих в квадратных скобках.

lisp
по умолчанию: nolisp autoindent делает отступ, соответствующий коду LISP, а команды ( ), { }, [[ и ]] модифицируются, чтобы иметь смысл для LISP.



list
по умолчанию: nolist Высвечивает все напечатанные строки вместе с метками табуляции и символами конца строки.

magic
по умолчанию: magic Если установлено значение nomagic, то количество метасимволов в регулярном выражении значительно снижается, только символы (^) и ($) имеют специальное значение. В дополнение к этому метасимволы (~) и (&) в замещаемых шаблонах трактуются как обычные символы. Все нормальные метасимволы могут быть сделаны типа magic, когда перед значением nomagic стоит знак (\).

mesg
по умолчанию: nomesg Значение nomesg вызывает подавление разрешения записи в терминале, пока вы находитесь в визуальном режиме. Это предохраняет вас от пользователей, выполняющих команду write (запись) системы XENIX на ваш экран в то время, когда вы выполняете редактирование.

number, n
по умолчанию: nonumber Вызывает печать всех выходных линий вместе с их номерами.

open
по умолчанию: open Если выполнена установка noopen, то из 'ex' запрещены команды open и visual. Такая установка сделана в целях избежать недоразумений, происходящих в результате случайного входа в открытый или визуальный режим.

optimize, opt
по умолчанию: optimize Вывод текста на экран сопровождается установкой терминала таким образом, что не выполняется автоматически возврат каретки при высвечивании более чем одной выводимой линии, что позволяет значительно увеличить скорость вывода на терминал без адресуемых курсоров, когда печатается текст со стоящим впереди пустым пространством.

paragraphs, para
по умолчанию: para=IPLPPPQPPTPbp Определяет ограничители параграфа для операций { и }. Парой символов в значении опции являются имена макросов команды nroff, которые начинают параграф.

prompt
по умолчанию: prompt Ввод в режим 'ex' сопровождается указанием-подсказкой (:). Если вход в режим команды 'ex' выполняется по команде 'Q', и при этом установлено значение noprompt, то символ (:) в строке состояния отсутствует.

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



remap
по умолчанию: remap Если установлено значение 'on', то преобразованные символы повторно обрабатываются, пока не изменились. Например, если 'o' преобразовано в 'O', а 'O' в 'I', то, если установлено remap, то 'o' преобразуется в 'I', а при установке noremap - в 'O'.

report
по умолчанию: report = 5 Определяет порог обратной связи из команды. Любая команда, которая модифицирует большое число линий, чем было определено, в качестве обратной связи передаст число этих изменений. Для глобальных команд и команд уничтожения (undo) суммарное изменение в ряде линий, размещенных в буфере, представлено в конце команды. Такое оповещение подавляется при команде 'g' в индивидуальных выполняемых командах.

scroll
по умолчанию: scroll = 1/2 окна Определяет число логических линий, "прокрученных" к моменту, когда в режиме команды на входе терминала был принят сигнал Ctrl-D, а также число линий, высвечиваемых командой 'z' в режиме команды (удвоенное значение scroll).

section
по умолчанию: section = SHNHH HU Определяет макрос раздела для операций [[ и ]]. Пара символов в значении опции является именами макросов команды nroff, которые начинают параграф.

shell, sh
по умолчанию: shell = /bin/sh Задает путь к интерпретатору shell, разветвляющемуся для команды переключения в shell - (!), а также командой shell. По умолчанию берется значение из переменной среды SHELL, если она присутствует.

shiftwigth, sw
по умолчанию: sw = 8 Задает ширину программной расстановки меток табуляции, используемой при инверсной табуляции с помощью Ctrl-D, когда для присоединения текста используется autoindent, или командами сдвига.

showmatch, sm
по умолчанию: nosm Когда нажаты клавиши ) или }, перемещает курсор на одну секунду на соответствующий символ ( или {, если этот символ присутсвует на экране.

showmode
по умолчанию: noshowmode Вызывает появление сообщения "INPUT MODE" (РЕЖИМ ВВОДА) в нижнем правом углу экрана, если включен режим вставки.

slowopen
по умолчанию: noslowopen При команде вставки вводит задержку при модификации экрана.



tabstop, ts
по умолчанию: ts = 8 Редактор расширяет метки табуляции во входном файле по n-границе в целях, необходимых для дисплея.

taglength, tl
по умолчанию: tl = 0 Первые n-символов в имени тега имеют значение, остальные символы игнорируются. Нулевое значение (по умолчанию) указывает на необходимость обработки всех символов.

tags
по умолчанию: tags = tags/usr/lib/tags Путь к файлам, используемым как файлы тегов для команды tag. Требуемый тег ищется во всех определенных файлах, последовательно. По умолчанию, поиск файлов с именем tag осуществляется в текущем каталоге и в каталоге /usr/lib.

term
по умолчанию: значение переменной TERM Тип терминала выходного устройства.

terse
по умолчанию: noterse Для опытного пользователя выдает сокращенную информацию об ошибках.

timeout, to
по умолчанию: noto Отменяет 1-секундный предел времени для команд map (преобразования символов).

warn
по умолчанию: warn Предупреждает, если было сообщение "[No write since last change]" перед командой переключения в shell - (!).

window
по умолчанию: window = зависимость от скорости Определяет число линий в текстовом окне. По умолчанию 8 для малых скоростей (600 бод и менее), 16 - для средней скорости (1200 бод), и полный экран (минус одна строка) для высоких скоростей.

w300, w1200, w9600 Это не является действительной опцией, но устанавливает параметр window (смотрите выше), если скорость низкая (300), средняя (1200) или высокая (9600).

wrapscan,ws
по умолчанию: ws Поиски, использующие в качестве адреса регулярное выражение, будут продолжаться до конца файла.

wrapmargin, wm
по умолчанию: wm = 0 Определяет предел рабочего поля для автоматической вставки новых линий при вводе текста. Нулевое значение определяет нулевой предел.

writeany, wa
по умолчанию: nowa Отвергает проверки, обычно выполняемые перед командой write, позволяя осуществлять запись в любой файл, разрешенный системным механизмом записи.

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

Регулярное выражение определяет набор строк, состоящих из символов. Член этого набора строк называется "заменяемым" на регулярное выражение. vi запоминает два предыдущих выражения: предыдущее регулярное выражение, используемое в команде замещения, и предыдущее регулярное выражение, используемое где-нибудь еще, на которое ссылаются как на предыдущее регулярное выражение для сканирования. На предыдущее регулярное выражение ссылка может осуществляться через пустое регулярное выражение: например, "//" или "??".

Регулярное выражение, допускаемое для обработки редактором vi, составляется одним из двух путей, в зависимости от установки опции magic. Используемая командами vi и ex по умолчанию установка magic дает доступ к мощному набору метасимволов, используемых в регулярном выражении. Недостатком magic является то, что пользователь должен помнить все символы magic и перед ними ставить знак (\), чтобы использовать их как "обычные" символы. С опцией nomagic регулярные выражения значительно упрощаются, т.к. в них используется только два метасимвола. Обеспечивается возможность применения других метасимволов через использование знака (\) перед имеющимися в данный момент обычными символами. Необходимо отметить, что знак (\) всегда является метасимволом. В данном описании подразумевается опция magic. С опцией nomagic специальными символами являются только знак (^) в начале регулярного выражения, знак ($) в конце регулярного выражения и знак (\). Знаки (~) и (&) теряют свое специальное значение, относящееся к заменяемому шаблону замещения.

Для составления регулярных выражений в режиме magic используются следующие основные конструкции:
char Обычный символ соответствует самому себе. Обычными могут быть любые символы, кроме знака (^) в начале линии, знака ($) в конце линии, знака (*) как любого символа, отличного от первого, и любого из следующих символов: ".", "\", "[", "~". Если эти символы должны трактоваться как обычные, перед ними должен стоять символ (\). ^ Cтоящий в начале шаблона, указывает на то, чтобы соответствие достигло цели только в начале строки. $ Cтоящий в конце шаблона, указывает на то, чтобы соответствие достигло цели только в конце строки. Преобразовывает любой одиночный символ, кроме символа новой строки. \< Вызывает преобразование только в начале слова "word", т.е. либо в начале линии или перед буквой, цифрой или символом подчеркивания, или после символа, не являющегося ни одним из перечисленных. \> Действие, схожее с "\<", только преобразует конец слова "word", т.е. либо в конце линии, либо перед символом, не являющимся буквой, цифрой или символом подчеркивания. [string] Преобразует любой одиночный символ в класс, определяемый строкой string. Большинство символов в string определяют сами себя. Пара символов, разделенных знаком (-) в string, определяет набор символов между указанными строчными и прописными ограничениями, т.е. "[a-z]" трактуется, что регулярное выражение преобразовывает любую строчную букву. Если первым символом в строке string является (^), то конструкция преобразует те символы, которые иначе не преобразовывались. Т.е. "[^a-z]" преобразует все, кроме строчной буквы и символа новой строки. Чтобы разместить в строке string любой из символов "^", "[", "-", они должны иметь перед собой знак (\). <



/p>

Объединение двух регулярных выражений сначала преобразовывает левое регулярное выражение и затем самую длинную строку, которая может быть опознана как регулярное выражение. Первая часть этого нового выражения преобразует первое регулярное выражение, а вторая часть - второе регулярное выражение.

Любой из одиночных символов, соответствующий регулярным выражениям, упомянутым выше, может иметь за собой знак ( ) для формирования регулярного выражения, которое соответствует определенному (от нуля и более) числу установленных вхождений символов, замененных предварительно установленным регулярным выражением. Знак (~) может использоваться в регулярном выражении для преобразования текста, который определил заменяемую часть последней команды 's'. Регулярное выражение может стоять между последовательностями "\(" и "\)", чтобы запомнить текст, замененный этим выражением. Этот текст может быть позже вставлен в замещаемый текст при помощи следующего указания /digit, где digit перечисляет набор запомненных регулярных выражений. Базовыми метасимволами для шаблона замены являются (&) и (~); когда установлен nomagic, они задаются как "\&" и "\~". Каждый экземпляр (&) заменяется символами, соответствующими регулярному выражению. В шаблоне замены знак (~) устанавливается для текста предыдущего шаблона замены.

Другие метапоследовательности, возможные в шаблоне замены, вводятся символом (\). Последовательность "\n" заменяется текстом, соответствующим n-му регулярному подвыражению, выделенному знаками "\(" и "\)". При вложенности, присутствуют подвыражения, ограниченные круглыми скобками, а значение "n" определяется числом вхождений "\(", начиная слева. Последовательности "\u" и "\l" вызывают преобразование следуемых сразу за ними символов в прописные или строчные, если эти символы буквы. Последовательности "\U" и "\L", каждая, включают режим такого преобразования, пока не встретится последовательность "\E" или "\e", или пока не будет достигнут конец шаблона замены.

РАЗРЕШЕНИЕ



Эта утилита была разработана в Калифорнийском университете, г. Беркли, и разрешена к использованию.

ЗАМЕЧАНИЯ

Программа /usr/lib/ex3.7preserve может быть использована для восстановления файлов в буфере vi, которые были потеряны в результате аварии системы. Программа осуществляет поиск файлов буфера vi в каталоге /tmp и помещает их в каталог /usr/preserve. Владелец может найти эти файлы с помощью опции '-r'.

Программа /usr/lib/ex3.7preserve должна быть размещена в файле запуска системы /etc/rc, перед командой, которая очищает каталог /tmp. Для дополнительной информации о файле /etc/rc посмотрите "Руководство системного администратора системы XENIX" (XENIX Sytem Administrator's Guide).








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VIDI(1)


ИМЯ

vidi - Устанавливает шрифт и видеорежим для видеоустройства.

СИНТАКСИС

vidi [-d] [-f fontfile] command

ОПИСАНИЕ

Команда vidi устанавливает видеореежим или загружает/выделяет шрифт из устройства, которое является текущим стандартным устройством ввода; без аргументов она перечисляет все действительные команды по установке видеорежима и шрифтов.

Некоторые видеоадаптеры поддерживают загружаемые шрифты символов. Команды программы vidi по установке шрифтов ("font8*8", "font8*14" и "font8*16) используются для загрузки и выделения шрифтов из таблиц, хранящихся в ядре системы. Если ни одна из опций, -d, -r, не указана, программа vidi попытается загрузить определенный шрифт из файла /usr/lib/vidi/fontname. Опция -d заставляет vidi читать определенный шрифт из ядра и записывать шрифт в стандартное устройство вывода.

Опция -f используется для загрузки шрифтов, отличных от хранящихся в каталоге /usr/lib/vidi, или для определения выходного файла, отличного от стандартного устройства вывода.

При загрузке шрифта, указание -f filename будет загружать шрифт из файла filename вместо файла /usr/lib/vidi/fontname. При выделении шрифта (опция -d) -f filename заставляет vidi записывать выделенный шрифт в файл filename вместо записи шрифта в стандартное устройство вывода.

Другие команды программы vidi устанавливают видеорежим для видеоадаптера, подключенного к стандартному вводу vidi. Это следующие команды:

mono

Настраивает текущий экран на монохромный адаптер. cga

Настраивает текущий экран на цветной графический адаптер (Color Graphic Adapter - CGA). ega

Настраивает текущий экран на расширенный графический адаптер (Enhanced Graphic Adapter - EGA). vga

Настраивает текущий экран на видеоадаптер VGA (Video Graphic Array - Видеографический массив).

Текстовый режим

Команда Столбцы Строки Шрифт Адаптер c40*25 40 25 8*8 CGA (EGA, VGA) e40*25 40 25 8*14 EGA (VGA) v40*25 40 25 8*16 VGA m80*25 80 25 8*14 MONO(EGA_MONO, VGA_MONO) c80*25 80 25 8*8 CGA (EGA, VGA) em80*25 80 25 8*14 EGA_MONO (VGA_MONO) e80*25 80 25 8*14 EGA (VGA) vm80*25 80 25 8*16 VGA_MONO v80*25 80 25 8*14 EGA (VGA)


Графический режим
Команда Разрешение экрана (пиксели) Цвета mode5 320*200 4 mode6 640*200 2 modeD 320*200 16 modeE 640*200 16 modeF 640*350 2 (mono) mode10 640*350 16 mode11 640*480 2 mode12 640*480 16 mode13 320*200 256

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VMSTAT(1)


ИМЯ

vmstat - выдает страницы по требованию и системную статистику.

СИНТАКСИС

vmstat [-fs] [-n namelist] [-l lines] [interval [count]]

ОПИСАНИЕ

Команда vmstat выдает некоторую статистику, хранимую системой в процессах, страницы по требованию и активность процессора и схем прерывания. Доступны три типа отчетов:

(по умолчанию)

Суммарная инфрмация о ряде процессов в различных состояниях, активность листания, системная активность, эффективность цикла процессора. -f

Выполняет ряд команд . -s

Многословный листинг по активности листания памяти и схем прерывания.

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

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

Среди других флагов, доступных для определения, имеются следующие:

-c corefile

Использовать файл c именем corefile по адресу /dev/kmem. -n namelist

Использовать файл с именем namelist как альтернативную таблицу символов вместо /xenix. -l lines

Для дисплея, используемого по умолчанию, вставляет в отчет заголовок через каждые (lines)-строк (по умолчанию - 20).

В отчете, выдаваемом по умолчанию, имеются следующие поля:

procs Число процессов, которые:
r - находятся в очереди на выполнение;
b - заблокированы в ожидании ресурсов;
w - выключены из обмена.
Эти значения всегда отражают текущую ситуацию, если даже высвечивается полная информация с момента загрузки. paging

Сообщает о производительности системы при выполнении замещения страниц по требованию. Пока не будет высвечена полная информация с момента загрузки, эта информация усредняется по производительности на интервале в (interval)-секунд. si

Число загруженных процессов. so

Число выгруженных процессов. ch

Совпадает кэш страницы. cm

Отсутствует кэш страницы. ffr

Читается страница системного файла. swr

Читается страница области подкачки. sww

Записывается страница области подкачки. rec

Число страниц, восстановленных из свободного списка. shf

Число страниц, коллективного пользования как "копия по записи" после команды fork. shc

Число страниц, коллективного пользования согласно факту совпадения кэш. cpy

Число скопированных страниц коллективного пользования. pf

Число страниц, на которые был выдан отказ. system

Сообщает об активности основной системы. Пока не будет высвечена суммарная информация с момента загрузки, эти позиции показывают средние значения за последние (interval)-секунд. in

Число прерываний устройств (несинхронных). sy

Число системных вызовов. cs

Число переключений контекста. cpu

Процент цикла процессора, затрачиваемый на различные режимы:
us - Пользователь;
su - Система;
id - Ожидание. <


/p>

В некоторых системах эта информация не может быть показана.

Отчеты по опциям -f и -s представляют собой ряд строк, каждая из которых представлена в форме:

number description (число описание),

которая обозначает, что (number)-элементов, описанных параметром description, имеет место (или с момента загрузки, или за последние (interval)-секунд)). Эти отчеты должны быть самодостаточными.

ФАЙЛЫ

/xenix Список имен по умолчанию. /dev/kmem Источник статистики, принятый по умолчанию.

ЗАМЕЧАНИЯ

Эта утилита используется только в машинах на базе процессора 80386 и может быть не включена в вашу систему.

СМ. ТАКЖЕ

, , .








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VOLCOPY(1M)


НАЗВАНИЕ

volcopy - буквальное копирование файловой системы

СИНТАКСИС

/etc/volcopy [-a] [-s] имя_файловой_системы исходное_устройство имя_тома1 целевое_устройство имя_тома2

ОПИСАНИЕ

Утилита volcopy выполняет буквальное копирование файловой системы, используя размер блока, соответствующий устройству. Опции трактуются следующим образом:

-a Вместо стандартной 10-секундной задержки перед началом копирования применить запросы, требующие подтверждения. -s Использовать стандартный способ подтверждения "DEL if wrong", то есть пользователю дается 10 секунд на то, чтобы проверить правильность заданных аргументов и в случае обнаружения ошибки ввести символ прерывания. Опция используется по умолчанию.

Утилита запрашивает информацию о длине ленты и плотности записи, если она не указана в командной строке или не записана в метке ленты. Если файловая система слишком велика, чтобы поместиться на одну ленту, volcopy выдаст запрос на дополнительные ленты. На всех лентах проверяются метки. Ленты могут монтироваться попеременно на двух или более лентопротяжных устройствах. При прерывании volcopy пользователя спросят о том, хочет ли он совсем выйти или только запустить shell. В последнем случае можно выполнить различные операции [например, )] и вернуться в утилиту volcopy с помощью выхода из порожденного shell'а.

Имя_файловой_системы и имя_тома даются с помощью команды . Эти имена хранятся в последних 12 байтах суперблока. Если в качестве имени_тома задать -, используется существующее имя.

Исходное_устройство и целевое_устройство должны быть сегментами физического диска или лентами (например, /dev/dsk/hd0s1, /dev/mt и т.д.).

Имя_файловой_системы, исходное_устройство, имя_тома1 относятся к копируемой файловой системе. Целевое_устройство и имя_тома2 относятся к устройству, на которое выполняется копирование.

ФАЙЛЫ

/etc/log/filesave.log Информация о скопированных фай- ловых системах/томах.

СМ. ТАКЖЕ

.

в Справочнике программиста.

в Справочнике пользователя.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VOLUME(1M)


НАЗВАНИЕ

volume - вывод таблицы томов

СИНТАКСИС

/etc/volume [-u] [-t] [-s] [-h] [-c] [-l] [бесструктурное_устройство ..

ОПИСАНИЕ

Команда volume выдает на стандартный вывод список основных параметров, относящихся к томам на данном бесструктурном_устройстве.

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

-u Номер устройства. -t Тип диска. -s Количество секторов на дорожке. -h Число головок. -c Число цилиндров. -l Длина в блоках устройства с младшим номером.

Выдаваемые параметры томов соответствуют содержимому включаемого файла .

ПРИМЕРЫ

/etc/volume /dev/rdsk/hd[01]s7 unit typ s/tr hd0 hd/vol cyl/vol minor:from size 0 0 19 0 0 0 0 300000 /de 0 10 19 0 0 0 0 144000 /de /etc/volume -l /dev/rdsk/hd0s0 50000

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VPRINTF(3S)


НАЗВАНИЕ

vprintf, vfprintf, vsprintf - форматный вывод списка аргументов, заданного по правилам varargs

СИНТАКСИС

#include <stdio.h>

#include <varargs.h>

int vprintf (format, ap) char *format; va_list ap;

int vfprintf (stream, format, ap) FILE *stream; char *format; va_list ap;

int vsprintf (s, format, ap) char *s, *format; va_list ap;

ОПИСАНИЕ

Функции vprintf, vfprintf, vsprintf эквивалентны функ- циям printf, fprintf, sprintf соответственно, но вместо явного списка аргументов переменной длины им передается список, заданный по правилам .

ПРИМЕР

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

#include <stdio.h>

#include <varargs.h>

... /* Вызов подпрограммы диагностики должен выглядеть так: error(имя_функции, формат, арг1, арг2 ...); */ /*VARARGS*/ void error (va_alist) /*

Отметим, что аргументы имя_функции и формат не могут быть продекларированы отдельно в силу определения varargs.

*/ va_dcl { va_list args; char *fmt;

va_start(args) /* Печать имени функции, вызвавшей ошибку */ (void) fprintf (stderr, "ERROR in %s: ", va_arg(args,char *)); fmt = va_arg(args, char *); /* Печать оставшейся части сообщения */ (void) vfprintf (stderr, fmt, args); va_end(args); (void) abort (); }

СМ. ТАКЖЕ

, .

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VSH(1)


НАЗВАНИЕ

vsh - экранный shell

СИНТАКСИС

vsh [-] [-f]

ОПИСАНИЕ

Vsh - это высокоинтерактивный, экранный интерпретатор команд, во многом облегчающий деятельность программиста. Большинство команд вызывается посредством нажатия одной клавиши. С помощью этих команд можно просмотреть каталоги, войти в редакторы, вызвать компиляторы. Пользователям-новичкам будет легче изучить vsh, нежели обычный shell.

При входе в vsh на экране изображается текущий каталог. Каждый элемент каталога помечен буквой. Действие, которое производится после выбора элемента, зависит от его природы. Например, если элемент является каталогом, то vsh изменяет текущий каталог. Текстовые файлы редактируются.

Vsh может вывести на стандартный (80x24) экран до двадцати файлов одновременно. Каталоги с большим количеством файлов разбиваются на страницы по двадцать файлов в каждой, а страниц создается столько, сколько нужно для изображения всего текущего каталога. Для выбора страницы необходимо ввести цифру 0-9. Страницы нумеруются, начиная с единицы, а 0 обозначает последнюю страницу.

Достоинство vsh - интеграция с компиляторами и редакторами. Чтобы начать компиляцию, необходимо ввести символ М. После этого vsh вызывает . Результаты компиляции сохраняются и позже их можно просмотреть на предмет наличия ошибок. Vsh нумерует каждую ошибку и ее можно выбрать с помощью ввода номера. После выбора vsh вызывает редактор для нужного файла и позиционирует курсор на строку с ошибкой. Пользователь может переходить от редактора к vsh до тех пор, пока не будет готов к следующей компиляции.

ОПЕРАЦИИ С КАТАЛОГОМ

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

CTRL+D

Покинуть vsh (нажмите CTRL+D дважды).

a-z Выбрать соответствующий файл.

1-9 Выбрать страницы 1-9.

0 Выбрать последнюю страницу.

+, CTRL+F, CTRL+D

Выбрать следующую страницу.

-, CTRL+U

Выбрать предыдущую страницу.

/ Сделать текущим корневой каталог.

\, перевод_строки


Сделать текущим предыдущий каталог.

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

! Выйти в shell (с возвратом в vsh).

% Выйти в shell (без возврата в vsh).

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

CTRL+L

Перерисовать изображение.

D Вывести дату.

T Вывести постранично текстовый файл. Vsh запрашивает имя файла и изображает его как текст в коде ASCII.

P Выдать состояние процессов.

W Команда . Выдаются имена пользователей, находящихся в данное время в системе.

X Выполнить команду shell'а (команда запрашивается).

Y Заново вызвать предыдущую команду shell'а (введенную с помощью X).

F Выбрать файл по имени. Vsh запрашивает имя файла, затем выбирает специфицированный файл.

C Создать новый файл. Vsh запрашивает имя и тип файла. Таким образом можно создавать текстовые файлы и каталоги. Также можно копировать, переименовывать и делать ссылки на существующие файлы.

L Вывести информации о файлах в длинном формате. Для каждого файла vsh выдает информацию о защите аналогично команде ls -l.

O Вывод опций. Выводится содержимое таблиц команд и параметров. Затем vsh запрашивает команды, которые модифицируют параметры и которые создают, модифицируют и удаляют команды.

РЕЖИМ УДАЛЕНИЯ

R Вход в режим удаления. В этом режиме выбираемый файл помечается для удаления символами //. У повторно выбранных файлов отметки стираются. Нажатие R во второй раз вызывает удаление всех отмеченных файлов и выход из режима удаления.

возврат_каретки, CTRL+D

Выход из режима удаления без удаления отмеченных файлов.

a-z Отметить для удаления соответствующий файл.

* Отметить для удаления все файлы на текущей странице.

0-9, +, -

Выбрать другую страницу.

Взаимодействие с командами make и grep

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

G Запустить grep. Vsh запрашивает шаблон поиска и имена файлов, а затем запускает grep с этими аргументами. Результаты сохраняются в файле .grepout и выводятся в режиме просмотра (см. ниже).

S Перейти в режим просмотра результатов работы предыдущей команды grep.

M Запустить make. Выполнение управляется файлом makefile из текущего каталога. Вывод идет как на экран, так и в файл .makerror. После окончания работы команды make vsh выдает файл .makerror в режиме просмотра.

N Параллельный make. Команда make запускается, но vsh не ждет окончания ее работы. Вывод сохраняется в файле .makerror, но не изображается на экране. Когда make кончает работу, на терминале дважды звенит звонок. Посредством команды E можно просмотреть результаты.

E Перейти в режим просмотра результатов работы предыдущей команды make.

ПРОСМОТР ФАЙЛОВ

номер p

Вывести файл, начиная с указанной строки.

номер e

Проверить строку на наличие в ней имени файла и номера строки. Если имя файла найдено, то для этого файла запускается редактор.

возврат_каретки

Вывести следующие двенадцать строк.

CTRL+D, q

Выход из режима просмотра.

СМ. ТАКЖЕ

.

СЮРПРИЗЫ

Опции команды vsh не описаны.








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


VSPLIT(1M)


НАЗВАНИЕ

vsplit - расщепление входного потока на несколько томов и наоборот

СИНТАКСИС

/etc/vsplit [-i] [-o] [-l имя] [-k размер_буфера] устройство

ОПИСАНИЕ

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

Опциям утилиты vsplit приписан следующий смысл:

-i Читать с указанного устройства, писать на стандартный вывод.

-o Читать со стандартного ввода, писать на указанное устройство.

-l имя

Использовать имя (из которого берется не более 9 первых символов) в качестве метки томов. Подразумеваемая метка - " ". Если при чтении с устройства имя не задано, используется метка первого тома.

-k размер_буфера

Размер внутреннего буфера задается в килобайтах. Подразумеваемое значение равно 1.

При выводе утилита vsplit записывает на каждый том головной блок размером в килобайт. Этот блок имитирует суперблок файловой системы. В поле метки (последние 12 байт) помещается имя и номер записываемого тома: /01, /02 и т.д.

При вводе vsplit читает головные блоки и сравнивает метки. Если метка отличается от требуемой, том отвергается.

Всякий раз, когда требуется новый том, vsplit выдает сообщение на устройство /dev/tty и ожидает ответа.

ПРИМЕРЫ

Сохранить файловую систему на дискетах:

find / -print | cpio -om | /etc/vsplit -l backup \ -o /dev/rdsk/fd

Прочитать ее обратно:

vsplit -l backup -i /dev/rdsk/fd | cpio -idmv

СМ. ТАКЖЕ

,

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



VTTEST(1)


ИМЯ

vttest - тест терминала типа VT100

СИНТАКСИС

vttest

ОПИСАНИЕ

Программа vttest предназначена для тестирования функций терминала VT100 (или его эмулятора). Тестируется дисплей и клавиатура.

Программа построена по типу меню и содержит полное описание команд.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



Apropos(1)


ИМЯ

apropos, whatis - поиск в базе данных по ключевому слову.

СИНТАКСИС

apropos ключевое слово... whatis ключевое слово...

ОПИСАНИЕ

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

СМ. ТАКЖЕ

man(1), makewhatis(1).

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



W(1)


ИМЯ

w - выдает информацию о пользователях, находящихся в системе, и о том, что они делают.

СИНТАКСИС

w [-h l q t w][-n namelist][-s swapdev][-c corefile][-u utmpfile][user...]

ОПИСАНИЕ

Команда 'w' печатает суммарную информацию об активности системы, включая данные о том, что делает каждый пользователь. Заглавная строка показывает текущее время дня, длительность работы системы, число пользователей, зарегистрированных в системе. В системах, которые обрабатывают необходимые данные, в заглавной строке также показывается средняя загрузка системы. Средняя загрузка представляет собой число процессов, находящихся в очереди на выполнение от 1,5 до 15 минут.

ОПЦИИ

-h

Не печатать заглавные строки.

-l

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

-q

Быстрый формат. Для каждого пользователя команда 'w' печатает его регистрационное имя, тип используемого терминала или псевдотерминала, время ожидания пользователя и имя активного в настоящее время пользователя.

-t

Выводится только заглавная строка (эквивалент команды ).

-w

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

-n namelist

Аргумент берется как имя альтернативного списка имен namelist

-s swapdev

Использует файл подкачки данных swapdev вместо /dev/swap. Это полезно при проверке файла corefile.

-c corefile

Использует файл corefile вместо файла /dev/kmem.

-u utmpfile

Файл utmpfile используется вместо файла /etc/utmp как запись, кто логически подключен в настоящее время.

Если заданы имена каких-либо пользователей users, то выдается суммарная информация по этим пользователям.

ФАЙЛЫ

/etc/utmp /dev/kmem /dev/swap

СМ. ТАКЖЕ

, , , , , .

ЗАМЕЧАНИЯ

Термин "активный в настоящее время процесс" является приближенным и не всегда точен. Программные каналы могут выдавать странные результаты, как некоторые фоновые процессы. Если команда 'w' не в состоянии опознать активный в настоящее время процесс, она печатает знак '-'.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WAIT(1)


НАЗВАНИЕ

wait - ожидание завершения процесса

СИНТАКСИС

wait [идентификатор_процесса]

ОПИСАНИЕ

Команда wait ждет завершения фонового процесса (то есть процесса, запущенного посредством &) с заданным идентификатором и возвращает код его завершения. Если идентификатор_процесса не указан, ожидается завершение всех активных в настоящий момент фоновых процессов; возвращаемый код при этом получается нулевым.

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

СМ. ТАКЖЕ

.

ОГРАНИЧЕНИЯ

Если Вы получили сообщение о чрезмерном числе процессов (cannot fork, too many processes), с помощью команды дождитесь завершения фоновых процессов. Если улучшение не наступило, вероятно, переполнилась системная таблица процессов или у Вас слишком много активных приоритетных процессов. (Имеется ограничение на число процессов, ассоциированных с каждым пользователем, и на общее число процессов.)

СЮРПРИЗЫ

Не все процессы, входящие в конвейер из трех или более фаз, являются сыновьями shell'а, поэтому их завершения нельзя ждать с помощью команды wait.

Если заданный идентификатор не относится к активному процессу, ожидается завершение всех активных в настоящий момент фоновых процессов; возвращаемый код при этом получается нулевым.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


СМ. ТАКЖЕ

, , , , , , .

ПРЕДОСТЕРЕЖЕНИЯ

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

См. также ПРЕДОСТЕРЕЖЕНИЯ в .

ДИАГНОСТИКА

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








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


WAITSEM(3) XENIX System V (21 июня 1987)


ИМЯ

waitsem, nbwaitsem - oжидaeт дocтyп к pecypcy, зaкpытoмy ceмaфopoм

СИНТАКСИС

int waitsem(sem_num) int sem_num;

int nbwaitsem(sem_num) int sem_num;

ОПИСАНИЕ

Waitsem oбecпeчивaeт дocтyп к pecypcy, зaкpытoмy ceмaфopoм sem_num. Ecли pecypc иcпoльзyeтcя дpyгим пpoцeccoм, waitsem пepeвoдит вызывaющий пpoцecc в cocтoяниe oжидaния дo тex пop, пoкa pecypc нe ocвoбoдитcя; в тaкoй cитyaции nbwaitsem вoзвpaщaeт знaчeниe ENAVAIL. Waitsem и nbwaitsem иcпoльзyютcя вмecтe c sigsem для cинxpoнизaции дocтyпa к oбщeмy pecypcy. K oднoмy ceмaфopy мoгyт oбpaтитьcя нecкoлькo пpoцeccoв c пoмoщью waitsem и пepeвoдятcя в peжим oжидaния, пoкa пpoцecc, влaдeющий pecypcoм, нe издacт sigsem. Пpи этoм yпpaвлeниe пepeдaeтcя oчepeднoмy пpoцeccy, cтoящeмy в oчepeди к этoмy ceмaфopy. Oчepeдь к ceмaфopy opгaнизyeтcя пo пpинципy "Пepвым пpишeл - пepвым oбcлyжeн".

Cиcтeмнaя coвмecтимocть

Waitsem мoжeт быть иcпoльзoвaн для paбoты c ceмaфopaми, coздaнными в oпepaциoннoй cpeдe XENIX вepcии 3.0, нo нe в cpeдe XENIX System V.

СМ. ТАКЖЕ

, , .

ДИАГНОСТИКА

B cлyчae oшибки waitsem вoзвpaщaeт -1. Ecли sem_num пpeдвapитeльнo нe oткpыт пyтeм вызoвa opensem или creatsem, пepeмeннoй errno пpиcвaивaeтcя знaчeниe EBADF. Ecли sem_num нe являeтcя yкaзaтeлeм нa фaйл типa "ceмaфop", пepeмeннoй errno пpиcвaивaeтcя знaчeниe ENOTNAM. Ecли пpoцecc, влaдeющий pecypcoм, нe ocвoбoдил eгo пepeд зaвepшeниeм, вce пpoцeccы, oжидaющиe в oчepeди к этoмy pecypcy, пoлyчaт errno co знaчeниeм ENAVAIL. Пpи этoм pecypc ocтaeтcя в нeoпpeдeлeннoм cocтoянии. Ecли пpoцecc издaл двa waitsem бeз пpoмeжyтoчнoгo вызoвa sigsem, пepeмeннoй errno пpиcвaивaeтcя знaчeниe EINVAL.

ЗAМEЧAНИЯ

Дaннaя вoзмoжнocть cпeцифичнa для oпepaциoннoй cpeды XENIX и, вoзмoжнo, нe мoжeт быть пpимeнeнa в дpyгиx cиcтeмax UNIX. Пpи кoмпoнoвкe нeoбxoдимo yкaзывaть флaг -lx.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WALL(1M)


НАЗВАНИЕ

wall - передача сообщений всем пользователям

СИНТАКСИС

/etc/wall

ОПИСАНИЕ

Команда wall читает текст сообщения со стандартного ввода, пока не встретит конец файла. Затем сообщение рассылается всем активным пользователям. Сообщению предпосылается строка:

Broadcast Message from ... (Всем! Всем! Всем! Сообщение от ...)

Команда wall используется для передачи предупреждений всем пользователям (обычно перед выключением системы).

Преодолеть защиту от приема сообщений, установленную для себя кем-либо из пользователей [см. ], может только отправитель-суперпользователь.

ФАЙЛЫ

/dev/tty*

СМ. ТАКЖЕ

, в Справочнике пользователя.

ДИАГНОСТИКА

Cannot send to ...


Не удается открыть tty-файл пользователя.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WALL(8)


НАЗВАНИЕ

wall - Передача информации всем пользователям.

СИНТАКСИС

/etc/wall

ОПИСАНИЕ

wall читает сообщение из стандартного ввода до появления символа конца файла. Затем она пересылает это сообщение всем пользователям, подключенным в текущий момент к системе, предваряя его строкой "Broadcast Message from ..." (Общесетевое сообщение от ...). wall используется для оповещения всех пользователей, к примеру, о выключении системы.

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

ФАЙЛЫ

/dev/tty*

СМ. ТАКЖЕ

,

ДИАГНОСТИКА

Cannot send to ... Не открывается файл на терминале пользователя.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WC(1)


НАЗВАНИЕ

wc - подсчет количества символов, слов и строк в файле

СИНТАКСИС

wc [-l] [-w] [-c] [файл ...]

ОПИСАНИЕ

Команда wc подсчитывает строки, слова и символы, читая их из указанных файлов или со стандартного ввода, если файлы не заданы. Подсчитывается также общий итог для всех указанных файлов.

Слово - это максимальная цепочка символов, не содержащая пробелов, табуляций и переводов строк.

Опциям команды wc приписан следующий смысл:

-l Подсчет числа строк. -w Подсчет числа слов. -c Подсчет числа символов.

Можно задавать любую комбинацию этих опций. По умолчанию используется набор -lwc.

Если в командной строке указаны имена файлов, то они выводятся после соответствующих сумм.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WHAT(1)


НАЗВАНИЕ

what - идентификация SCCS-файлов

СИНТАКСИС

what [-s] файл ...

ОПИСАНИЕ

Команда what ищет в указанных файлах все вхождения шаблона, который подставляет вместо значения ключевого слова %Z% (в настоящее время это @(#)) и печатает все символы, следующие за ним до тех пор, пока не встретятся ", >, перевод_строки, \, или символ с кодом 0. Например, если программа на языке C, хранящаяся в файле f.c, содержит

char ident[] = "@(#)идентифицирующая информация";

и из файла f.c получились файлы f.o и a.out, то команда

what f.c f.o a.out

напечатает

f.c: идентифицирующая информация f.o: идентифицирующая информация a.out: идентифицирующая информация

Команда what предназначена для использования совместно с командой , которая вставляет идентифицирующую информацию автоматически, но ее можно использовать также и в случае ручного занесения информации.

У команды есть только одна опция:

-s Найти в каждом файле только первое вхождение заданного шаблона.

СМ. ТАКЖЕ

, .

КОДЫ ЗАВЕРШЕНИЯ

0 Шаблон удалось найти. 1 Шаблон найти не удалось.

ДИАГНОСТИКА

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

СЮРПРИЗЫ

Возможно, что сочетание @(#) окажется в файле случайно, но в большинстве случаев неприятностей это не доставляет.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WHEREIS(1) FreeBSD Reference Manual


ИМЯ

whereis - locate programs

СИНТАКСИС

whereis [program...]

ОПИСАНИЕ

Утилита whereis просматривает директории и выдает путь к указанной программе.

СМ. ТАКЖЕ

sysctl(8),

ИСТОРИЯ

Команда whereis появилась в 3.0BSD.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WHICH(1) FreeBSD Reference Manual


ИМЯ

which - ищет программный файл.

СИНТАКСИС

which [-as] [command] ...

ОПИСАНИЕ

Which выдает путь к указанному в аргументе command исполняемому файлу.

ОПЦИИ

-a Список всех похожих исполнимых файлов. -s Не выводить путь. Возвращает 0, если файл найден и 1, если файл не найден.

ИСТОРИЯ

Команда which появилась в FreeBSD 2.1

СМ. ТАКЖЕ

perl(1)

АВТОР

Wolfram Schneider .

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WHO(1)


НАЗВАНИЕ

who - кто в системе?

СИНТАКСИС

who [-u] [-T] [-l] [-H] [-q] [-p] [-d] [-b] [-r] [-t] [-a] [-s] [файл] who am i

ОПИСАНИЕ

Команда who сообщает имя пользователя, имя терминальной линии, астрономическое время начала сеанса, продолжительность бездействия терминальной линии с момента последнего обмена, идентификатор процесса интерпретатора команд shell для каждого из пользователей, работающих в системе UNIX. Для получения этой информации команда просматривает файл /etc/utmp. Впрочем, вместо него может просматриваться другой файл, имя которого должно быть тогда указано в командной строке (файл должен иметь формат utmp[4]). Обычно в качестве файла указывают /etc/wtmp, где зафиксированы времена начала всех сеансов с момента его последнего создания.

Команда who с опциями am i или am I идентифицирует обратившегося с ней пользователя.

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

NAME [STATE] LINE TIME [IDLE] [PID] [COMMENT] [EXIT]

Информация NAME, LINE и TIME выдается при всех опциях, кроме -q; STATE - только при -T; IDLE и PID - только при -u и -l; и, наконец, COMMENT и EXIT - только при -a. Какая информация выдается в случае опций -p, -d и -r, подробно об ясняется для каждой из них отдельно.

Задавая различные опции, с помощью команды who можно получить информацию о времени начала и конца сеансов, перезагрузок, корректировках системных часов, а также о других процессах, порожденных процессом init. Опции эти таковы:

-u Выдать информацию только о тех пользователях, которые в настоящий момент работают в системе. NAME - это входное имя пользователя. LINE - имя терминальной линии, под которым она фигурирует в каталоге /dev. TIME - астрономическое время начала сеанса. IDLE - количество часов и минут, протекших с последнего момента активизации данной линии. Точка (.) свидетельствует о том, что данный терминал находился в активном состоянии не более минуты тому назад, то есть о том, что это действующий терминал. Если с тех пор прошло более 24 часов или если линия не была использована с момента загрузки, то сообщение маркируется как старое (old). Это поле оказывается полезным при попытке определить, работает ли кто-нибудь за терминалом. PID - идентификатор процесса интерпретатора shell, обслуживающего данного пользователя. COMMENT - комментарий, характеризующий данную линию; берется из соответствующего поля файла /etc/inittab [его описание см. в ]. Этот файл может содержать, например, сведения о местоположении терминала, телефонном номере комнаты или о типе физического терминала.

-T Эта опция аналогична опции -s с той разницей, что дополнительно выводится информация о состоянии терминальной линии (в позиции STATE). Здесь под состоянием имеется в виду возможность передавать сообщения на этот терминал со стороны кого-либо другого. Терминалу, на который передавать сообщения может любой, отвечает состояние "+"; если это не так - состояние "-". Пользователь root может передавать сообщения во все линии, которым отвечает состояние "+" или "-". При обнаружении неисправной линии печатается "?".

-l Перечислить только те линии, на которых система ожидает входа в нее какого-либо пользователя. Поле NAME в таких случаях содержит слово LOGIN. Другие поля имеют такой же смысл, как и в сообщении о пользователе, с той разницей, что не существует поля STATE.

-H При этой опции над обычными сообщениями печатаются названия столбцов.

-q Реализует быстрый вариант команды who, отображающей только имена и количество пользователей, работающих в настоящий момент в системе. При этой опции все прочие игнорируются.

-p Перечисляет все другие процессы, активные в настоящий момент, которые были порождены процессом init. Поле NAME содержит название программы, исполняемой процессом init, которое берется из файла /etc/inittab. Поля STATE, LINE, IDLE смысла не имеют. В поле COMMENT отображается поле идентификатора из строки файла /etc/inittab, вызвавшей порождение этого процесса. См. .

-d Выдать информацию о всех процессах, которые прекратили существование и не были заново порождены процессом init. У мертвых процессов появляется поле EXIT, которое содержит значения системного и пользовательского кодов завершения [возвращенных системным вызовом ]. Это может оказаться полезным при выяснении причин аварийного окончания процесса.

-b Выдать время и дату последней загрузки системы.

-r Выдать текущий уровень выполнения процесса init. Кроме этого, будут выданы идентификатор процесса, системный код завершения и пользовательский код завершения процесса [см. ].

-t Выдать информацию о последней корректировке системных часов [посредством команды ] пользователем root. См. .

-a Обрабатывать файл /etc/utmp или файл, указанный в команде, считая все опции (кроме THqs) включенными.

-s Выдавать только поля NAME, LINE и TIME; это опция, принимаемая по умолчанию. <


/p>

Примечание для суперпользователя: после закрытия системы и перевода ее в однопользовательский режим, команда who просто возвращает приглашение; причина в том, что поскольку файл /etc/utmp корректируется в момент входа в систему, а в однопользовательском режиме вход в систему не производится, команда who не может отразить это состояние корректно. Команда who am i, однако, выдает правильную информацию.

ФАЙЛЫ

/etc/utmp /etc/wtmp /etc/inittab

СМ. ТАКЖЕ

, , , .

, , в Справочнике программиста. в Справочнике администратора.

СЮРПРИЗЫ

При использовании опции -d поле EXIT не выдается; появляется только при опции -a.

Если длина входного имени пользователя превышает 7 символов, команда who am i не работает.








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


WHODO(1M)


НАЗВАНИЕ

whodo - кто что делает

СИНТАКСИС

/etc/whodo

ОПИСАНИЕ

Команда whodo датирует и выводит в отформатированном виде информацию, содержащуюся в файлах /etc/utmp и /etc/ps_data.

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

ПРИМЕР

Команда

/etc/whodo

выдаст примерно следующее:

Thu Dec 19 12:00:16 1988 U10

console hindin 10:56 console 145 0:43 rk.20.01

tty2 galat 10:48 tty2 112 1:51 rk.20.01 tty2 242 0:00 whodo

tty5 dmitriew 10:49 tty5 244 0:01 sh

ФАЙЛЫ

/etc/passwd /etc/ps_data /etc/utmp

СМ. ТАКЖЕ

, в Справочнике пользователя.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WHOIS(1) FreeBSD Reference Manual


ИМЯ

whois - Сервис Internet по поиску пользователя по имени.

СИНТАКСИС

whois [-h hostname] name ...

ОПИСАНИЕ

Whois просматривает записи в Network Information Center (NIC) базе данных.

ОПЦИИ

-h Использовать указанное имя хоста вместо nic.ddn.mil по умолчанию.

Программа просматривает базу данных и осуществляет поиск указанного имени во всех типах записей (name, nicknames, hostname, net address, и т.п.) в базе данных. Для более подробной информации по этому сервису используйте специальное имя help (whois help).

СМ. ТАКЖЕ

RFC 812: Nicname/Whois

ИСТОРИЯ

Команда whois появилась в 4.3BSD.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



WRITE(1)


НАЗВАНИЕ

write - передача сообщений другому пользователю

СИНТАКСИС

write пользователь [линия]

ОПИСАНИЕ

Команда write копирует строки с Вашего терминала на терминал другого пользователя. Команда прежде всего посылает адресату сообщение:

Message from Ваше_имя (tty??) [дата]...

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

В этот момент адресату следует послать Вам ответное сообщение. Сеанс связи будет продолжаться до тех пор, пока с Вашего терминала не будет считан символ конца файла, не будет послано прерывание или адресат не выполнит команду mesg -n, после чего команда write передаст сообщение EOT (конец передачи) на другой терминал и завершит свое выполнение.

Если Вы хотите передавать сообщения пользователю, который вошел в систему более одного раза, то указать, с какой именно линией или терминалом следует установить связь, можно посредством аргумента линия (например, tty10); иначе адрес будет определен по первому упоминанию о пользователе в файле /etc/utmp, а Вам будет выдано сообщение:

пользователь is logged on more than one place. You are connected to терминал Other locations are: терминал

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

Если строка начинается с символа !, то команда write вызывает shell для исполнения остальной части строки как команды.

При использовании команды write рекомендуется придерживаться следующего протокола: если Вы только что выдали команду write, то дождитесь ответа адресата, прежде чем что-либо ему передавать. Каждый должен заканчивать сообщение каким-нибудь четко различимым признаком конца [например, (o) вместо "over" - конец сообщения], чтобы партнер знал, когда отвечать. В качестве признака завершения сеанса связи рекомендуется передавать (oo) (вместо "over and out" - конец сообщения и сеанса).

ФАЙЛЫ


/etc/utmp Для идентификации пользователя. /bin/sh для отработки "!".

СМ. ТАКЖЕ

, , , , .

ДИАГНОСТИКА

Пользователь not logged in

Пользователь, которому Вы пытаетесь передать сооб щение, не работает в системе.

Permission denied

Пользователь, которому Вы пытаетесь передать сооб щение, не дает на это разрешения.

Warning: cannot respond, set mesg -y

Ваш терминал находится в режиме mesg -n и адресат не может вам ответить.

Can no longer write to user

Адресат отменил разрешение (посредством mesg -n) после того, как Вы начали передачу сообщения.








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


WTMP(5)XENIX System V (1 янвapя 1989)


НАЗВАНИЕ

wtmp - фopмaты utmp и wtmp.

СИНТАКСИС

#include <sys/types.h> #include <utmp.h>

ОПИСАНИЕ

Фaйлы, кoтopыe coдepжaт инфopмaцию oвлaдeльцe, тeкyщaя инфopмaция для тaкиx кoмaнд, кaк , и , иcпoльзyют cтpyктypy, oпиcaннyю в utmp.h:

#define UTMP_FILE "/etc/utmp" #define WTMP_FILE "/etc/wtmp" #define ut_name ut_user

struct utmp{ char ut_user[8]; /* имя пoльзoвaтeля*/ char ut_id[4]; /* oбычнo cтpoкa #*/ char ut_line[12]; /* yмя ycтpoйcтвa (кoнcoль, пpинтep lnxx*/ short ut_pid; /* нoмep пpoцecca*/ short ut_type; /* тип вxoдa*/ struct exit_status{ short e_termination; /* cтaтyc зaвepшeния пpoцecca*/ short e_exit; /* cтaтyc зaвepшeния пpoцecca*/ } time_t ut_time; /* вpeмя вxoдa*/ };

#define EMPTY 0 #define RUN_LVL 1 #define BOOT_TIME 2 #define OLD_TIME 3 #define NEW_TIME 4 #define INIT_PROCESS 5 /* пpoцecc пopoждeн пpoцeдypoй "init"*/ #define LOGIN_PROCESS 6 /* пpoцecc "getty" oжидaeт имя */ #define USER_PROCESS 7 /* пoльзoвaтeльcкий пpoцecc*/ #define DEAD_PROCESS 8 #define ACCOUNING 9 #define UTMAXTYPE ACCOUNTING /* нaибoльшaя вoзмoжнaя вeличинa ut_type*/ /* Cпeциaльныe cтpoки фopмaтoв, иcпoльзyeмыe в пoлe "ut_line", */ /* кoгдa тeкyщим являeтcя нeкoтopый дpyгoй пpoцecc. */ /* Cтpoкa для пoля "ut_line" нe мoжeт быть бoлee 11 cимвoлoв */ /* + нyлeвoй cимвoл кaк пpизнaк кoнцa фaйлa */

ФАЙЛЫ

/usr/include/utmp.h /etc/utmp /etc/wtmp

СМ. ТАКЖЕ

getut(2), , ,

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



XARGS(1)


НАЗВАНИЕ

xargs - формирование списка аргументов и выполнение команды

СИНТАКСИС

xargs [-lчисло] [-iзам_цеп] [-nчисло] [-t] [-p] [-x] [-sразмер] [-e[лконф_цеп]] [команда [начальный_аргумент ...]]

ОПИСАНИЕ

Команда xargs об единяет зафиксированный набор заданных в командной строке начальных_аргументов с аргументами, прочитанными со стандартного ввода, и выполняет указанную команду один или несколько раз. Число аргументов, которые должны быть прочитаны для каждого вызова команды, и способ, которым они об единяются, определяются заданными опциями.

Xargs использует значение переменной окружения $PATH для поиска команды, которая может быть файлом shell'а. Если команда опущена, используется /bin/echo.

Аргументы, прочитанные со стандартного ввода, - это непрерывные цепочки символов, разделенные одним или несколькими пробелами, символами табуляции или переводами строки; пустые строки игнорируются. Чтобы включить в аргумент пробелы и табуляции, их надо выделить символами \ или кавычками; символы, заключенные в кавычки (одинарные или двойные) воспринимаются буквально; сами кавычки удаляются. Вне цепочек в кавычках обратная наклонная черта (\) вместе со следующим символом обозначает соответствующий управляющий символ.

Конструирование каждого списка аргументов начинается с начальных_аргументов, за ними следует несколько аргументов со стандартного ввода (есть исключение: см. опцию -i). Опции -i, -l и -n определяют, как выбирать аргументы для каждого вызова команды. Когда ни одна из этих опций не указана, за начальными_аргументами следует несколько аргументов, прочитанных подряд со стандартного ввода до заполнения внутреннего буфера; затем выполняется команда с накопленными аргументами. Данный процесс повторяется до тех пор, пока все аргументы не будут исчерпаны. Если указаны взаимоисключающие опции (например, одновременно заданы опции -l и -n), берется во внимание последняя.

Опциям команды xargs приписан следующий смысл:

-lчисло

Выполнять команду для каждой группы из заданного числа непустых строк аргументов, прочитанных со стандартного ввода. Последний вызов команды может быть с меньшим числом строк аргументов. Считается, что строка заканчивается первым встретившимся символом перевода строки, если только перед ним не стоит пробел или символ табуляции; пробел/табуляция в конце сигнализируют о том, что следующая непустая строка является продолжением данной. Если число опущено, оно считается равным 1. Опция -l включает опцию -x.

-iзам_цеп


Режим вставки: команда выполняется для каждой строки стандартного ввода, причем вся строка рассматривается как один аргумент и подставляется в начальные_аргументы вместо каждого вхождения цепочки символов зам_цеп. Допускается не более 5 начальных_аргументов, содержащих одно или несколько вхождений зам_цеп. Пробелы и табуляции в начале вводимых строк отбрасываются. Сформированные аргументы не могут быть длиннее 255 символов. Если цепочка зам_цеп не задана, она полагается равной { }. Опция -i включает опцию -x.

-nчисло

Выполнить команду, используя максимально возможное количество аргументов, прочитанных со стандартного ввода, но не более заданного числа. Будет использовано меньше аргументов, если их общая длина превышает размер (см. ниже опцию -s), или если для последнего вызова их осталось меньше, чем заданное число. Если указана также опция -x, каждая группа из указанного числа аргументов должны укладываться в ограничение размера, иначе выполнение xargs прекращается.

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

-p Режим с приглашением: xargs перед каждым вызовом команды запрашивает подтверждение. Включается режим трассировки (-t), за счет чего печатается вызов команды, который должен быть выполнен, а за ним - приглашение ?.... Ответ y (за которым может идти что угодно) приводит к выполнению команды; при каком-либо другом ответе, включая возврат каретки, данный вызов команды игнорируется.

-x Завершить выполнение, если очередной список аргументов оказался длиннее, чем размер (в символах). Опция -x включается опциями -i и -l. Если ни одна из опций -i, -l или -n не указана, общая длина всех аргументов должна укладываться в ограничение размера.

-sразмер

Максимальный общий размер (в символах) каждого списка аргументов установить равным заданному размеру. Размер должен быть положительным числом, не превосходящим 470 (подразумеваемое значение). При выборе размера следует учитывать, что к каждому аргументу добавляется по одному символу; кроме того, запоминается число символов в имени команды.

-e[лконф_цеп]



Цепочка символов лконф_цеп считается признаком логического конца файла. Если опция -e не указана, признаком конца считается подчеркивание (_). Опция -e без лконф_цеп аннулирует возможность устанавливать логический конец файла (подчеркивание при этом рассматривается как обычный символ). Команда xargs читает стандартный ввод до тех пор, пока не дойдет до конца файла или не встретит цепочку лконф_цеп.

Выполнение программы xargs прекращается, если она получает от команды код завершения -1 или если команда не может быть выполнена. Если команда - это shell-программа, она должна явно выполнять exit [см. ] с соответствующим аргументом, чтобы избежать случайного возврата кода -1.

ПРИМЕРЫ



Следующая shell-процедура пересылает все файлы из каталога $1 в каталог $2 и сообщает о каждой пересылке перед тем, как ее выполнить:

ls $1 | xargs -i -t mv $1/{} $2/{}

Следующая команда об единяет вывод команд, заключенных в скобки, в одну строку, которая затем добавляется в конец файла log:

(logname; date; echo $0 $*) | xargs >>log

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

ls | xargs -p -l ar r arch ls | xargs -p -l | xargs ar r arch

Следующая shell-процедура применяет команду к последовательным парам своих аргументов.

echo $* | xargs -n2 diff

СМ. ТАКЖЕ

.

ДИАГНОСТИКА

Не требует пояснений








Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


XSTR(1) XENIX System V (21 июня 1987)


ИМЯ

xstr - извлeчeниe cтpoк из пpoгpaмм нa Cи

СИНТАКСИС

xstr [ -c ] [ - ] [ file ]

ОПИСАНИЕ

Xstr paбoтaeт c фaйлoм strings в кoтopoм нaxoдятcя cтpoки, извлeчeнныe из бoльшoй пpoгpaммы, и инфopмaция o xeшиpoвaнии. Cтpoки зaмeняютcя ccылкaми нa этy oбщyю oблacть. Taким oбpaзoм peaлизyeтcя paздeлeниe cтpoкoвыx кoнcтaнт, чтo ocoбeннo пoлeзнo пpи oбъявлeнии иx дocтyпными тoлькo для чтeния.

Koмaндa

xstr -c name

извлeкaeт cтpoки из фaйлa нa Cи, зaмeняя ccылки нa ниx выpaжeниeм (&xstr[number]). K фaйлy дoпиcывaeтcя cooтвeтcтвyющee oпpeдeлeниe, пoдcтaвляeмoe пpoгpaммoй xstr. Peзyльтиpyющий тeкcт зaтeм пoмeщaeтcя в фaйл x.c для пocлeдyющeй кoмпиляции. Извлeчeнныe cтpoки пoмeщaютcя в бaзy дaнныx strings ecли oни тaм oтcyтcтвoвaли. Пoвтopяющиecя cтpoки или cтpoки, являющиecя cyффикcaми к yжe cyщecтвyющим, бaзy дaнныx нe измeняют.

Пocлe кoмпиляции вcex кoмпoнeнтoв бoльшoй пpoгpaммы coздaeтcя фaйл xs.c oпpeдeляющий oбщyю oблacть. Oн coздaeтcя кoмaндoй

xstr -c name1 name2 ...

Фaйл xs.c кoмпилиpyeтcя и кoмпoнyeтcя c ocтaльными фaйлaми пpoгpaммы. Пpи вoзмoжнocти eгo cлeдyeт пoмecтить в ceгмeнт, дocтyпный тoлькo для чтeния, чтo cэкoнoмит пaмять и cнизит нaгpyзкy пpи cвoпингe.

Xstr мoжeт иcпoльзoвaтьcя и для oднoгo фaйлa. Koмaндa

xstr name

coздaeт фaйлы x.c и xs.c бeз coздaния или иcпoльзoвaния фaйлa strings в этoм кaтaлoгe.

Moжeт oкaзaтьcя пoлeзным зaпycкaть xstr пocлe пpeпpoцeccopнoй oбpaбoтки, в peзyльтaтe кoтopoй мoгyт пoявлятьcя нoвыe cтpoки, или чacть cтpoк мoжeт oкaзaтьcя нe нyжнa. Xstr выпoлняeт чтeниe co cтaндapтнoгo ввoдa пpи yкaзaнии apгyмeнтa `-'. Для зaпycкa xstr пocлe пpeпpoцeccopa мoжнo выпoлнить cлeдyющyю пocлeдoвaтeльнocть кoмaнд:

cc -E name.c | xstr -c cc -c x.c mv x.o name.o

Xstr нe oбнoвляeт фaйл strings ecли нe зaдaны нoвыe cтpoки, пoэтoмy make мoжeт нe пepecтpaивaть xs.o бeз нeoбxoдимocти.

ФАЙЛЫ

strings Бaзa дaнныx cтpoк x.c Oбpaбoтaнный тeкcт нa Cи xs.c Oбъявлeниe мaccивa xstr /tmp/xs* Bpeмeнный фaйл пpи oбxoдe strings

СМ. ТАКЖЕ

mkstr1)

ПPИМEЧAНИЯ

Ecли cтpoкa являeтcя cyффикcoм жpyгoй бoлee длиннoй cтpoки, нo кopoткaя cтpoкa вcтpeчaeтcя пepвoй, xstr пoмecтит в фaйл oбe cтpoки, тoгдa кaк в пpoтивнoм cлyчae тyдa пoпaлa бы тoлькo длиннaя.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



BESSEL(3M)


НАЗВАНИЕ

bessel: j0, j1, jn, y0, y1, yn - функции Бесселя

СИНТАКСИС

#include <math.h>

double j0 (x) double x;

double j1 (x) double x;

double jn (n, x) int n; double x;

double y0 (x) double x;

double y1 (x) double x;

double yn (n, x) int n; double x;

ОПИСАНИЕ

Функции j0 и j1 возвращают значения функций Бесселя первого рода, порядка 0 и 1 соответственно, для заданного аргумента x. Функция jn возвращает значение функции Бесселя первого рода, порядка n для заданного аргумента x.

Функции y0 и y1 возвращают значения функций Бесселя второго рода (или, иначе, функций Неймана), порядка 0 и 1, соответственно для заданного аргумента x. Функция yn возвращает значение функции Бесселя второго рода, порядка n для заданного аргумента x. Значение x должно быть положительным.

СМ. ТАКЖЕ

.

ДИАГНОСТИКА

При неположительных аргументах функции y0 и y1 возвращают значение -HUGE [см. ], а переменной errno присваивается значение EDOM. Кроме того, в стандартный протокол будет выдано сообщение о выходе за границы области определения.

При аргументах, слишком больших по абсолютной величине, функции j0, j1, y0 и y1 возвращают нулевое значение и переменной errno присваивается значение ERANGE. Кроме того, в стандартный протокол будет выдано сообщение о потере значимости.

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

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



PASSWD(1)


НАЗВАНИЕ

passwd,yppasswd - смена входного пароля

СИНТАКСИС

passwd [входное_имя]

ОПИСАНИЕ

Команда passwd меняет (или устанавливает) пароль, связанный с входным_именем пользователя.

Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.

Команда запрашивает у обычных пользователей старый пароль (если он был), а затем дважды запрашивает новый. После первого запроса проверяется, достаточен ли "возраст" старого пароля. Возраст - это промежуток времени (обычно несколько дней), который должен пройти между сменами пароля. Если возраст недостаточен, новый пароль отвергается и passwd завершается; см. .

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

Технические требования к паролям:

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

Пользователь, у которого действующий идентификатор есть ноль, называется суперпользователем [см. и ]. Суперпользователь имеет право изменять любые пароли, поэтому у него старый пароль не запрашивается. Суперпользователь не связан ограничениями на возраст пароля и соответствие техническим требованиям. Суперпользователь может создать пустой пароль, нажимая возврат каретки в ответ на запрос нового пароля.

ФАЙЛЫ

/etc/passwd

СМ. ТАКЖЕ

, , . , в Справочнике программиста.

СЮРПРИЗЫ

Пустой пароль не равнозначен отсутствию пароля и запрашивается каждый раз при входе.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



YACC(1)


НАЗВАНИЕ

yacc - еще один компилятор компиляторов

СИНТАКСИС

yacc [-v] [-d] [-l] [-t] грамматика

ОПИСАНИЕ

Команда yacc преобразует контекстно-свободную грамматику в набор таблиц для простого LR(1)-разбора. Грамматика может содержать неоднозначности; чтобы их преодолеть, используются заданные правила предшествования.

Выходной файл y.tab.c преобразуется C-компилятором в программу yyparse, которую нужно скомпоновать с программой лексического анализа yylex, а также с подпрограммой main и подпрограммой обработки ошибок yyerror. Эти подпрограммы должны быть предоставлены пользователем; при порождении лексических анализаторов полезен .

Допустимые опции:

-v Сгенерировать файл y.output, который содержит описание таблиц разбора с указанием конфликтных ситуаций, вызванных неоднозначностями грамматики. -d Сгенерировать файл y.tab.h, который содержит определения #define, связывающие заданные пользователем "имена лексем" с назначенными программой yacc "кодами лексем", что позволяет использовать коды лексем в исходных файлах, отличных от y.tab.c. -l Не вставлять в программу y.tab.c операторы #line. Рекомендуется использовать только после того, как грамматика и другие компоненты полностью отлажены. -t При помощи средств условной компиляции в программу y.tab.c всегда вставляются отладочные операторы, однако по умолчанию компилятор их пропускает. Если указана опция -t, то при отсутствии других указаний отладочные операторы будут скомпилированы. Вне зависимости от использования опции -t компиляцией отладочных операторов управляет переменная препроцессора YYDEBUG. Если YYDEBUG имеет ненулевое значение, отладочные операторы компилируются; при нулевом значении они пропускаются. Когда программа сформирована без отладочного кода, ее размер меньше и скорость выполнения несколько выше.

ФАЙЛЫ

y.output y.tab.c y.tab.h Определение кодов лексем. yacc.tmp Временный файл. yacc.debug Временный файл. yacc.acts Временный файл. /usr/lib/yaccpar Прототип алгоритма разбора для C-программ.

СМ. ТАКЖЕ

.

ДИАГНОСТИКА

В стандартный протокол направляется информация о числе конфликтных ситуаций типа "свертка-свертка" и "перенос-свертка"; более подробные сообщения содержатся в файле y.output. Аналогичным образом сообщается о продукциях, недостижимых из начального символа грамматики.

ОГРАНИЧЕНИЯ

Так как имена файлов фиксированы, в данном каталоге в каждый момент времени может быть активным только один процесс yacc

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



YES(1) FreeBSD Reference Manual


ИМЯ

yes - повторяет выражение

СИНТАКСИС

yes [expletive]

ОПИСАНИЕ

Yes постоянно выводит выражение (по умолчании букву 'y').

ИСТОРИЯ

Команда yes появилась в 4.0BSD.

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



YPCAT(1) FreeBSD Reference Manual


ИМЯ

ypcat - печатает значения всех ключей в YP базе данных.

СИНТАКСИС

ypcat [-kt] [-d domainname] mapname ypcat -x

ОПИСАНИЕ

Ypcat печатает значения всех ключей YP базы данных указанной в mapname, mapname может быть именем карты или псевдонимом (nickname) карты.

-d domainname

Указывает домен domainname вместо домена по умолчанию.

-k Показывает ключи карты. Эта опция полезна с картами в которых значения null или ключ не является частью данного значения.

-t Запрещает перевод из карты псевдонимов в соответствующую карту имен.

-x Показывает таблицу псевдонимов карты.

СМ. ТАКЖЕ

, yp(4)

АВТОР

Theo De Raadt

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



YPMATCH(1) FreeBSD Reference Manual


ИМЯ

ypmatch - печатает значения одного или нескольких ключей в YP базе данных.

СИНТАКСИС

ypmatch [-kt] [-d domainname] key ... mapname ypmatch -x

ОПИСАНИЕ

Ypmatch выводит значения одного или нескольких ключей YP базы данных, указанной в mapnane, которое может быть картой имен или картой псевдонимов.

ОПЦИИ

-d domainname

Указывает домен вместо домена по умолчанию.

-k Показывает ключи карты. Эта опция полезна с картами в которых значения null или ключ не является частью данного значения.

-t Запрещает перевод из карты псевдонимов в соответствующую карту имен.

-x Показывает таблицу псевдонимов карты.

СМ. ТАКЖЕ

, yp(4)

АВТОР

Theo De Raadt

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



COMPRESS()


ИМЯ

compress - Сжимает данные для хранения.
uncompress - Восстанавливает сохраненный файл.
zcat - Осуществляет вывод сохраненного файла.

СИНТАКСИС

compress [-dfFqc] [-b bits] file uncompress [-fqc] file zcat file

ОПИСАНИЕ

Команда compress берет файл, заданный параметром file, и сжимает его до минимально возможного размера, создавая при этом выходной файл cо сжатыми данными и удаляя, если не задана опция -c, первоначальный файл. Сжатие достигается кодированием одинаковых строк в файле. Команда uncompress восстанавливает ранее сжатый файл в его первоначальное состояние и удаляет версию сжатого файла. Команда zcat используется для вывода файла на экран, при этом файл восстанавливается из сжатого состояния и производится его сцепление с экранным или стандартным выводом, после чего версия сжатого файла не уничтожается.

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

При отсутствии сжатия выходной файл не записывается, если в командной строке не установлен флаг -F.

ОПЦИИ

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

-d Восстанавливает сжатый файл. -c Вывод записывается на устройство стандартного вывода и не уничтожается первоначальный файл. -b bits Задает максимальное число битов, используемых в кодировании. -f Осуществляет запись поверх предыдущей версии выходного файла. -F Производит запись выходного файла даже в том случае, если не произошло сжатия. -q Не генерирует вывода, за исключением сообщений об ошибках, если они есть.

СМ. ТАКЖЕ

, , , , .

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



ZDIFF(1)


ИМЯ

zcmp, zdiff - сравнивает сжатые файлы

СИНТАКСИС

zcmp [ cmp_options ] file1 [ file2 ] zdiff [ diff_options ] file1 [ file2 ]

ОПИСАНИЕ

Zcmp и zdiff применяют программу cmp или diff на сжатые файлы. Все опции команд cmp и diff можно применять и с командами zdiff и zcmp. Если указан только один файл, то сравниваются указанный файл и не сжатый файл с таким же именем. Если указано два файла, то они распаковываются если необходимо и к ним применяется команда cmp или diff.

СМ. ТАКЖЕ

, diff(1), zmore(1), , , , gzip(1),

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT


ИМЯ

zcmp, zdiff - сравнивает сжатые файлы

СИНТАКСИС

zcmp [ cmp_options ] file1 [ file2 ] zdiff [ diff_options ] file1 [ file2 ]

ОПИСАНИЕ

Zcmp и zdiff применяют программу cmp или diff на сжатые файлы. Все опции команд cmp и diff можно применять и с командами zdiff и zcmp. Если указан только один файл, то сравниваются указанный файл и не сжатый файл с таким же именем. Если указано два файла, то они распаковываются если необходимо и к ним применяется команда cmp или diff.

СМ. ТАКЖЕ

, diff(1), zmore(1), , , , gzip(1),

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



ZFORCE(1)


ИМЯ

zforce - устанавливает расширение '.gz' на все файлы формата gzip.

СИНТАКСИС

zforce [ name ... ]

ОПИСАНИЕ

zforce устанавливает расширения .gz на все файлы сжатые gzip чтобы они не были сжаты дважды. Это очень удобно если имя файла было уменьшено после его передачи по ftp и т.п. Так если сжатый файл 12345678901234.gz был передан в систему поддерживающую имена файлов с 14 символами, то команда zforce переименует этот файл в 12345678901.gz, а файл foo.tgz оставит без изменений.

СМ. ТАКЖЕ

gzip(1), , zmore(1), , ,

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



ZGREP(1)


ИМЯ

zgrep - ищет выражение в сжатых файлах expression

СИНТАКСИС

zgrep [ grep_options ] [ -e ] pattern filename...

ОПИСАНИЕ

Zgrep использует команду grep для сжатых compress или gzip файлов. Все опции взяты из команды grep. Если файл не указан, то читается информация со стандартного ввода. Если же файл указан, то он декомпрессируется и применяется команда grep.

Если zgrep вызывается как zegrep или zfgrep, то соответственно выполняются программы egrep и fgrep. Если установлена переменная окружения GREP, то zgrep использует ее значение как имя программы для поиска. Например:

for sh: GREP=fgrep zgrep string files for csh: (setenv GREP fgrep; zgrep string files)

АВТОР

Charles Levert ()

СМ. ТАКЖЕ

, , , , zmore(1), , , gzip(1),

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



ZIPGREP(1)


ИМЯ

zipgrep - ищет возможный zip файл в указанном пути.

СИНТАКСИС

zipgrep [ egrep_options ] [ -e ] pattern zipfile member...

ОПИСАНИЕ

Zipgrep применяет команду egrep на указанные компоненты zip архива. Все опции команды egrep допустимы в команде zipgrep. Если компоненты не указаны, то производится поиск всех компонентов.

СМ. ТАКЖЕ

, , , zip(1), unzip(1)

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



ZNEW(1)


ИМЯ

znew - сжимает файлы формата .Z в формат .gz

СИНТАКСИС

znew [ -ftv9PK] [ name.Z ... ]

ОПИСАНИЕ

Znew переводит файлы из формата .Z (compress) в формат .gz (gzip). Если вы хотите перекомпрессировать файл формата gzip, переименуйте его в файл с расширением .Z и примените команду znew.

ОПЦИИ

-f Принудительная рекомпрессия из формата .Z в формат .gz даже если существует такой же файл .gz. -t Тестировать новый файл перед удалением оргигинала -v Режим сообщений. Показывает имена и проценты выполненной работы для каждого сжатого файла. -9 Использование оптимального метода сжатия. -K Сохраняет файл .Z

СМ. ТАКЖЕ

gzip(1), zmore(1), , , , ,

Comments: info@citmgu.ru

Designed by Andrey Novikov

Copyright © CIT



EL(5)XENIX System V (1 янвapя 1989)


НАЗВАНИЕ

86rel - Фopмaт oбъeктнoгo мoдyля, пpинятый для пpoцeccopa Intel 8086.

СИНТАКСИС

#include <sys/relsym86.h>

ОПИСАНИЕ

Фopмaт, пpинятый для пpoцeccopa Intell 8086, или 86rel, пpeдcтaвляeт coбoй oбъeктный мoдyль , coздaвaeмый acceмблepoм и являeтcя вxoдным фaйлoм для peдaктopa cвязeй . Maкpoфaйл relsym86.h coдepжит oпиcaния, пpи пoлyчeнии в peзyльтaтe тpaнcляции c языкa Cи фaйлa в фopмaтe 86rel. Oпиcaниe тexничecкиx пoдpoбнocтeй фopмaтa 86rel cмoтpи в Intel 8086 ObjectModuleFormatExternal Product Specification.

Фopмaт 86rel cocтoит из зaпиceй пepeмeннoй длины. Kaждaя зaпиcь имeeт пo кpaйнeй мepe тpи пoля: тип зaпиcи, длинa и кoнтpoльнaя cyммa. Пepвый бaйт вceгдa coдepжит тип зaпиcи. Cyщecтвyeт тpидцaть oдин paзличный тип зaпиceй. Toлькo oдиннaдцaть из ниx иcпoльзyeтcя peдaктopoм cвязeй и . Cлoвo, pacпoлoжeннoe пocлe пepвoгo бaйтa пpeдcтaвляeт coбoй длинy зaпиcи в бaйтax;пpи вычиcлeнии длины пepвыe тpи бaйтa нe yчитывaютcя .Дaлee cлeдyют oднo или нecкoлькo пoлeй. Kaждый тип зaпиcи coдepжит cпeцифичecкyю пocлeдoвaтeльнocть пoлeй paзличнoй длины, нeкoтopыe из кoтopыx мoгyт быть нeoбязaтeльными или . Caмый пocлeдний бaйт кaждoй зaпиcи coдepжит кoнтpoльнyю cyммy. Бaйт кoнтpoльнoй cyммы фopмиpyeтcя кaк cyммa пo мoдyлю 256 вcex дpyгиx бaйт зaпиcи. Cyммa пo мoдyлю 256 вcex бaйт зaпиcи, включaя и бaйт кoнтpoльнoй cyммы, дoлжнa быть paвнa нyлю.

Зa нeкoтopым иcключeниeм, пepвый бaйт cтpoки 86rel coдepжит чиcлo oт 0 дo 40, кoтopoe oпpeдeляeт ocтaвшyюcя длинy cтpoки в бaйтax и cтpoкa нe coдepжит зaвepшaющиx нyлeй (BHИMAHИE! B дaльнeйшeм вce cтpoки, oпиcывaeмыe в дoкyмeнтe имeют тaкoй фopмaт!). Xoтя в oпиcaнии Intel пpeдycмoтpeнo иcпoльзoвaниe тoлькo cимвoлoв вepxнeгo peгиcтpa клaвиaтypвы и cимвoлoв `?', `@', `:' и `_' acceмблep иcпoьзyeт пoлный нaбop ASCII cимвoлoв.

Oпpeдeлeниe Intel Object Module Format (OMF) иcпoльзyeт тepмин "индeкc" или для oбoзнaчeния пoлoжитeльныx дecятичныx чиceл oт 0 дo 127 или oт 128 дo 32,768. Этa жe тepминoлoгия coxpaнeнa в дaннoм дoкyмeнтe и вo вceй литepaтype пo 86rel. Индeкc пpeдcтaвляeтcя oдним или двyмя бaйтaми. Ecли пepвый бaйт имeeт нyлeвoй пepвый бит, индeкc пpeдcтaвлeн тoлькo oдним бaйтoм, и ocтaтoк бaйтa пpeдcтaвляeт пoлoжитeльнoe дecятичнoe чиcлo, pacпoлoжeннoe мeждy 0 и 127. Ecли втopoй бaйт имeeт eдиничный пepвый бит, индeкc пpeдcтaвлeн двyмя бaйтaми и ocтaтoк cлoвa coдepжит пoлoжитeльнoe дecятичнoe чиcлo, pacпoлoжeннoe мeждy 128 и 32.768.


Hижe пpивeдeн cпиcoк типoв зaпиceй и шecтнaдцaтиpичныe вeличины иx пepвoгo бaйтa, oпpeдeлeнныx в фaйлe relsym86.h

#define MRHEADR 0x6e /*зaгoлoвoк oбъeктнoгo мoдyля */ #define MRDGINT 0x70 /*инициaлизaция peгиcтpoв*/ #define MREDATA 0x72 /*явнo oпpeдeлeнныe дaнныe*/ #define MRIDATA 0x74 /*пoвтopяeмыe дaнныe*/ #define MOVLDEF 0x76 /*oпиcaниe пepeкpытия*/ #define MENDREC 0x78 /*зaпиcь кoнцa блoкa или пepeкpытия*/ #define MBLKDEF 0x7a /*oпиcaниe блoкa*/ #define MBLKEND 0x7c /*кoнeц блoкa*/ #define MDEBSYM 0x7e /*cимвoлы oтлaдки*/ #define MTHEADR 0x80 /*зaгoлoвoк мoдyля, oбычнo пepвый в oбъeктнoм фaйлe*/ #define MLHEADR 0x82 /*зaгoлoвoк мoдyля cвязи*/ #define MPEDATA 0x84 /*aбcoлютныe дaнныe*/ #define MPIDATA 0x86 /*aбcoлютныe пoвтopяeмыe дaнныx*/ #define MCOMENT 0x88 /*зaпиcь кoммeтapия*/ #define MMODEND 0x8a /*зaпиcь кoнцa мoдyля*/ #define MEXTDEF 0x8c /*внeшниe oпиcaния*/ #define MTYPDEF 0x8e /*oпиcaния типa*/ #define MPUBDEF 0x90 /*глoбaльныe oпиcaния*/ #define MLOCSYM 0x92 /*лoкaльныe cимвoлы*/ #define MLINNUM 0x94 /*нoмep cтpoки иcxoднoгo тeкcтa*/ #define MLNAMES 0x96 /*зaпиcь cпиcкa имeн*/ #define MSEGDEF 0x98 /*oпиcaниe ceгмeнтa*/ #define MGRPDEF 0x9a /*oпиcaниe гpyппы*/ #define MFIXUPP 0x9c /*инфopмaция o нacтpoйкe пepeмecтимыx дaнныx*/ #define MNONE1 0x9e /*нeт*/ #define MLEDATA 0xa0 /*лoгичecкиe дaнныe*/ #define MLIDATA 0xa2 /*лoгичecкиe пoвтopяeмыe дaнныe */ #define MLIBHED 0xa4 /*зaгoлoвoк библиoтeки*/ #define MLIBNAM 0xa6 /*зaпиcь имeн библиoтeки*/ #define MLIBLOC 0xa8 /*paзмeщeния мoдyлeй библиoтeки*/ #define MLIBDIC 0xaa /*cлoвapь библиoтeки*/ #define M386END 0x86 /*зaпиcь кoнцa 32 битнoгo мoдyля*/ #define MPUB386 0x91 /*32 битнoe глoбaльнoe oпpeдeлeниe*/ #define MLOC386 0x93 /*32 битныe лoгичecкиe cимвoлы*/ #define MLIN386 0x95 /*32 битный нoмep иcxoднoй cтpoки*/ #define MSEG386 0x99 /*32 битнoe oпиcaниe ceгмeнтa*/ #define MFIX386 0x9d /*инфopмaция o нacтpoйкe пepeмecтимыx дaнныx*/ #define MLED386 0xa1 /*32 битный лoгичecкиe дaнныe*/ #define MLID386 0xa3 /*32 битныe лoгичecкиe пoвтopяeмыe дaнныe*/



B дaльнeйшeм бyдyт oпиcaны ocoбeннocти кaждoгo типa зaпиcи. Ecли зaпиcь нe иcпoльзyeтcя ни , ни , oнa нe oпиcaнa.

THEADR Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x80. Зaпиcь THEADR oпpeдeляeт имя фaйлa иcxoднoгo мoдyля c тeкcтoм нa acceмблepe (cм. Зaмeчaния). Eдинcтвeннoe пoлe coдepжит пoлe TMODULE NAME, пoлyчeннoe кaк base name oт пoлнoгo имeни фaйлa. COMENT Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x88. Зaпиcь COMENT мoжeт coдepжaть кoмeнтapий, coздaвaeмый кoмпилятopoм. Mams(1) пoмeщaeт в пoлe этoгo кoмeнтapия cтpoкy "XENIX 8086 ASSEMBLER." MODEND Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x8a. Зaпиcь MODEND зaвepшaeт мoдyль. Oнa oпpeдeляeт, coдepжит ли тeкyщий мoдyль тoчкy вxoдa для выпoлнeния. Ecли мoдyль являeтcя тoчкoй вxoдa, зaпиcь MODEND oпpeдeляeт aдpec тoчки вxoдa. EXTDEF Tип зaпиcи oпpeдeляeтcя знчeниeм 0x8c. Зaпиcь EXTDEF coдepжит имeнa и типы cимвoлoв, oпpeдeлeнныx в дpyгиx мoдyляx зaпиcью типa PUBDEF (cм. нижe). Этo cooтвeтcтвyeт клaccy пaмяти "extern" в языкe Cи. Пoля coдepжaт oднy или бoлee cтpoк, зa кaждoй cтpoкoй cлeдyeт индeкc. Индeкcы yкaзывaют нa зaпиcи TYPDEF, pacпoлoжeнныe paнee в мoдyлe. Masm(1) гeнepиpyeт тoлькo oдин EXTDEF нa кaждый внeшний cимвoл. TYPDEF Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x8e. Зaпиcь TYPDEF coдepжит oпиcaниe типoв (paзмep и aтpибyты xpaнeния) . Ha этo oпиcaниe мoгyт ccылaтьcя зaпиcи EXTDEF, PUBDEF и дpyгиe зaпиcи. PUBDEF Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x90. B зaпиcи PUBDEF coдepжитcя cпиcoк, cocтoящий из oднoгo или бoлee имeн, нa кoтopыe мoгyт ccылaтьcя дpyгиe мoдyли. Cпиcкy имeн пpeдшecтвyют индeкc гpyппы и ceгмeнтa, кoтopыe yкaзывaют нa нaчaлo cпиcкa глoбaльныx пepeмeнныx в тeкyщeм ceгмeнтe и гpyппe. Ecли индeкc ceгмeнтa и гpyппы paвны 0, зaдaeтcя нoмep frame, oпpeдeляющий aбcoлютный aдpec в мoдyлe. Cпиcoк cocтoит из oднoй или бoлee cтpoк, кaждaя из кoтopыx coдepжит 16-битнoe cмeщeниe в тeкyщeм ceгмeнтe и индeкc, yкaзывaющий нa TYPDEF. LNAMES Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x96. Зaпиcь LNAMES зaдaeт пocлeдoвaтeльнocть cтpoк, кoтopыe cooтвeтcтвyют имeнaм, yкaзaнным в тeкyщeм мoдyлe. Kaждoe имя индeкcиpoвaнo пocлeдoвaтeльнo, нaчинaя c 1. Зaпиcи SEGDEF и GRDEF, pacпoлoжeнныe зa дaннoй зaпиcью и нaxoдящиecя в дaннoм мoдyлe, пoлyчaют из этoй зaпиcи имeнa ceгмeнтoв, клaccoв, пepeкpытий и гpyпп. SEGDEF Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x98. Зaпиcь SEGDEF coдepжит индeкc, yкaзывaющий нa ceгмeнт и инфopмaцию oб aдpecaции и aтpибyтax ceгмeнтa. Этoт индeкc мoжeт быть иcпoльзoвaн дpyгими зaпиcями для ccылoк нa ceгмeнт. Пepвoe cлoвo зaпиcи, pacпoлoжeннoe пocлe пoля длины, coдepжит инфopмaцию o выpaвнивaнии и кoмбинaции aтpибyтoв ceгмeнтa. Cлeдyющee cлoвo oпpeдeляeт длинy ceгмeнтa в бaйтax. Зaмeтим, чтo oнo зaдaeт мaкcимaльнyю длинy ceгмeнтa, paвнyю 65,536 бaйт. Дaлee cлeдyeт индeкc ceгмeнт (cм. вышe). Haкoнeц, SEGDEF мoжeт, нo нe oбязaтeльнo, coдepжaть пoля индeкcoв клacca и/или пepeкpытия. FIXUPP Tип зaпиcи oпpeдeляeтcя знaчeниeм 0x9c. Зaпиcь FIXUPP oпpeдeляeт oднy или бoлee мoдификaций aдpecoв вo вpeмя peдaктиpoвaния cвязeй ("fixups"). Kaждaя зaпиcь yкaзывaeт нa aдpec в пpeдыдyщeй зaпиcи LEDATA (cм. нижe). Для тoгo, чтoбы нacтpoить aдpec нeoбxoдимo знaть: paзмeщeниe, peжим, target и frame. Frame и target мoгyт быть зaдaны явнo или чepeз ccылкy нa yжe oпpeдeлeннyю cтpyктypy нacтpoйки aдpecoв. LEDATA Tип зaпиcи oпpeдeляeтcя знaчeниeм 0xa0. Этa зaпиcь coдepжит нeпpepывныe тeкcты или дaнныe, иcпoльзyeмыe peдaктopoм cвязeй для coздaния пopции выпoлняeмoгo мoдyля . Этo пopция мoжeт тpeбoвaть дoпoлнитeльныx дeйcтвий (cм. FIXUPP) пepeд зaгpyзкoй в иcпoлняeмый фaйл. Пepeд тeкcтoм или дaнными мoгyт pcпoлaгaтьcя 2 пoля: индeкc ceгмeнтa и cмeщeниe. Индeкc ceгмeнтa (cм. INDEX) oпpeдeляeт ceгмeнт, кoтopый oпиcaн в зaпиcи SEGDEF. Cмeщeниe, пoд xpaнeниe кoтopoгo oтвeдeнo oднo cлoвo, oпpeдeляeт вeличинy cмeщeния oт нaчaлa этoгo ceгмeнтa.



СМ. ТАКЖЕ

,

ЗАМЕЧАНИЯ

Ecли вы пoпытaeтecь cвязaть мoдyли, acceмблиpoвaнныe oдинaкoвыми имeнaми, зaгpyзчик бyдeт пытaтьcя paзмecтить eгo вecь в oдин бoльшoй ceгмeнт. B пpoгpaммax для пpoцeccopa I802286 paзмep ceгмeнтa oгpaничeн вeличинoй 64K. B бoльшиx пpoгpaммax paзмep peзyльтиpyющeгo ceгмeнтa мoжeт пpeвышaть 64K. Ecли иcпoльзyeтcя мoдeль пaмяти типa large, тo, пocлe зaвepшeния paбoты peдaктopa cвязeй, пoлyчaeтcя oдин или бoлee мoдyлeй, cocтoящиx из ceгмeнтoв, oбщий paзмep тeкcтa кoтopoгo cyщecтвeннo пpeвышaeт 64K.

Cлeдoвaтeльнo, нyжнo быть yвepeнным, чтo имя мoдyля, в пpoцecce acceмблиpoвaния, coвпaдaeт c имeнeм иcxoднoгo. Имeнa мoгyт нe coвпaдaть, ecли иcxoдный мoдyль бyдeт пpeдвapитeльнo oбpaбoтaн нe c пoмoщью кoмaнды , a, нaпpимep, вpyчнyю или shell-пpoгpaммoй. Дaлee cлeдyeт пpимep, нaмepeннo coдepжaщий oшибкy:

#incorrect cc -E module12.c |filter >x.c cc x.c mv x.o module1.o cc -E module2.c |filter >x.c cc x.c mv x.o module2.o cc -E module3.c |filter >x.c cc x.c mv x.o module3.o ld module1.o module2.o module3.o

Чтoбы избeжaть этoгo, кaждый из мoдyлeй дoлжeн имeть yникaльнoe имя в мoмeнт acceмблиpoвaния, кaк пoкaзaнo нижe:

#correct cc -E module1.c |filter >x.c cc -S x.c mv x.s module1.s as module1.s . . . ld module1.o module2.o module3.o










HW)


НАЗВАНИЕ

8087

СИНТАКСИС

8087 80287

ОПИСАНИЕ

8087 - это математический сопроцессор INTEL для процессора 8086. 80287 - это математический сопроцессор INTEL для процессора 80286. Ядро проверяет присутствие сопроцессоров 8087 и 80287 во время загрузки.

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

Транслятор с языка Си, поставляемый в пакете программ Расширенной системы, генерирует соответственные операционные коды 8087 (или 80287). Процедуры, скомпилированные с помощью этого транслятора, работают в 200 раз быстрее, чем соответствующие им коды эмуляции. В частности, стандартные процедуры математической библиотеки работают значительно быстрее, если у вас есть сопроцессор 8087 или 80287.

Переполнение, деление на нуль и ошибки некорректных операндов возвращают сигнал SIGFPE. Этот сигнал может быть перехвачен. Остальные ошибки операций с плавающей точкой сопроцессоров 8087 и 80287 (машинный нуль, ошибка нормализации операнда и ошибка точности ) маскируются.

ПРИМЕЧАНИЯ

При делении на нуль эмулятор возвращает информацию, не имеющую смысла.

Не существует простого способа определить, какое состояние сгенерировало сигнал SIGFPE.