SHAR(1)

NAME
shar - create shell archives

SYNOPSIS
shar [ options ] file ...
shar -S [ options ]

DESCRIPTION
Shar creates "shell archives" (or shar files) which are in text format and can be mailed. These files may be unpacked later by executing them with /bin/sh. The resulting archive is sent to standard out unless the -o option is given. A wide range of features provide extensive flexibility in manufacturing shars and in specifying shar "smartness." Archives may be "vanilla" or comprehensive. This manual page reflects shar version 4.0.

OPTIONS

Options have a one letter version starting with - or a long version starting with --. The exception is --help and --version which does not have a short version. Options can be given in any order. Some options depend on each other:
	The -o option is required if the -l or -L option is used.
	The -n option is required if the -a option is used.
	See -V below.

--version
    Print the version number of the program on standard output, then immediately exits.

--help
    Print a help summary on standard output, then immediately exits.

-V  --vanilla-operation
    Produce "vanilla" shars which rely only upon the existence of sed and echo in the unsharing environment. In addition, "if test" must also be supported if the -X option is used. The -V silently disables options offensive to the "network cop" (or "brown shirt"), but does warn you if it is specified with -B, -z, -Z, -p or -M (any of which does or might require uudecode, gzip or compress in the unsharing environment).

-v  --no-verbose
    Verbose OFF. Disables the inclusion of comments to be output when the archive is unpacked.

-w  --no-character-count
    Do NOT check with 'wc -c' after unpack. The default is to check.

-n name  --archive-name=name
    Name of archive to be included in the header of the shar files. See the -a switch.

-a  --net-headers
    Allows automatic generation of headers:
    	Submitted-by: who@where
    	Archive-name: <name>/part##
    The <name> must be given with the -n switch. If name includes a '/' "/part" isn't used. Thus:
    -n xyzzy	produces:
    	xyzzy/part01
    	xyzzy/part02
    -n xyzzy/patch	produces:
    	xyzzy/patch01
    	xyzzy/patch02
    -n xyzzy/patch01.	produces:
    	xyzzy/patch01.01
    	xyzzy/patch01.02

    The who@where can be explicitly stated with the -s switch if the default isn't appropriate. Who@where is essentially built as `whoami`@`uname`.

-s who@where  --submitter=who@where
    Override automatically determined submitter name.

-x  --no-check-existing
    Overwrite existing files without checking. If neither -x nor -X is specified, the unpack will check for and not overwrite existing files when unpacking the archive (unless '-c' is passed as a parameter to the script when unpacking).

-X  --query-user
    Interactively overwrite existing files (DO NOT USE FOR SHARS SUBMITTED TO THE NET).

-B  --uuencode
    Treat all files as binary, use uuencode prior to packing. This increases the size of the archive. The recipient must have uudecode in order to unpack. (USE OF UUENCODE IS NOT APPRECIATED BY MANY ON THE NET).

-T  --text-files
    Treat all files as text (default).

-z  --gzip
    Gzip and uuencode all files prior to packing. The recipient must have uudecode and gzip (used with -d) in order to unpack (USE OF UUENCODE AND GZIP IS NOT APPRECIATED BY MANY ON THE NET).

-Z  --compress
    Compress and uuencode all files prior to packing. The recipient must have uudecode and compress (used with -d) in order to unpack (USE OF UUENCODE AND COMPRESS IS NOT APPRECIATED BY MANY ON THE NET). Option -C is synonymous to -Z, but is being deprecated.

-m  --no-timestamp
    Avoid generating 'touch' commands to restore the file modification dates when unpacking files from the archive.

-p  --intermix-type
    Allow positional parameter options. The options "-B", "-T", "-z" and "-Z" may be embedded, and files to the right of the option will be processed in the specified mode.

-g X  --level-for-gzip=X
    When doing compression, use '-X' as a parameter to gzip. The -g option turns on the -z option by default.

-b X  --bits-per-code=X
    When doing compression, use '-bX' as a parameter to compress. The -B option turns on the -Z option by default.

