mirror of
				https://github.com/vim/vim.git
				synced 2025-10-28 09:27:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			409 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			409 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH XXD 1 "August 1996" "Страница man для xxd"
 | ||
| .\"
 | ||
| .\" 21st May 1996
 | ||
| .\" Man page author:
 | ||
| .\"    Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
 | ||
| .\"    Changes by Bram Moolenaar <Bram@vim.org>
 | ||
| .SH ИМЯ
 | ||
| .I xxd
 | ||
| \- создаёт представление файла в виде шестнадцатеричных кодов или выполняет
 | ||
| обратное преобразование.
 | ||
| .SH КОМАНДНАЯ СТРОКА
 | ||
| .B xxd
 | ||
| \-h[elp]
 | ||
| .br
 | ||
| .B xxd
 | ||
| [ключи] [входной_файл [выходной_файл]]
 | ||
| .br
 | ||
| .B xxd
 | ||
| \-r[evert] [ключи] [входной_файл [выходной_файл]]
 | ||
| .SH ОПИСАНИЕ
 | ||
| .I xxd
 | ||
| создаёт представление указанного файла или данных, прочитанных из потока
 | ||
| стандартного ввода, в виде шестнадцатеричных кодов. Эта команда также может
 | ||
| выполнить обратное преобразование заданных шестнадцатеричными кодами данных
 | ||
| в исходный бинарный формат.
 | ||
| Подобно командам
 | ||
| .BR uuencode(1)
 | ||
| и
 | ||
| .BR uudecode(1),
 | ||
| она позволяет выполнять преобразование бинарных данных в ASCII-код, 
 | ||
| который можно передавать по электронной почте, однако, помимо этого, программа
 | ||
| xxd позволяет выполнять декодирование в поток стандартного вывода,
 | ||
| а также может применяться для создания заплаток для бинарных файлов.
 | ||
| .SH КЛЮЧИ ЗАПУСКА
 | ||
| Если
 | ||
| .I входной_файл
 | ||
| не задан, то соответствующие данные читаются из потока стандартного ввода.
 | ||
| В случае, если в качестве
 | ||
| .I входного_файла
 | ||
| используется символ
 | ||
