.\" Copyright (c) 1993 Free Software Foundation
.\" See section COPYING for conditions for redistribution
.TH strings 1 "25 June 1993" "cygnus support" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
\(**
..

.SH NAME
strings \- print the strings of printable characters in files

.SH SYNOPSIS
.hy 0
.na
.TP
.B strings
.RB "[\|" \-a | \-\c
.RB | \-\-all "\|]" 
.RB "[\|" \-f | \-\-print\-file\-name "\|]"
.RB "[\|" \-o "\|]" 
.RB "[\|" \-\-help "\|]" 
.RB "[\|" \-v | \-\-version "\|]"  
.RB "[\|" \-n
.I min\-len\c
.RI | \-min\-len\c
.RB | "\-\-bytes="\c
.I min\-len\c
\&\|]
.RB "[\|" \-t
.I {o,x,d}\c
.RB "[\|" "\-\-target=\fIbfdname" "\|]"
.RB | "\-\-radix="\c
.I {o,x,d}\c
\&\|]
.I file\c
.ad b
.hy 1
.SH DESCRIPTION
For each
.I file
given, GNU \c
.B strings
prints the printable character sequences that are at least 4
characters long (or the number given with the options below) and are
followed by an unprintable character.  By default, it only prints the
strings from the initialized and loaded sections of object files; for
other types of files, it prints the strings from the whole file.

.PP
.B strings
is mainly useful for determining the contents of non-text files.

.SH OPTIONS
The long and short forms of options, shown here as alternatives, are
equivalent.

.TP
.B \-a
.TP
.B \-\-all
.TP
.B \-
Do not scan only the initialized and loaded sections of object files;
scan the whole files.

.TP
.B \-f
.TP
.B \-\-print\-file\-name
Print the name of the file before each string.

.TP
.B \-\-help
Print a summary of the options to
.B strings
on the standard output and exit.

.TP
.B \-v
.TP
.B \-\-version
Print the version number
of
.B strings
on the standard output and exit.

.TP
.B "\-n \fImin\-len\fP"
.TP
.B "\-\fImin\-len\fP"
.TP
.B "\-bytes=\fImin\-len\fP"
Print sequences of characters that are at least
.I min\-len
characters long, instead of the default 4.

.TP
.BR "\-t " {o,x,d}
.TP
.BR "\-\-radix=" {o,x,d}
Print the offset within the file before each string.  The single
character argument specifies the radix of the offset\(emoctal,
hexadecimal, or decimal.

.TP
.BI "\-\-target=" "bfdname"
Specify an object code format other than your system's default format.
See 
.BR objdump ( 1 ),
for information on listing available formats.

.TP
.B \-o
Like
.BR "\-t o" .

.PP

.SH "SEE ALSO"
.RB "`\|" binutils "\|'"
entry in 
.B
info\c
\&; 
.I
The GNU Binary Utilities\c
\&, Roland H. Pesch (October 1991);
.BR ar ( 1 ),
.BR nm ( 1 ),
.BR objdump ( 1 ),
.BR ranlib ( 1 ).


.SH COPYING
Copyright (c) 1993 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
