221
|
1 .TH XXD 1 "August 1996" "Страница man для xxd"
|
|
2 .\"
|
|
3 .\" 21st May 1996
|
|
4 .\" Man page author:
|
|
5 .\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
|
|
6 .\" Changes by Bram Moolenaar <Bram@vim.org>
|
|
7 .SH ИМЯ
|
|
8 .I xxd
|
|
9 \- создаёт представление файла в виде шестнадцатеричных кодов или выполняет
|
|
10 обратное преобразование.
|
|
11 .SH КОМАНДНАЯ СТРОКА
|
|
12 .B xxd
|
|
13 \-h[elp]
|
|
14 .br
|
|
15 .B xxd
|
|
16 [ключи] [входной_файл [выходной_файл]]
|
|
17 .br
|
|
18 .B xxd
|
|
19 \-r[evert] [ключи] [входной_файл [выходной_файл]]
|
|
20 .SH ОПИСАНИЕ
|
|
21 .I xxd
|
|
22 создаёт представление указанного файла или данных, прочитанных из потока
|
|
23 стандартного ввода, в виде шестнадцатеричных кодов. Эта команда также может
|
|
24 выполнить обратное преобразование заданных шестнадцатеричными кодами данных
|
|
25 в исходный бинарный формат.
|
|
26 Подобно командам
|
|
27 .BR uuencode(1)
|
|
28 и
|
|
29 .BR uudecode(1),
|
|
30 она позволяет выполнять преобразование бинарных данных в ASCII-код,
|
|
31 который можно передавать по электронной почте, однако, помимо этого, программа
|
|
32 xxd позволяет выполнять декодирование в поток стандартного вывода,
|
|
33 а также может применяться для создания заплаток для бинарных файлов.
|
|
34 .SH КЛЮЧИ ЗАПУСКА
|
|
35 Если
|
|
36 .I входной_файл
|
|
37 не задан, то соответствующие данные читаются из потока стандартного ввода.
|
|
38 В случае, если в качестве
|
|
39 .I входного_файла
|
|
40 используется символ
|
|
41 .RB \` \- ',
|
|
42 источником данных также выступает поток стандартного ввода.
|
|
43 В том случае, если не указан
|
|
44 .I выходной_файл
|
|
45 (или вместо него используется символ
|
|
46 .RB \` \- '
|
|
47 ), результат преобразования направляется в поток стандартного вывода.
|
|
48 .PP
|
|
49 Обратите внимание, что используется "ленивый" алгоритм разбора ключей, который не
|
|
50 проверяет более одной буквы ключа, если в этом ключе не используется параметр.
|
|
51 Пробелы между единственным символом ключа и соответствующим параметром не являются
|
|
52 обязательными. Параметры ключей могут быть заданы с использованием десятичного,
|
|
53 шестнадцатеричного или восьмеричного формата.
|
|
54 Таким образом, ключи
|
|
55 .BR \-c8 ,
|
|
56 .BR "\-c 8" ,
|
|
57 .B \-c 010
|
|
58 и
|
|
59 .B \-cols 8
|
|
60 являются равнозначными.
|
|
61 .PP
|
|
62 .TP
|
|
63 .IR \-a " | " \-autoskip
|
|
64 Включает автоматический пропуск: вместо последовательности
|
|
65 нулевых строк используется одиночный символ '*'. По умолчанию
|
|
66 не применяется.
|
|
67 .TP
|
|
68 .IR \-b " | " \-bits
|
|
69 Вместо шестнадцатеричного кода используются биты (двоичные цифры).
|
|
70 При использовании этого ключа вместо обычного шестнадцатеричного представления
|
|
71 октетов используются наборы из восьми символов "1" и "0". Каждая строка
|
|
72 предваряется номером строки в шестнадцатеричном виде, а завершается символьным
|
|
73 представлением (в виде ascii или ebcdic). Ключи \-r, \-p, \-i в этом режиме
|
|
74 не работают.
|
|
75 .TP
|
|
76 .IR "\-c кол " | " \-cols кол"
|
|
77 Задаёт количество октетов
|
|
78 .RI < кол >,
|
|
79 которое выводится на каждой строке. По умолчанию используется значение 16
|
|
80 (\-i: 12, \-ps: 30, \-b: 6).
|
|
81 Максимально допустимое значение: 256.
|
|
82 .TP
|
|
83 .IR \-E " | " \-EBCDIC
|
|
84 Изменяет способ кодирования символов в правой колонке с ASCII на EBCDIC. Этот ключ
|
|
85 не изменяет шестнадцатеричное представление. Данный ключ не имеет смысла,
|
|
86 если используются ключи \-r, \-p или \-i.
|
|
87 .TP
|
|
88 .IR "\-g байт " | " \-groupsize байт"
|
|
89 Позволяет выполнять группировку указанного количества
|
|
90 .RI < байтов >
|
|
91 (две шестнадцатеричные цифры или восемь битов), отделяя группы друг от друга пробелами.
|
|
92 Значение
|
|
93 .I \-g 0
|
|
94 применяется для отказа от использования группировки.
|
|
95 По умолчанию используется значение
|
|
96 .RI < байт "> равное " 2
|
|
97 в обычном режиме и \fI1\fP в битовом режиме. Группировка не применяется
|
|
98 в режимах postscript и include.
|
|
99 .TP
|
|
100 .IR \-h " | " \-help
|
|
101 Выводит справку по доступным ключам командной строки и завершает работу программы.
|
|
102 Создание шестнадцатеричного представления не выполняется.
|
|
103 .TP
|
|
104 .IR \-i " | " \-include
|
|
105 Позволяет создавать вывод в стиле подключаемых заголовочных файлов языка C.
|
|
106 Вывод содержит полноценное определение статического массива данных, имя которого
|
|
107 соответствует имени входного файла, если xxd не считывает данные из потока стандартного
|
|
108 ввода.
|
|
109 .TP
|
|
110 .IR "\-l длина " | " \-len длина"
|
|
111 Завершает работу после записи заданного в параметре
|
|
112 .RI < длина >
|
|
113 количества октетов.
|
|
114 .TP
|
|
115 .IR \-p " | " \-ps " | " \-postscript " | " \-plain
|
|
116 Использует непрерывный формат вывода шестнадцатеричного кода,
|
|
117 известный как "простой" стиль или стиль "postscript".
|
|
118 .TP
|
|
119 .IR \-r " | " \-revert
|
|
120 Изменяет смысл операции на противоположный: позволяет выполнять преобразование
|
|
121 шестнадцатеричного представления в бинарный код (или применять результат в качестве заплаты).
|
|
122 Если вывод происходит не в поток стандартного вывода, то xxd выполняет добавление кода
|
|
123 к соответствующему файлу. При использовании комбинации ключей
|
|
124 .I \-r \-p
|
|
125 происходит чтение "простого" шестнадцатеричного представления без использования
|
|
126 информации о номерах строк и какого-либо специального раскроя колонок. Пробелы
|
|
127 и символы новой строки могут встречаться в любом месте исходных данных.
|
|
128 .TP
|
|
129 .I \-seek смещение
|
|
130 При использовании после ключа
|
|
131 .I \-r
|
|
132 : добавлять указанное
|
|
133 .RI < смещение >
|
|
134 к файловым позициям, обнаруженным в исходных данных.
|
|
135 .TP
|
|
136 .I \-s [\+][\-]seek
|
|
137 Начинает работу с указанного абсолютного (или относительного)
|
|
138 .RI < смещения >
|
|
139 в байтах во входном_файле.
|
|
140 \fI\+ \fRуказывает, что смещение является относительным по отношению
|
|
141 к текущей файловой позиции в потоке стандартного ввода (бессмысленно, если чтение
|
|
142 происходит не из потока стандартного ввода). \fI\- \fRуказывает, что должно быть прочитано
|
|
143 указанное количество символов от конца ввода (либо, если сочетается с \fI \+ \fR:
|
|
144 перед текущей позиции файла в потоке стандартного ввода).
|
|
145 Если ключ \-s не используется, то xxd начинает работу от текущей позиции в файле.
|
|
146 .TP
|
|
147 .I \-u
|
|
148 Использует шестнадцатеричные цифры в верхнем регистре. По умолчанию используются цифры в
|
|
149 нижнем регистре символов.
|
|
150 .TP
|
|
151 .IR \-v " | " \-version
|
|
152 Отображает информацию о версии программы.
|
|
153 .SH ПОДВОДНЫЕ КАМНИ
|
|
154 .PP
|
|
155 .I xxd \-r
|
|
156 обладает встроенным интеллектом для распознавания информации о номерах строк.
|
|
157 Если возможен поиск по входному файлу, то номера строк в начале каждой строки
|
|
158 шестнадцатеричного представления могут быть неупорядоченными, некоторые строки могут
|
|
159 быть пропущены или пересекаться друг с другом. В этих случаях xxd использует
|
|
160 lseek(2) для перехода к следующей позиции. Если поиск по входному файлу
|
|
161 невозможен, то допустимы только пропуски строк, которые заполняются нулевыми
|
|
162 байтами.
|
|
163 .PP
|
|
164 .I xxd \-r
|
|
165 никогда не выводит сообщений об ошибках. Мусор пропускается молча.
|
|
166 .PP
|
|
167 При редактировании шестнадцатеричных представлений бинарных файлов обращайте
|
|
168 внимание, что
|
|
169 .I xxd \-r
|
|
170 пропускает в строке ввода любые данные после прочтения достаточного количества
|
|
171 колонок шестнадцатеричных данных (см. ключ \-c). Это означает, что изменения,
|
|
172 внесенные в колонки с печатными символами ascii (или ebcdic), всегда игнорируются.
|
|
173 При обратном преобразовании шестнадцатеричного представления в стиле
|
|
174 postscript с помощью команды xxd \-r \-p количество колонок не учитывается.
|
|
175 В этом случае распознаются все символы, которые похожи на пары шестнадцатеричных цифр.
|
|
176 .PP
|
|
177 Обратите внимание на различие между командами
|
|
178 .PP
|
|
179 \fI% xxd \-i файл\fR
|
|
180 .PP
|
|
181 и
|
|
182 .PP
|
|
183 \fI% xxd \-i \< файл\fR
|
|
184 .PP
|
|
185 Команда
|
|
186 .I xxd \-s \+seek
|
|
187 может отличаться от
|
|
188 .I xxd \-s seek,
|
|
189 поскольку для того, чтобы "отмотать" данные на входе назад, используется вызов lseek(2).
|
|
190 При использовании `+' поведение будет отличаться, если входные данные
|
|
191 поступают с потока стандартного ввода, а позиция в файле стандартного ввода не находится
|
|
192 в начале файла к тому моменту, когда программа xxd запущена и приступает к чтению ввода.
|
|
193 Нижеследующие примеры помогут прояснить (или ещё больше запутать!) ситуацию...
|
|
194 .PP
|
|
195 Отмотка назад потока стандартного ввода; необходимо, поскольку 'cat' уже выполнила
|
|
196 чтение до конца потока стандартного ввода:
|
|
197 .PP
|
|
198 \fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
|
|
199 .PP
|
|
200 Вывод шестнадцатеричного представления от позиции в файле 0x480
|
|
201 (= 1024+128).
|
|
202 Символ `+' означает "относительно текущей позиции", таким образом `128' добавляется
|
|
203 к первому килобайту, где завершает работу dd:
|
|
204 .PP
|
|
205 \fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
|
|
206 .PP
|
|
207 Вывод шестнадцатеричного представления от позиции в файле 0x100
|
|
208 (= 1024-768):
|
|
209 .PP
|
|
210 \fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
|
|
211 .PP
|
|
212 В то же время, следует заметить, что подобные ситуации встречаются довольно редко,
|
|
213 так что символ `+' обычно не используется. Автор предпочитает наблюдать за работой
|
|
214 xxd с помощью strace(1) или truss(1) в тех случаях, когда применяется ключ
|
|
215 \-s.
|
|
216 .SH ПРИМЕРЫ
|
|
217 .PP
|
|
218 .br
|
|
219 Вывести всё, кроме первых трёх строк (0x30 байтов) файла
|
|
220 .B file
|
|
221 :
|
|
222 .PP
|
|
223 \fI% xxd \-s 0x30 file
|
|
224 .PP
|
|
225 .br
|
|
226 Вывести три строки (0x30 байтов) от конца файла
|
|
227 .B file
|
|
228 :
|
|
229 .PP
|
|
230 \fI% xxd \-s \-0x30 file
|
|
231 .PP
|
|
232 .br
|
|
233 Вывести 120 байтов в виде непрерывного шестнадцатеричного представления
|
|
234 по 40 октетов в строке:
|
|
235 .PP
|
|
236 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
|
237 .br
|
|
238 2e544820585844203120224d616e75616c207061
|
|
239 .br
|
|
240 676520666f7220787864220a2e5c220a2e5c2220
|
|
241 .br
|
|
242 32317374204d617920313939360a2e5c22204d61
|
|
243 .br
|
|
244 6e207061676520617574686f723a0a2e5c222020
|
|
245 .br
|
|
246 2020546f6e79204e7567656e74203c746f6e7940
|
|
247 .br
|
|
248 7363746e7567656e2e7070702e67752e6564752e
|
|
249 .br
|
|
250 .PP
|
|
251 .br
|
|
252 Вывести первые 120 байтов этой страницы справочника по 12 октетов в строке:
|
|
253 .PP
|
|
254 \fI% xxd \-l 120 \-c 12 xxd.1\fR
|
|
255 .br
|
|
256 0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
|
257 .br
|
|
258 000000c: 616e 7561 6c20 7061 6765 2066 anual page f
|
|
259 .br
|
|
260 0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\".
|
|
261 .br
|
|
262 0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May
|
|
263 .br
|
|
264 0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma
|
|
265 .br
|
|
266 000003c: 6e20 7061 6765 2061 7574 686f n page autho
|
|
267 .br
|
|
268 0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To
|
|
269 .br
|
|
270 0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent <t
|
|
271 .br
|
|
272 0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
|
|
273 .br
|
|
274 000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu.
|
|
275 .PP
|
|
276 .br
|
|
277 Показать дату из файла xxd.1:
|
|
278 .PP
|
|
279 \fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
|
|
280 .br
|
|
281 0000028: 3231 7374 204d 6179 2031 3939 21st May 199
|
|
282 .PP
|
|
283 .br
|
|
284 Скопировать
|
|
285 .B входной_файл
|
|
286 в
|
|
287 .B выходной_файл
|
|
288 с добавлением 100 байтов со значением 0x00 в начало файла:
|
|
289 .PP
|
|
290 \fI% xxd входной_файл | xxd \-r \-s 100 \> выходной_файл\fR
|
|
291 .br
|
|
292 .PP
|
|
293 .br
|
|
294 Заменить дату в файле xxd.1:
|
|
295 .PP
|
|
296 \fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
|
|
297 .br
|
|
298 \fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
|
|
299 .br
|
|
300 0000028: 3235 7468 204d 6179 2031 3939 25th May 199
|
|
301 .PP
|
|
302 .br
|
|
303 Создать 65537-байтный файл, все байты которого имеют значение
|
|
304 0x00, кроме последнего байта, который должен иметь значение 'A'
|
|
305 (0x41):
|
|
306 .PP
|
|
307 \fI% echo '010000: 41' | xxd \-r \> file\fR
|
|
308 .PP
|
|
309 .br
|
|
310 Создать шестнадцатеричное представление этого файла с
|
|
311 использованием автоматического пропуска:
|
|
312 .PP
|
|
313 \fI% xxd \-a \-c 12 file\fR
|
|
314 .br
|
|
315 0000000: 0000 0000 0000 0000 0000 0000 ............
|
|
316 .br
|
|
317 *
|
|
318 .br
|
|
319 000fffc: 0000 0000 40 ....A
|
|
320 .PP
|
|
321 Создать 1-байтный файл, содержащий символ 'A'.
|
|
322 Число после '\-r \-s' добавляется к номерам строк, найденным в файле;
|
|
323 иначе говоря, предшествующие байты пропускаются:
|
|
324 .PP
|
|
325 \fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
|
|
326 .PP
|
|
327 xxd можно использовать в качестве фильтра в редакторе, например в
|
|
328 .B vim(1),
|
|
329 чтобы создать шестнадцатеричное представление области между
|
|
330 отметками `a' и `z':
|
|
331 .PP
|
|
332 \fI:'a,'z!xxd\fR
|
|
333 .PP
|
|
334 Вы можете использовать xxd в качестве фильтра в редакторе, например в
|
|
335 .B vim(1),
|
|
336 для восстановления данных из шестнадцатеричного представления
|
|
337 между отметками `a' и `z':
|
|
338 .PP
|
|
339 \fI:'a,'z!xxd \-r\fR
|
|
340 .PP
|
|
341 Вы можете использовать xxd в качестве фильтра в редакторе, например в
|
|
342 .B vim(1),
|
|
343 для восстановления данных из единственной строки
|
|
344 шестнадцатеричного представления. Поместите курсор в соответствующую строку
|
|
345 и наберите
|
|
346 .PP
|
|
347 \fI!!xxd \-r\fR
|
|
348 .PP
|
|
349 Чтобы прочитать единственный символ из канала связи:
|
|
350 .PP
|
|
351 \fI% xxd \-c1 < /dev/term/b &\fR
|
|
352 .br
|
|
353 \fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
|
|
354 .br
|
|
355 \fI% echo \-n foo > /dev/term/b\fR
|
|
356 .PP
|
|
357 .SH ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
|
|
358 Программа xxd завершает работу со следующими значениями:
|
|
359 .TP
|
|
360 0
|
|
361 Ошибки не обнаружены.
|
|
362 .TP
|
|
363 \-1
|
|
364 Операция не поддерживается (выполнение
|
|
365 .I xxd \-r \-i
|
|
366 пока невозможно).
|
|
367 .TP
|
|
368 1
|
|
369 Ошибка при разборе ключей командной строки.
|
|
370 .TP
|
|
371 2
|
|
372 Проблемы во входном файле.
|
|
373 .TP
|
|
374 3
|
|
375 Проблемы в выходном файле.
|
|
376 .TP
|
|
377 4,5
|
|
378 Желательная позиция поиска недостижима.
|
|
379 .SH СМОТРИ ТАКЖЕ
|
|
380 uuencode(1), uudecode(1), patch(1)
|
|
381 .br
|
|
382 .SH ПРЕДУПРЕЖДЕНИЕ
|
|
383 Странность этой программы соответствует особенностям мозга её создателя.
|
|
384 Используйте её на свой страх и риск. Копируйте файлы, отслеживайте
|
|
385 вызовы, становитесь волшебником.
|
|
386 .br
|
|
387 .SH ВЕРСИЯ
|
|
388 Эта страница справочника документирует xxd версии 1.7.
|
|
389 .SH АВТОР
|
|
390 .br
|
|
391 (c) 1990-1997 Юрген Вайгерт (Juergen Weigert)
|
|
392 .br
|
|
393 <jnweiger@informatik.uni-erlangen.de>
|
|
394 .LP
|
|
395 Вы можете свободно распространять программу со ссылкой на меня.
|
|
396 .br
|
|
397 Если использование этой программы принесло вам какой-то доход,
|
|
398 поделитесь со мной.
|
|
399 .br
|
|
400 Если вы потеряли деньги, то я тут не причём.
|
|
401 .PP
|
|
402 Первый вариант страницы справочника написан Тони Наджентом (Tony Nugent)
|
|
403 .br
|
|
404 <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
|
|
405 .br
|
|
406 Небольшие изменения внесены Брамом Мооленааром (Bram Moolenaar).
|
|
407 Страница отредактирована Юргеном Вайгертом (Juergen Weigert).
|
|
408 .PP
|