Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
tweak(1)			 Simon Tatham			      tweak(1)

NAME
       tweak - efficient hex editor

SYNOPSIS
       tweak [-l | -f] [-e] [-w	width] [-o offset] filename

DESCRIPTION
       tweak  is a hex editor. It allows you to	edit a file at very low	level,
       letting you see the full	and exact binary contents of the file. It  can
       be  useful for modifying	binary files such as executables, editing disk
       or CD images, debugging programs	that generate binary file formats  in-
       correctly, and many other things.

       Unlike  simpler	hex editors, tweak possesses a fully functional	insert
       mode. This is not useful	when editing many of the  types	 of  file  de-
       scribed	above,	but can	be useful in other situations. Also, an	insert
       mode makes it easy to use tweak to construct new	files from scratch.

       When you	open a file in tweak, you can expect to	see  the  screen  con-
       tents looking something like this:

       00000000	  7F 45	4C 46 01 01 01 00   .ELF....
       00000008	  00 00	00 00 00 00 00 00   ........
       00000010	  02 00	03 00 01 00 00 00   ........
       00000018	  D0 8E	04 08 34 00 00 00   ....4...
       00000020	  2C EF	01 00 00 00 00 00   ,.......

       The  central column shows you the hexadecimal value of each byte	in the
       file you	are editing. The column	on the right shows the ASCII interpre-
       tation of those bytes, where applicable.	In the example above, the  se-
       quence  45 4C 46	on the first line translates into the ASCII upper-case
       letters `ELF', but the subsequent sequence 01 01	01 00  does  not  have
       any  printable ASCII representation and so the right-hand column	simply
       prints dots.

       The column on the left shows the	position within	the file of the	 start
       of each row.

       In  fact,  when	you  start tweak, you will usually see 16 bytes	of the
       file per	row, not 8 as shown above. However, this  is  configurable  if
       your  screen  is	narrower - or wider - than the usual 80	columns, or if
       the file	you are	editing	consists of fixed-size records of  some	 other
       size.

       By  default, tweak does not load	its entire input file into memory. In-
       stead, it loads it lazily, reading from the file	on disk	when  you  re-
       quest  a	 view  of  a part of the file it doesn't have stored. When you
       modify the file,	it stores your modifications in	memory,	but  continues
       to  refer to the	original disk file for the parts you have not touched.
       This means you can edit extremely large files (for example,  entire  CD
       images)	without	difficulty; opening such a file	is instantaneous, mak-
       ing modifications causes	tweak's	memory usage to	grow with the size  of
       the  changes rather than	the size of the	whole file, and	only when sav-
       ing the altered version will tweak have to read through the entire  in-
       put file	to write the output.

       However,	 this  mode  of	operation has a	disadvantage, which is that if
       the input file is modified by another program while tweak  is  running,
       tweak's	internal data structures will not be sufficient	to keep	track,
       and it is likely	that the file written out will contain	a  mixture  of
       the  old	and new	contents of the	input file. Therefore, you can disable
       this lazy loading if you	need to; see the -e option below.

OPTIONS
       This section lists the command-line options supported by	tweak.

       -f     Runs tweak in `fix' mode,	i.e. with the insert function entirely
	      disabled.	This might be useful if	you  are  editing  a  file  in
	      which  the  insert  mode is of no	use (executables, for example,
	      tend to have strong dependencies on precise file	offsets	 which
	      make  it almost impossible to insert data	in one without render-
	      ing it unusable) and you want to avoid turning it	on by mistake.

       -l     Runs tweak in `look' mode. In this mode tweak does not allow you
	      to modify	the data at all; it becomes simply a tool for  examin-
	      ing a file in detail.

       -e     Runs tweak in `eager' mode. In this mode tweak will read its en-
	      tire input file when starting up.	This causes it to take up more
	      memory,  but  means  that	it has no dependency on	the input file
	      remaining	unmodified, and	other programs can alter  it  if  they
	      need to without causing trouble.

       -w width
	      Specifies	 the  number of	bytes tweak will display per line. The
	      default is 16, which fits	neatly in an 80-column screen.

       -o offset
	      If this option is	specified, tweak will ensure  that  the	 given
	      file  offset  occurs at the start	of a line. For example,	if you
	      loaded a file using the options -w 8 -o 0x13, you	 might	see  a
	      display a	bit like this:

	      00000000			7F 45 4C	.EL
	      00000003	 46 01 01 01 00	00 00 00   F.......
	      0000000B	 00 00 00 00 00	02 00 03   ........
	      00000013	 00 01 00 00 00	D0 8E 04   ........
	      0000001B	 08 34 00 00 00	2C EF 01   .4...,..

	      By  putting only three bytes of the file on the very first line,
	      tweak has	arranged that the file offset 0x13 (19 in decimal) ap-
	      pears at the beginning of	the fourth line.

	      You might	use this option	if you knew you	were editing a file in
	      a	particular format. For	example,  if  your  file  contained  a
	      53-byte  header  followed	 by  a	series of 22-byte records, you
	      might find it useful to specify the options -w 22	 -o  53.  This
	      would  arrange  that after the header, each individual record of
	      the file would appear on precisely one line of tweak's display.

       -D     If this option is	specified, tweak will not attempt to load  and
	      edit a file at all, but will simply produce its default .tweakrc
	      file on standard output. This is a useful	way to give yourself a
	      starting	point  if you want to begin reconfiguring tweak's key-
	      board layout.