-M  --mixed-uuencode
    Mixed mode. Determine if the files are text or binary and archive correctly. Files found to be binary are uudecoded prior to packing (USE OF UUENCODE IS NOT APPRECIATED BY MANY ON THE NET).

-P  --no-piping
    Use temporary files instead of pipes in the shar file.

-c  --cut-mark
    Start the shar with a cut line. A line saying 'Cut here' is placed at the start of each output file.

-f  --basename
    Restore by filename only, rather than path. This option causes only file names to be used, which is useful when building a shar from several directories, or another directory. Note that if a directory name is passed to shar, the substructure of that directory will be restored whether -f is specified or not.

-d XXX  --here-delimiter=XXX
    Use XXX to delimit the files in the shar instead of SHAR_EOF. This is for those who want to personalize their shar files.

-F  --force-prefix
    Forces the prefix character (normally 'X' unless the parameter to the -d option starts with 'X') to be prepended to every line even if not required. This option may slightly increase the size of the archive, especially if -B or -Z is used.

-o XXX  --output-prefix=XXX
    Save the archive to files XXX.01 thru XXX.nn instead of standard out. Must be used when the -l or the -L switches are used

-l XX  --whole-size-limit=XX
    Limit the output file size to XXk bytes but don't split input files.

-L XX  --split-size-limit=XX
    Limit output file size to XXk bytes and split files if necessary. The archives created with this option must be unpacked in correct order.

-S  --stdin-file-list
    Read list of files to be packed from the standard input rather than from the command line. Input must be in a form similar to that generated by the find command, one filename per line. This switch is especially useful when the command line will not hold the list of files to be packed. For example:
    find . -type f -print | sort | shar -S -Z -L50 -o /tmp/big
    If -p is specified on the command line, then the options "-B", "-T", "-z" and "-Z" may be included in the standard input (on a line separate from filenames). The maximum number of lines of standard input, file names and options, may not exceed 1024.

EXAMPLES
shar *.c > cprog.shar	# all C prog sources
shar -v *.[ch] > cprog.shar	# non-verbose, .c and .h files
shar -B -l28 -oarc.sh *.arc	# all binary .arc files, into
	# files arc.sh.01 thru arc.sh.NN
shar -f /lcl/src/u*.c > u.sh	# use only the filenames

WARNINGS

No chmod or touch is ever generated for directories created when unpacking. Thus, if a directory is given to shar, the protection and modification dates of corresponding unpacked directory may not match those of the original.

If a directory is passed to shar, it may be scanned more than once. Therefore, one should be careful not change the directory while shar is running.

Be careful that the output file(s) are not included in the inputs or shar may loop until the disk fills up. Be particularly careful when a directory is passed to shar that the output files are not in that directory (or a subdirectory of that directory).

Use of the -B, -z or -Z, and especially -M, may slow the archive process considerably, depending on the number of files.

Use of -X produces shars which WILL cause problems with many unshar procedures. Use this feature only for archives to be passed among agreeable parties. Certainly, -X is NOT for shell archives which are to be submitted to Usenet. Usage of -B, -z or -Z in net shars will cause you to be flamed off the earth. Not using -m or not using -F may also get you occasional complaints.

SEE ALSO

unshar(1)

DIAGNOSTICS

Error messages for illegal or incompatible options, for non-regular, missing or inaccessible files or for (unlikely) memory allocation failure.

AUTHORS
shar3 is a derived work based on the efforts of:
decvax!microsof!uw-beave!jim (James Gosling at CMU)
Michael A. Thompson, Dalhousie University, Halifax, N.S., Canada
davidsen@sixhub (Bill Davidsen)
rhg@CPS.COM (Richard H. Gumpertz)
colas@avahi.inria.fr (Colas Nahaboo)
bill@netagw.com (Bill Aten)
dennis%nanovx@gatech.edu (Dennis Boylan)
wht%n4hgf@gatech.edu (Warren Tucker)
(other anonymous persons)
man pages:
jhd@irfu.se (Jan Dj{rv)