| .RB \` \- ',
 | ||
| источником данных также выступает поток стандартного ввода.
 | ||
| В том случае, если не указан
 | ||
| .I выходной_файл
 | ||
| (или вместо него используется символ
 | ||
| .RB \` \- '
 | ||
| ), результат преобразования направляется в поток стандартного вывода.
 | ||
| .PP
 | ||
| Обратите внимание, что используется "ленивый" алгоритм разбора ключей, который не
 | ||
| проверяет более одной буквы ключа, если в этом ключе не используется параметр.
 | ||
| Пробелы между единственным символом ключа и соответствующим параметром не являются
 | ||
| обязательными. Параметры ключей могут быть заданы с использованием десятичного,
 | ||
| шестнадцатеричного или восьмеричного формата.
 | ||
| Таким образом, ключи
 | ||
| .BR \-c8 ,
 | ||
| .BR "\-c 8" ,
 | ||
| .B \-c 010
 | ||
| и
 | ||
| .B \-cols 8
 | ||
| являются равнозначными.
 | ||
| .PP
 | ||
| .TP
 | ||
| .IR \-a " | " \-autoskip
 | ||
| Включает автоматический пропуск: вместо последовательности
 | ||
| нулевых строк используется одиночный символ '*'. По умолчанию
 | ||
| не применяется.
 | ||
| .TP
 | ||
| .IR \-b " | " \-bits
 | ||
| Вместо шестнадцатеричного кода используются биты (двоичные цифры).
 | ||
| При использовании этого ключа вместо обычного шестнадцатеричного представления
 | ||
| октетов используются наборы из восьми символов "1" и "0". Каждая строка
 | ||
| предваряется номером строки в шестнадцатеричном виде, а завершается символьным 
 | ||
| представлением (в виде ascii или ebcdic). Ключи \-r, \-p, \-i в этом режиме
 | ||
| не работают.
 | ||
| .TP
 | ||
| .IR "\-c кол " | " \-cols кол"
 | ||
| Задаёт количество октетов
 | ||
| .RI < кол >,
 | ||
| которое выводится на каждой строке. По умолчанию используется значение 16 
 | ||
| (\-i: 12, \-ps: 30, \-b: 6). 
 | ||
| Максимально допустимое значение: 256.
 | ||
| .TP
 | ||
| .IR \-E " | " \-EBCDIC
 | ||
| Изменяет способ кодирования символов в правой колонке с ASCII на EBCDIC. Этот ключ
 | ||
| не изменяет шестнадцатеричное представление. Данный ключ не имеет смысла,
 | ||
| если используются ключи \-r, \-p или \-i.
 | ||
| .TP
 | ||
| .IR "\-g байт " | " \-groupsize байт"
 | ||
| Позволяет выполнять группировку указанного количества
 | ||
| .RI < байтов >
 | ||
| (две шестнадцатеричные цифры или восемь битов), отделяя группы друг от друга пробелами.
 | ||
| Значение
 | ||
| .I \-g 0 
 | ||
| применяется для отказа от использования группировки.
 | ||
| По умолчанию используется значение
 | ||
| .RI < байт "> равное " 2
 | ||
| в обычном режиме и \fI1\fP в битовом режиме. Группировка не применяется
 | ||
| в режимах postscript и include.
 | ||
| .TP
 | ||
| .IR \-h " | " \-help
 | ||
| Выводит справку по доступным ключам командной строки и завершает работу программы.
 | ||
| Создание шестнадцатеричного представления не выполняется.
 | ||
| .TP
 | ||
| .IR \-i " | " \-include
 | ||
| Позволяет создавать вывод в стиле подключаемых заголовочных файлов языка C.
 | ||
| Вывод содержит полноценное определение статического массива данных, имя которого
 | ||
| соответствует имени входного файла, если xxd не считывает данные из потока стандартного
 | ||
| ввода.
 | ||
| .TP
 | ||
| .IR "\-l длина " | " \-len длина"
 | ||
| Завершает работу после записи заданного в параметре
 | ||
| .RI  < длина >
 | ||
| количества октетов.
 | ||
| .TP
 | ||
| .IR \-p " | " \-ps " | " \-postscript " | " \-plain
 | ||
| Использует непрерывный формат вывода шестнадцатеричного кода, 
 | ||
| известный как "простой" стиль или стиль "postscript".
 | ||
| .TP
 | ||
| .IR \-r " | " \-revert
 | ||
| Изменяет смысл операции на противоположный: позволяет выполнять преобразование 
 | ||
| шестнадцатеричного представления в бинарный код (или применять результат в качестве заплаты).
 | ||
| Если вывод происходит не в поток стандартного вывода, то xxd выполняет добавление кода 
 | ||
| к соответствующему файлу. При использовании комбинации ключей
 | ||
| .I \-r \-p
 | ||
| происходит чтение "простого" шестнадцатеричного представления без использования
 | ||
| информации о номерах строк и какого-либо специального раскроя колонок. Пробелы 
 | ||
| и символы новой строки могут встречаться в любом месте исходных данных.
 | ||
| .TP
 | ||
| .I \-seek смещение
 | ||
| При использовании после ключа
 | ||
| .I \-r
 | ||
| : добавлять указанное
 | ||
| .RI < смещение >
 | ||
| к файловым позициям, обнаруженным в исходных данных.
 | ||
| .TP
 | ||
| .I \-s [\+][\-]seek
 | ||
| Начинает работу с указанного абсолютного (или относительного)
 | ||
| .RI < смещения >
 | ||
| в байтах во входном_файле.
 | ||
| \fI\+ \fRуказывает, что смещение является относительным по отношению
 | ||
| к текущей файловой позиции в потоке стандартного ввода (бессмысленно, если чтение
 | ||
| происходит не из потока стандартного ввода). \fI\- \fRуказывает, что должно быть прочитано
 | ||
| указанное количество символов от конца ввода (либо, если сочетается с \fI \+ \fR: 
 | ||
| перед текущей позиции файла в потоке стандартного ввода).
 | ||
| Если ключ \-s не используется, то xxd начинает работу от текущей позиции в файле.
 | ||
| .TP
 | ||
| .I \-u
 | ||
| Использует шестнадцатеричные цифры в верхнем регистре. По умолчанию используются цифры в
 | ||
| нижнем регистре символов.
 | ||
| .TP
 | ||
| .IR \-v " | " \-version
 | ||
| Отображает информацию о версии программы.
 | ||
| .SH ПОДВОДНЫЕ КАМНИ
 | ||
| .PP
 | ||
| .I xxd \-r
 | ||
| обладает встроенным интеллектом для распознавания информации о номерах строк.
 | ||
| Если возможен поиск по входному файлу, то номера строк в начале каждой строки
 | ||
| шестнадцатеричного представления могут быть неупорядоченными, некоторые строки могут
 | ||
| быть пропущены или пересекаться друг с другом. В этих случаях xxd использует
 | ||
| lseek(2) для перехода к следующей позиции. Если поиск по входному файлу 
 | ||
| невозможен, то допустимы только пропуски строк, которые заполняются нулевыми 
 | ||
| байтами.
 | ||
| .PP
 | ||
| .I xxd \-r
 | ||
| никогда не выводит сообщений об ошибках. Мусор пропускается молча.
 | ||
| .PP
 | ||
| При редактировании шестнадцатеричных представлений бинарных файлов обращайте 
 | ||
| внимание, что 
 | ||
| .I xxd \-r
 | ||
| пропускает в строке ввода любые данные после прочтения достаточного количества 
 | ||
| колонок шестнадцатеричных данных (см. ключ \-c). Это означает, что изменения,
 | ||
| внесенные в колонки с печатными символами ascii (или ebcdic), всегда игнорируются.
 | ||
| При обратном преобразовании шестнадцатеричного представления в стиле
 | ||
| postscript с помощью команды xxd \-r \-p количество колонок не учитывается. 
 | ||
| В этом случае распознаются все символы, которые похожи на пары шестнадцатеричных цифр.
 | ||
| .PP
 | ||
| Обратите внимание на различие между командами
 | ||
| .PP
 | ||
| \fI% xxd \-i файл\fR
 | ||
| .PP
 | ||
| и
 | ||
| .PP
 | ||
| \fI% xxd \-i \< файл\fR
 | ||
| .PP
 | ||
| Команда
 | ||
| .I xxd \-s \+seek
 | ||
| может отличаться от
 | ||
| .I xxd \-s seek,
 | ||
| поскольку для того, чтобы "отмотать" данные на входе назад, используется вызов lseek(2).
 | ||
| При использовании `+' поведение будет отличаться, если входные данные
 | ||
