Mercurial > vim
annotate runtime/doc/xxd.1 @ 32637:39cade5fb57a v9.0.1650
patch 9.0.1650: MS-Windows: default 'viewdir' may include read-only directory
Commit: https://github.com/vim/vim/commit/801961d2c2876e5d2d0b52a585b9d04535168ebd
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jun 23 16:15:13 2023 +0100
patch 9.0.1650: MS-Windows: default 'viewdir' may include read-only directory
Problem: MS-Windows: default 'viewdir' may include read-only directory.
Solution: Use $HOME instead of $VIM for 'viewdir' default. (closes https://github.com/vim/vim/issues/12119)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 23 Jun 2023 17:30:06 +0200 |
parents | 948c947cb1ed |
children | 36c49f10843b |
rev | line source |
---|---|
7 | 1 .TH XXD 1 "August 1996" "Manual page for 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 NAME | |
8 .I xxd | |
9 \- make a hexdump or do the reverse. | |
10 .SH SYNOPSIS | |
11 .B xxd | |
12 \-h[elp] | |
13 .br | |
14 .B xxd | |
15 [options] [infile [outfile]] | |
16 .br | |
17 .B xxd | |
18 \-r[evert] [options] [infile [outfile]] | |
19 .SH DESCRIPTION | |
20 .I xxd | |
21 creates a hex dump of a given file or standard input. | |
22 It can also convert a hex dump back to its original binary form. | |
23 Like | |
216 | 24 .BR uuencode (1) |
7 | 25 and |
216 | 26 .BR uudecode (1) |
7 | 27 it allows the transmission of binary data in a `mail-safe' ASCII representation, |
28 but has the advantage of decoding to standard output. | |
29 Moreover, it can be used to perform binary file patching. | |
30 .SH OPTIONS | |
31 If no | |
32 .I infile | |
33 is given, standard input is read. | |
34 If | |
35 .I infile | |
36 is specified as a | |
37 .RB \` \- ' | |
38 character, then input is taken from standard input. | |
39 If no | |
40 .I outfile | |
41 is given (or a | |
42 .RB \` \- ' | |
43 character is in its place), results are sent to standard output. | |
44 .PP | |
45 Note that a "lazy" parser is used which does not check for more than the first | |
46 option letter, unless the option is followed by a parameter. | |
47 Spaces between a single option letter and its parameter are optional. | |
48 Parameters to options can be specified in decimal, hexadecimal or octal | |
49 notation. | |
50 Thus | |
51 .BR \-c8 , | |
52 .BR "\-c 8" , | |
53 .B \-c 010 | |
54 and | |
55 .B \-cols 8 | |
56 are all equivalent. | |
57 .PP | |
58 .TP | |
59 .IR \-a " | " \-autoskip | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
60 Toggle autoskip: A single '*' replaces nul-lines. Default off. |
7 | 61 .TP |
62 .IR \-b " | " \-bits | |
63 Switch to bits (binary digits) dump, rather than hexdump. | |
64 This option writes octets as eight digits "1"s and "0"s instead of a normal | |
36 | 65 hexadecimal dump. Each line is preceded by a line number in hexadecimal and |
7 | 66 followed by an ascii (or ebcdic) representation. The command line switches |
67 \-r, \-p, \-i do not work with this mode. | |
68 .TP | |
69 .IR "\-c cols " | " \-cols cols" | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
70 Format |
7 | 71 .RI < cols > |
72 octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. | |
27118
2f854597399f
patch 8.2.4088: xxd cannot output everything in one line
Bram Moolenaar <Bram@vim.org>
parents:
13571
diff
changeset
|
73 No maxmimum for \-ps. With \-ps, 0 results in one long line of output. |
7 | 74 .TP |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
75 .IR \-C " | " \-capitalize |
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
76 Capitalize variable names in C include file style, when using \-i. |
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
77 .TP |
7 | 78 .IR \-E " | " \-EBCDIC |
79 Change the character encoding in the righthand column from ASCII to EBCDIC. | |
80 This does not change the hexadecimal representation. The option is | |
81 meaningless in combinations with \-r, \-p or \-i. | |
82 .TP | |
6655 | 83 .IR \-e |
84 Switch to little-endian hexdump. | |
85 This option treats byte groups as words in little-endian byte order. | |
86 The default grouping of 4 bytes may be changed using | |
87 .RI "" \-g . | |
88 This option only applies to hexdump, leaving the ASCII (or EBCDIC) | |
89 representation unchanged. | |
90 The command line switches | |
91 \-r, \-p, \-i do not work with this mode. | |
92 .TP | |
7 | 93 .IR "\-g bytes " | " \-groupsize bytes" |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
94 Separate the output of every |
7 | 95 .RI < bytes > |
96 bytes (two hex characters or eight bit-digits each) by a whitespace. | |
97 Specify | |
98 .I \-g 0 | |
99 to suppress grouping. | |
100 .RI < Bytes "> defaults to " 2 | |
6655 | 101 in normal mode, \fI4\fP in little-endian mode and \fI1\fP in bits mode. |
7 | 102 Grouping does not apply to postscript or include style. |
103 .TP | |
104 .IR \-h " | " \-help | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
105 Print a summary of available commands and exit. No hex dumping is performed. |
7 | 106 .TP |
107 .IR \-i " | " \-include | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
108 Output in C include file style. A complete static array definition is written |
7 | 109 (named after the input file), unless xxd reads from stdin. |
110 .TP | |
111 .IR "\-l len " | " \-len len" | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
112 Stop after writing |
7 | 113 .RI < len > |
114 octets. | |
115 .TP | |
29330
948c947cb1ed
patch 9.0.0008: cannot specify the variable name for "xxd -i"
Bram Moolenaar <Bram@vim.org>
parents:
27118
diff
changeset
|
116 .I "\-n name " | " \-name name" |
948c947cb1ed
patch 9.0.0008: cannot specify the variable name for "xxd -i"
Bram Moolenaar <Bram@vim.org>
parents:
27118
diff
changeset
|
117 Override the variable name output when \-i is used. The array is named |
948c947cb1ed
patch 9.0.0008: cannot specify the variable name for "xxd -i"
Bram Moolenaar <Bram@vim.org>
parents:
27118
diff
changeset
|
118 \fIname\fP and the length is named \fIname\fP_len. |
948c947cb1ed
patch 9.0.0008: cannot specify the variable name for "xxd -i"
Bram Moolenaar <Bram@vim.org>
parents:
27118
diff
changeset
|
119 .TP |
6655 | 120 .I \-o offset |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
121 Add |
6655 | 122 .RI < offset > |
123 to the displayed file position. | |
124 .TP | |
7 | 125 .IR \-p " | " \-ps " | " \-postscript " | " \-plain |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
126 Output in postscript continuous hexdump style. Also known as plain hexdump |
7 | 127 style. |
128 .TP | |
129 .IR \-r " | " \-revert | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
130 Reverse operation: convert (or patch) hexdump into binary. |
7 | 131 If not writing to stdout, xxd writes into its output file without truncating |
132 it. Use the combination | |
133 .I \-r \-p | |
134 to read plain hexadecimal dumps without line number information and without a | |
135 particular column layout. Additional Whitespace and line-breaks are allowed | |
136 anywhere. | |
137 .TP | |
138 .I \-seek offset | |
139 When used after | |
216 | 140 .IR \-r : |
141 revert with | |
7 | 142 .RI < offset > |
143 added to file positions found in hexdump. | |
144 .TP | |
216 | 145 .I \-s [+][\-]seek |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
146 Start at |
7 | 147 .RI < seek > |
148 bytes abs. (or rel.) infile offset. | |
1125 | 149 \fI+ \fRindicates that the seek is relative to the current stdin file position |
7 | 150 (meaningless when not reading from stdin). \fI\- \fRindicates that the seek |
151 should be that many characters from the end of the input (or if combined with | |
216 | 152 \fI+\fR: before the current stdin file position). |
7 | 153 Without \-s option, xxd starts at the current file position. |
154 .TP | |
155 .I \-u | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
156 Use upper case hex letters. Default is lower case. |
7 | 157 .TP |
158 .IR \-v " | " \-version | |
13571
362b27e3f702
patch 8.0.1658: capitalize argument not available in long form
Christian Brabandt <cb@256bit.org>
parents:
6655
diff
changeset
|
159 Show version string. |
7 | 160 .SH CAVEATS |
161 .PP | |
162 .I xxd \-r | |
163 has some builtin magic while evaluating line number information. | |
36 | 164 If the output file is seekable, then the linenumbers at the start of each |
7 | 165 hexdump line may be out of order, lines may be missing, or overlapping. In |
166 these cases xxd will lseek(2) to the next position. If the output file is not | |
167 seekable, only gaps are allowed, which will be filled by null-bytes. | |
168 .PP | |
169 .I xxd \-r | |
170 never generates parse errors. Garbage is silently skipped. | |
171 .PP | |
172 When editing hexdumps, please note that | |
173 .I xxd \-r | |
174 skips everything on the input line after reading enough columns of hexadecimal | |
175 data (see option \-c). This also means, that changes to the printable ascii (or | |
176 ebcdic) columns are always ignored. Reverting a plain (or postscript) style | |
36 | 177 hexdump with xxd \-r \-p does not depend on the correct number of columns. Here anything that looks like a pair of hex-digits is interpreted. |
7 | 178 .PP |
179 Note the difference between | |
180 .br | |
181 \fI% xxd \-i file\fR | |
182 .br | |
183 and | |
184 .br | |
216 | 185 \fI% xxd \-i < file\fR |
7 | 186 .PP |
810 | 187 .I xxd \-s +seek |
7 | 188 may be different from |
216 | 189 .IR "xxd \-s seek" , |
190 as lseek(2) is used to "rewind" input. A '+' | |
7 | 191 makes a difference if the input source is stdin, and if stdin's file position |
192 is not at the start of the file by the time xxd is started and given its input. | |
193 The following examples may help to clarify (or further confuse!)... | |
194 .PP | |
195 Rewind stdin before reading; needed because the `cat' has already read to the | |
196 end of stdin. | |
197 .br | |
1125 | 198 \fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR |
7 | 199 .PP |
200 Hexdump from file position 0x480 (=1024+128) onwards. | |
201 The `+' sign means "relative to the current position", thus the `128' adds to | |
202 the 1k where dd left off. | |
203 .br | |
1125 | 204 \fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR |
7 | 205 .PP |
216 | 206 Hexdump from file position 0x100 ( = 1024\-768) on. |
7 | 207 .br |
1125 | 208 \fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR |
7 | 209 .PP |
210 However, this is a rare situation and the use of `+' is rarely needed. | |
36 | 211 The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. |
7 | 212 .SH EXAMPLES |
213 .PP | |
214 .br | |
215 Print everything but the first three lines (hex 0x30 bytes) of | |
810 | 216 .BR file . |
7 | 217 .br |
1125 | 218 \fI% xxd \-s 0x30 file\fR |
7 | 219 .PP |
220 .br | |
221 Print 3 lines (hex 0x30 bytes) from the end of | |
810 | 222 .BR file . |
7 | 223 .br |
1125 | 224 \fI% xxd \-s \-0x30 file\fR |
7 | 225 .PP |
226 .br | |
1125 | 227 Print 120 bytes as continuous hexdump with 20 octets per line. |
7 | 228 .br |
229 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR | |
230 .br | |
36 | 231 2e54482058584420312022417567757374203139 |
7 | 232 .br |
36 | 233 39362220224d616e75616c207061676520666f72 |
7 | 234 .br |
36 | 235 20787864220a2e5c220a2e5c222032317374204d |
7 | 236 .br |
36 | 237 617920313939360a2e5c22204d616e2070616765 |
7 | 238 .br |
36 | 239 20617574686f723a0a2e5c2220202020546f6e79 |
7 | 240 .br |
36 | 241 204e7567656e74203c746f6e79407363746e7567 |
7 | 242 .br |
243 | |
244 .br | |
245 Hexdump the first 120 bytes of this man page with 12 octets per line. | |
246 .br | |
247 \fI% xxd \-l 120 \-c 12 xxd.1\fR | |
248 .br | |
36 | 249 0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A |
7 | 250 .br |
36 | 251 000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" |
7 | 252 .br |
36 | 253 0000018: 224d 616e 7561 6c20 7061 6765 "Manual page |
7 | 254 .br |
36 | 255 0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ |
7 | 256 .br |
36 | 257 0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M |
7 | 258 .br |
36 | 259 000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" |
7 | 260 .br |
36 | 261 0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut |
7 | 262 .br |
36 | 263 0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" |
7 | 264 .br |
36 | 265 0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent |
7 | 266 .br |
36 | 267 000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug |
7 | 268 .PP |
269 .br | |
270 Display just the date from the file xxd.1 | |
271 .br | |
36 | 272 \fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR |
7 | 273 .br |
36 | 274 0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 |
7 | 275 .PP |
276 .br | |
277 Copy | |
278 .B input_file | |
279 to | |
280 .B output_file | |
281 and prepend 100 bytes of value 0x00. | |
282 .br | |
810 | 283 \fI% xxd input_file | xxd \-r \-s 100 > output_file\fR |
7 | 284 .br |
285 | |
286 .br | |
287 Patch the date in the file xxd.1 | |
288 .br | |
810 | 289 \fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR |
7 | 290 .br |
36 | 291 \fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR |
7 | 292 .br |
36 | 293 0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 |
7 | 294 .PP |
295 .br | |
296 Create a 65537 byte file with all bytes 0x00, | |
297 except for the last one which is 'A' (hex 0x41). | |
298 .br | |
810 | 299 \fI% echo "010000: 41" | xxd \-r > file\fR |
7 | 300 .PP |
301 .br | |
302 Hexdump this file with autoskip. | |
303 .br | |
304 \fI% xxd \-a \-c 12 file\fR | |
305 .br | |
306 0000000: 0000 0000 0000 0000 0000 0000 ............ | |
307 .br | |
308 * | |
309 .br | |
310 000fffc: 0000 0000 40 ....A | |
311 .PP | |
312 Create a 1 byte file containing a single 'A' character. | |
313 The number after '\-r \-s' adds to the linenumbers found in the file; | |
314 in effect, the leading bytes are suppressed. | |
315 .br | |
810 | 316 \fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR |
7 | 317 .PP |
318 Use xxd as a filter within an editor such as | |
319 .B vim(1) | |
320 to hexdump a region marked between `a' and `z'. | |
321 .br | |
322 \fI:'a,'z!xxd\fR | |
323 .PP | |
324 Use xxd as a filter within an editor such as | |
325 .B vim(1) | |
326 to recover a binary hexdump marked between `a' and `z'. | |
327 .br | |
328 \fI:'a,'z!xxd \-r\fR | |
329 .PP | |
330 Use xxd as a filter within an editor such as | |
331 .B vim(1) | |
332 to recover one line of a hexdump. Move the cursor over the line and type: | |
333 .br | |
334 \fI!!xxd \-r\fR | |
335 .PP | |
336 Read single characters from a serial line | |
337 .br | |
338 \fI% xxd \-c1 < /dev/term/b &\fR | |
339 .br | |
340 \fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR | |
341 .br | |
342 \fI% echo \-n foo > /dev/term/b\fR | |
343 .PP | |
344 .SH "RETURN VALUES" | |
345 The following error values are returned: | |
346 .TP | |
347 0 | |
348 no errors encountered. | |
349 .TP | |
350 \-1 | |
351 operation not supported ( | |
352 .I xxd \-r \-i | |
353 still impossible). | |
354 .TP | |
355 1 | |
356 error while parsing options. | |
357 .TP | |
358 2 | |
359 problems with input file. | |
360 .TP | |
361 3 | |
362 problems with output file. | |
363 .TP | |
364 4,5 | |
365 desired seek position is unreachable. | |
366 .SH "SEE ALSO" | |
367 uuencode(1), uudecode(1), patch(1) | |
368 .br | |
369 .SH WARNINGS | |
370 The tools weirdness matches its creators brain. | |
371 Use entirely at your own risk. Copy files. Trace it. Become a wizard. | |
372 .br | |
373 .SH VERSION | |
374 This manual page documents xxd version 1.7 | |
375 .SH AUTHOR | |
376 .br | |
377 (c) 1990-1997 by Juergen Weigert | |
378 .br | |
810 | 379 <jnweiger@informatik.uni\-erlangen.de> |
7 | 380 .LP |
381 Distribute freely and credit me, | |
382 .br | |
383 make money and share with me, | |
384 .br | |
385 lose money and don't ask me. | |
386 .PP | |
387 Manual page started by Tony Nugent | |
388 .br | |
389 <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> | |
390 .br | |
391 Small changes by Bram Moolenaar. | |
392 Edited by Juergen Weigert. | |
393 .PP |