KEYS
       This section describes all the editing keys supported by	tweak  by  de-
       fault. The default key bindings for tweak are basically Emacs-like.

   Movement keys
       The  Emacs cursor movement keys should all work,	and their counterparts
       in ordinary function keys ought to work too:

             ^P and ^N	go to the previous and next lines; Up and Down	should
	      do the same.

             ^B  and  ^F  go  back  and forward one character;	Left and Right
	      should do	the same.

             M-v and ^V go up and down	one screenful at a time; Page  Up  and
	      Page Down	should do the same.

             ^A  and ^E go to the beginning and end of	the line; Home and End
	      should do	the same.

       Press M-< and M-> go to the beginning and end of	the file.

       Press ^X	g to go	to a particular	byte position in the file; you will be
       asked to	type in	the position you want. You can enter it	in decimal, or
       as a hex	number with `0x' before	it.

   Editing keys
       Press Return to move the	cursor between the hex section of  the	screen
       and the ASCII section.

       When  in	 the  hex  section,  you can enter hexadecimal digits to alter
       data; when in the ASCII section,	you can	directly type ASCII text.

       In ASCII	mode, you can also press ^Q to literally quote the next	 input
       character;  for	example,  if  you  want	to insert a Control-V, you can
       press ^Q^V and tweak will automatically insert the byte value 0x16.

       Press ^X^I, or the Insert key if	you have one, to toggle	between	 over-
       write  mode  and	insert mode. In	insert mode, typing hex	or ASCII input
       will insert new bytes containing	the values you provide.	Also, you  can
       then  press  Backspace to delete	the byte to the	left of	the cursor, or
       ^D or Delete to delete the byte under the cursor.

   Cut and paste
       Press ^@	(this character	may be generated by the	key  combination  Con-
       trol-@,	or Control-2, or Control-Space)	to mark	the end	of a selection
       region. After you do this, the bytes between that mark and  the	cursor
       will be highlighted. Press ^@ again to abandon the selection.

       Press  M-w while	a selection is active to copy the selected region into
       tweak's cut buffer.

       In insert mode, you also	have the option	of pressing ^W to cut the  se-
       lected  region  completely  out	of  the	 file  and place it in the cut
       buffer.

       Finally,	press ^Y to paste the cut buffer contents back into  the  file
       (this will overwrite or insert depending	on the current mode).

   Searching
       Press ^S	to search for a	byte sequence. You will	be asked to enter some
       text  to	search for on the bottom line of the screen. You can type this
       text in ASCII, or as a sequence of hex byte values prefixed with	 back-
       slashes	(\). For example, if you wanted	to search for the byte value 5
       followed	by the word `hello', you might enter \05hello. If you want  to
       specify	a  literal backslash character,	you can	either enter it	in hex
       (as \5C), or simply double it on	input (\\).

       Press ^R	to search backwards instead of forwards	from the current  cur-
       sor position.

       Since  tweak deals in pure binary data, searches	are always case-sensi-
       tive.

   Controlling the display
       If you press ^X w, you will be asked to enter a new display width. This
       has the same effect as passing the -w option on the command line. Simi-
       larly, pressing ^X o allows you to enter	a new display offset,  equiva-
       lent to the -o option.

       By  default,  the  current file position	and file size are displayed on
       tweak's status line in hex. If you prefer  them	in  decimal,  you  can
       press ^X	x or ^X	h to toggle them between hex and decimal.

   Miscellaneous
       Press ^L	to redraw the screen and recentre the cursor. Press ^Z to sus-
       pend tweak and return temporarily to the	shell.

       Press ^X^S to save the file you are editing.

       Press  ^X^C  to	exit  tweak. (If you do	this with changes unsaved, you
       will be asked whether you want to save them.)

CONFIGURATION FILE
       tweak's keyboard	bindings are configurable. It will attempt to  read  a
       file  from  your	home directory called .tweakrc,	and if it finds	one it
       will use	the keyboard bindings described	in it. If  it  does  not  find
       one, it will use	its internal default bindings.

       Most  of	 the directives	in .tweakrc are	of the form `bind command-name
       key'. For example, `bind	exit ^X^C'. Additionally, there	are two	 other
       directives, width and offset, which give	the default display parameters
       if no -w	and -o options are specified.

       The  easiest way	to learn about the .tweakrc file is to begin by	having
       tweak output its	internal default one:

       tweak -D	> $HOME/.tweakrc

       Then you	can read the default file, learn the  tweak  internal  command
       names, and edit the file	to do what you want.

BUGS
       This  man  page	probably ought to contain an explicit list of internal
       command	names,	rather	than  simply  referring	 you  to  the  default
       .tweakrc.

Simon Tatham			  2004-11-05			      tweak(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tweak&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help