| поступают с потока стандартного ввода, а позиция в файле стандартного ввода не находится
 | ||
| в начале файла к тому моменту, когда программа xxd запущена и приступает к чтению ввода.
 | ||
| Нижеследующие примеры помогут прояснить (или ещё больше запутать!) ситуацию...
 | ||
| .PP
 | ||
| Отмотка назад потока стандартного ввода; необходимо, поскольку 'cat' уже выполнила
 | ||
| чтение до конца потока стандартного ввода:
 | ||
| .PP
 | ||
| \fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
 | ||
| .PP
 | ||
| Вывод шестнадцатеричного представления от позиции в файле 0x480 
 | ||
| (= 1024+128).
 | ||
| Символ `+' означает "относительно текущей позиции", таким образом `128' добавляется
 | ||
| к первому килобайту, где завершает работу dd:
 | ||
| .PP
 | ||
| \fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
 | ||
| .PP
 | ||
| Вывод шестнадцатеричного представления от позиции в файле 0x100 
 | ||
| (= 1024-768):
 | ||
| .PP
 | ||
| \fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
 | ||
| .PP
 | ||
| В то же время, следует заметить, что подобные ситуации встречаются довольно редко,
 | ||
| так что символ `+' обычно не используется. Автор предпочитает наблюдать за работой 
 | ||
| xxd с помощью strace(1) или truss(1) в тех случаях, когда применяется ключ
 | ||
| \-s.
 | ||
| .SH ПРИМЕРЫ
 | ||
| .PP
 | ||
| .br
 | ||
| Вывести всё, кроме первых трёх строк (0x30 байтов) файла
 | ||
| .B file
 | ||
| :
 | ||
| .PP
 | ||
| \fI% xxd \-s 0x30 file
 | ||
| .PP
 | ||
| .br
 | ||
| Вывести три строки (0x30 байтов) от конца файла
 | ||
| .B file
 | ||
| :
 | ||
| .PP
 | ||
| \fI% xxd \-s \-0x30 file
 | ||
| .PP
 | ||
| .br
 | ||
| Вывести 120 байтов в виде непрерывного шестнадцатеричного представления
 | ||
| по 20 октетов в строке:
 | ||
| .PP
 | ||
| \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 | ||
| .br
 | ||
| 2e544820585844203120224d616e75616c207061
 | ||
| .br
 | ||
| 676520666f7220787864220a2e5c220a2e5c2220
 | ||
| .br
 | ||
| 32317374204d617920313939360a2e5c22204d61
 | ||
| .br
 | ||
| 6e207061676520617574686f723a0a2e5c222020
 | ||
| .br
 | ||
| 2020546f6e79204e7567656e74203c746f6e7940
 | ||
| .br
 | ||
| 7363746e7567656e2e7070702e67752e6564752e
 | ||
| .br
 | ||
| .PP
 | ||
| .br
 | ||
| Вывести первые 120 байтов этой страницы справочника по 12 октетов в строке:
 | ||
| .PP
 | ||
| \fI% xxd \-l 120 \-c 12 xxd.1\fR
 | ||
| .br
 | ||
| 0000000: 2e54 4820 5858 4420 3120 224d  .TH XXD 1 "M
 | ||
| .br
 | ||
| 000000c: 616e 7561 6c20 7061 6765 2066  anual page f
 | ||
| .br
 | ||
| 0000018: 6f72 2078 7864 220a 2e5c 220a  or xxd"..\\".
 | ||
| .br
 | ||
| 0000024: 2e5c 2220 3231 7374 204d 6179  .\\" 21st May
 | ||
| .br
 | ||
| 0000030: 2031 3939 360a 2e5c 2220 4d61   1996..\\" Ma
 | ||
| .br
 | ||
| 000003c: 6e20 7061 6765 2061 7574 686f  n page autho
 | ||
| .br
 | ||
| 0000048: 723a 0a2e 5c22 2020 2020 546f  r:..\\"    To
 | ||
| .br
 | ||
| 0000054: 6e79 204e 7567 656e 7420 3c74  ny Nugent <t
 | ||
| .br
 | ||
| 0000060: 6f6e 7940 7363 746e 7567 656e  ony@sctnugen
 | ||
| .br
 | ||
| 000006c: 2e70 7070 2e67 752e 6564 752e  .ppp.gu.edu.
 | ||
| .PP
 | ||
| .br
 | ||
| Показать дату из файла xxd.1:
 | ||
| .PP
 | ||
| \fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
 | ||
| .br
 | ||
| 0000028: 3231 7374 204d 6179 2031 3939  21st May 199
 | ||
| .PP
 | ||
| .br
 | ||
| Скопировать
 | ||
| .B входной_файл
 | ||
| в
 | ||
| .B выходной_файл
 | ||
| с добавлением 100 байтов со значением 0x00 в начало файла:
 | ||
| .PP
 | ||
| \fI% xxd входной_файл | xxd \-r \-s 100 \> выходной_файл\fR
 | ||
| .br
 | ||
| .PP
 | ||
| .br
 | ||
| Заменить дату в файле xxd.1:
 | ||
| .PP
 | ||
| \fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
 | ||
| .br
 | ||
| \fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
 | ||
| .br
 | ||
| 0000028: 3235 7468 204d 6179 2031 3939  25th May 199
 | ||
| .PP
 | ||
| .br
 | ||
| Создать 65537-байтный файл, все байты которого имеют значение
 | ||
| 0x00, кроме последнего байта, который должен иметь значение 'A'
 | ||
| (0x41):
 | ||
| .PP
 | ||
| \fI% echo '010000: 41' | xxd \-r \> file\fR
 | ||
| .PP
 | ||
| .br
 | ||
| Создать шестнадцатеричное представление этого файла с 
 | ||
| использованием автоматического пропуска:
 | ||
| .PP
 | ||
| \fI% xxd \-a \-c 12 file\fR
 | ||
| .br
 | ||
| 0000000: 0000 0000 0000 0000 0000 0000  ............
 | ||
| .br
 | ||
| *
 | ||
| .br
 | ||
| 000fffc: 0000 0000 40                   ....A
 | ||
| .PP
 | ||
| Создать 1-байтный файл, содержащий символ 'A'.
 | ||
| Число после '\-r \-s' добавляется к номерам строк, найденным в файле;
 | ||
| иначе говоря, предшествующие байты пропускаются:
 | ||
| .PP
 | ||
| \fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
 | ||
| .PP
 | ||
| xxd можно использовать в качестве фильтра в редакторе, например в 
 | ||
| .B vim(1),
 | ||
| чтобы создать шестнадцатеричное представление области между
 | ||
| отметками `a' и `z':
 | ||
| .PP
 | ||
| \fI:'a,'z!xxd\fR
 | ||
| .PP
 | ||
| Вы можете использовать xxd в качестве фильтра в редакторе, например в 
 | ||
| .B vim(1),
 | ||
| для восстановления данных из шестнадцатеричного представления
 | ||
| между отметками `a' и `z':
 | ||
| .PP
 | ||
| \fI:'a,'z!xxd \-r\fR
 | ||
| .PP
 | ||
| Вы можете использовать xxd в качестве фильтра в редакторе, например в
 | ||
| .B vim(1),
 | ||
| для восстановления данных из единственной строки
 | ||
| шестнадцатеричного представления. Поместите курсор в соответствующую строку
 | ||
| и наберите
 | ||
| .PP
 | ||
| \fI!!xxd \-r\fR
 | ||
| .PP
 | ||
| Чтобы прочитать единственный символ из канала связи:
 | ||
| .PP
 | ||
| \fI% xxd \-c1 < /dev/term/b &\fR
 | ||
| .br
 | ||
| \fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
 | ||
| .br
 | ||
| \fI% echo \-n foo > /dev/term/b\fR
 | ||
| .PP
 | ||
| .SH ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
 | ||
| Программа xxd завершает работу со следующими значениями:
 | ||
| .TP
 | ||
| 0
 | ||
| Ошибки не обнаружены.
 | ||
| .TP
 | ||
| \-1
 | ||
| Операция не поддерживается (выполнение
 | ||
| .I xxd \-r \-i
 | ||
| пока невозможно).
 | ||
| .TP
 | ||
| 1
 | ||
| Ошибка при разборе ключей командной строки.
 | ||
| .TP
 | ||
| 2
 | ||
| Проблемы во входном файле.
 | ||
| .TP
 | ||
| 3
 | ||
| Проблемы в выходном файле.
 | ||
| .TP
 | ||
| 4,5
 | ||
| Желательная позиция поиска недостижима.
 | ||
| .SH СМОТРИ ТАКЖЕ
 | ||
| uuencode(1), uudecode(1), patch(1)
 | ||
| .br
 | ||
| .SH ПРЕДУПРЕЖДЕНИЕ
 | ||
| Странность этой программы соответствует особенностям мозга её создателя.
 | ||
| Используйте её на свой страх и риск. Копируйте файлы, отслеживайте
 | ||
| вызовы, становитесь волшебником.
 | ||
| .br
 | ||
| .SH ВЕРСИЯ
 | ||
| Эта страница справочника документирует xxd версии 1.7.
 | ||
| .SH АВТОР
 | ||
| .br
 | ||
| (c) 1990-1997 Юрген Вайгерт (Juergen Weigert)
 | ||
| .br
 | ||
| <jnweiger@informatik.uni-erlangen.de>
 | ||
| .LP
 | ||
| Вы можете свободно распространять программу со ссылкой на меня.
 | ||
| .br
 | ||
| Если использование этой программы принесло вам какой-то доход,
 | ||
| поделитесь со мной.
 | ||
| .br
 | ||
| Если вы потеряли деньги, то я тут не причём.
 | ||
| .PP
 | ||
| Первый вариант страницы справочника написан Тони Наджентом (Tony Nugent)
 | ||
| .br
 | ||
| <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
 | ||
| .br
 | ||
| Небольшие изменения внесены Брамом Мооленааром (Bram Moolenaar).
 | ||
| Страница отредактирована Юргеном Вайгертом (Juergen Weigert).
 | ||
| .PP
 |