shar - create a shell archive


   shar [-flags] [-flag [value]] [--option-name[[=| ]value]] [<file>...]

   If  no  files  are  specified,  the  list  of  input files is read from
   standard input.  Standard input must not be a terminal.


   shar creates "shell archives" (or shar files) which are in text  format
   and  can  be  emailed.   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 fairly simple (--vanilla-operation) or
   essentially a mailable tar archive.

   Options may be  specified  in  any  order  until  a  file  argument  is
   recognized.   If  the  --intermix-type  option has been specified, more
   compression and encoding options will be recognized  between  the  file

   Though this program supports uuencode-d files, they are deprecated.  If
   you are emailing files, please consider mime-encoded files.  If you  do
   uuencode, base64 is the preferred encoding method.


   Specifying compression
   -p, --intermix-type
          specify  compression  for  input  files.   This  option must not
          appear  in  combination  with  any  of  the  following  options:

          Allow  positional parameter options.  The compression method and
          encoding method options  may  be  intermixed  with  file  names.
          Files  named  after  these  options  will  be  processed  in the
          specified way.

   -C program, --compactor=program
          specify  compaction  (compression)  program.   This  option  may
          appear  an  unlimited  number  of  times.   This option must not
          appear  in  combination  with  any  of  the  following  options:

          The gzip, bzip2 and compress compactor commands may be specified
          by the program name as the  option  name,  e.g.  --gzip.   Those
          options,  however,  are  being deprecated.  There is also the xz
          compactor now.  Specify xz with -C xz or --compactor=xz.

                  Specifying  the  compactor  "none"  will  disable   file
          compression.   Compressed  files  are  never  processed as plain
          text.  They are always uuencoded and  the  recipient  must  have
          uudecode to unpack them.

          Specifying the compactor compress is deprecated.

   -g level, --level-of-compression=level
          pass LEVEL for compression.  This option takes an integer number
          as its argument.  The value of level is constrained to being:
              in the range  1 through 9
          The default level for this option is:

          Some compression programs allow for a level of compression.  The
          default is 9, but this option allows you to specify something
          else.  This value is used by gzip, bzip2 and xz, but not

   -j, --bzip2
          bzip2 and uuencode files.  This option may appear an unlimited
          number of times.

          bzip2 compress and uuencode all files prior to packing.  The
          recipient must have uudecode bzip2 in order to unpack.


   -z, --gzip
          gzip and uuencode files.  This option may appear an unlimited
          number of times.

          gzip compress and uuencode all files prior to packing.  The
          recipient must have uudecode and gzip in order to unpack.


   -Z, --compress
          compress and uuencode files.  This option may appear an
          unlimited number of times.

          compress and uuencode all files prior to packing.  The recipient
          must have uudecode and compress in order to unpack.


          This is an alias for the --level-of-compression option.


   -b bits, --bits-per-code=bits
          pass bits (default 12) to compress.  The default bits for this
          option is:

          This is the compression factor used by the compress program.


   Specifying file encoding methodology
   Files may be stored in the shar either as plain text or uuencoded.  By
   default, the program selects which by examining the file.  You may
   force the selection for all files.  In intermixed option/file mode,
   this setting may be changed during processing.

   -M, --mixed-uuencode
          decide uuencoding for each file.  This option is a member of the
          mixed-uuencode class of options.

          Automatically determine if the files are text or binary and
          archive correctly.  Files found to be binary are uuencoded prior
          to packing.  This is the default behavior for shar.

          For a file to be considered a text file instead of a binary
          file, all the following should be true:

          The file does not contain any ASCII control character besides BS
          (backspace), HT (horizontal tab), LF (new line) or FF (form

          The file contains no character with its eighth-bit set.

          The file contains no line beginning with the five letters "from
          ", capitalized or not.  (Mail handling programs will often
          gratuitously insert a > character before it.)

          The file is either empty or ends with a LF (newline) byte.

          No line in the file contains more than 200 characters.  For
          counting purpose, lines are separated by a LF (newline).

   -B, --uuencode
          treat all files as binary.  This option is a member of the
          mixed-uuencode class of options.

          Use uuencode prior to packing all files.  This increases the
          size of the archive.  The recipient must have uudecode in order
          to unpack.  Compressed files are always encoded.

   -T, --text-files
          treat all files as text.  This option is a member of the mixed-
          uuencode class of options.

          If you have files with non-ascii bytes or text that some mail
          handling programs do not like, you may find difficulties.
          However, if you are using FTP or SSH/SCP, the non-conforming
          text files should be okay.

   Specifying file selection and output modes
   -o prefix, --output-prefix=prefix
          print output to file PREFIX.nn.

          Save the archive to files prefix.01 thru prefix.nn instead of
          sending all output to standard out.  Must be specified when the
          --whole-size-limit or --split-size-limit options are specified.

          When prefix contains a % character, prefix is then interpreted
          as a sprintf format, which should be able to display a single
          decimal number.  When prefix does not contain such a %
          character, the string .%02d is internally appended.

   -l size, --whole-size-limit=size
          split archive, not files, to size.  This option is a member of
          the whole-size-limit class of options.  This option must appear
          in combination with the following options: output-prefix.  This
          option takes an integer number as its argument.  The value of
          size is constrained to being:
              in the range  8 through 1023, or
              in the range  8192 through 4194304

          Limit the output file size to size bytes, but don't split input
          files.  If size is less than 1024, then it will be multiplied by
          1024.  The value may also be specified with a k, K, m or M
          suffix.  The number is then multiplied by 1000, 1024, 1000000,
          or 1048576, respectively.  4M (4194304) is the maximum allowed.

          Unlike the split-size-limit option, this allows the recipient of
          the shar files to unpack them in any order.

   -L size, --split-size-limit=size
          split archive or files to size.  This option is a member of the
          whole-size-limit class of options.  This option must appear in
          combination with the following options: output-prefix.  This
          option takes an integer number as its argument.  The value of
          size is constrained to being:
              in the range  8 through 1023, or
              in the range  8192 through 4194304

          Limit output file size to size bytes, splitting files if
          necessary.  The allowed values are specified as with the
          --whole-size-limit option.

          The archive parts created with this option must be unpacked in
          the correct order.  If the recipient of the shell archives wants
          to put all of them in a single email folder (file), they will
          have to be saved in the correct order for unshar to unpack them
          all at once (using one of the split archive options).  see:
          unshar Invocation.

   -I file, --input-file-list=file
          read file list from a file.

          This option causes file to be reopened as standard input.  If no
          files are found on the input line, then standard input is read
          for input file names.  Use of this option will prohibit input
          files from being listed on the command line.

          Input must be in a form similar to that generated by find, one
          filename per line.  This switch is especially useful when the
          command line will not hold the list of files to be archived.

          If the --intermix-type option is specified on the command line,
          then the compression options may be included in the standard
          input on lines by themselves and no file name may begin with a

          For example:
              { echo --compact xz
                 find . -type f -print | sort
              } | shar -S -p -L50K -o /somewhere/big

   -S, --stdin-file-list
          read file list from standard input.

          This option is actually a no-op.  It is a wrapper for --input-


   Controlling the shar headers
   -n name, --archive-name=name
          use name to document the archive.

          Name of archive to be included in the subject header of the shar
          files.  See the --net-headers option.

   -s who@where, --submitter=who@where
          override the submitter name.

          shar will normally determine the submitter name by querying the
          system.  Use this option if it is being done on behalf of

   -a, --net-headers
          output Submitted-by: & Archive-name: headers.  This option must
          appear in combination with the following options: archive-name.

          Adds specialized email headers:
              Submitted-by: who@@where
              Archive-name: name/part##
          The who@@where is normally derived, but can be specified with
          the --submitter option.  The name must be provided with the
          --archive-name option.  If the archive name includes a slash (/)
          character, then the /part## is omitted.  Thus -n xyzzy produces:

          while -n xyzzy/patch produces:

          and -n xyzzy/patch01. produces:

   -c, --cut-mark
          start the shar with a cut line.

          A line saying 'Cut here' is placed at the start of each output

   -t, --translate
          translate messages in the script.

          Translate messages in the script.  If you have set the LANG
          environment variable, messages printed by shar will be in the
          specified language.  The produced script will still be emitted
          using messages in the lingua franca of the computer world:
          English.  This option will cause the script messages to appear
          in the languages specified by the LANG environment variable set
          when the script is produced.

   Protecting against transmission issues
          do not use `wc -c' to check size.

          Do NOT check each file with 'wc -c' after unpack.  The default
          is to check.

   -D, --no-md5-digest
          do not use md5sum digest to verify.

          Do not use md5sum digest to verify the unpacked files.  The
          default is to check.

   -F, --force-prefix
          apply the prefix character on every line.

          Forces the prefix character to be prepended to every line, even
          if not required.  This option may slightly increase the size of
          the archive, especially if --uuencode or a compression option is

   -d delim, --here-delimiter=delim
          use delim to delimit the files.  The default delim for this
          option is:

          Use DELIM to delimit the files in the shar instead of SHAR_EOF.
          This is for those who want to personalize their shar files.  The
          delimiter will always be prefixed and suffixed with underscores.

   Producing different kinds of shars
   -V, --vanilla-operation
          produce very simple shars.

          This option produces vanilla shars which rely only upon the
          existence of echo, test and sed in the unpacking environment.

          It changes the default behavior from mixed mode (--mixed-
          uuencode) to text mode (--text-files).  Warnings are produced if
          options are specified that will require decompression or
          decoding in the unpacking environment.

   -P, --no-piping
          use temporary files between programs.

          In the shar file, use a temporary file to hold file contents
          between unpacking stages instead of using pipes.  This option is
          mandatory when you know the unpacking will happen on systems
          that do not support pipes.

   -x, --no-check-existing
          blindly overwrite existing files.

          Create the archive so that when processed it will overwrite
          existing files without checking first.  If neither this option
          nor the --query-user option is specified, the unpack will not
          overwrite pre-existing files.  In all cases, however, if --cut-
          mark is passed as a parameter to the script when unpacking, then
          existing files will be overwritten unconditionally.

              sh shar-archive-file -c

   -X, --query-user
          ask user before overwriting files.  This option must not appear
          in combination with any of the following options: vanilla-

          When unpacking, interactively ask the user if files should be
          overwritten.  Do not use for shars submitted to the net.

          Use of this option produces shars which will cause problems with
          some unshar-style procedures, particularly when used together
          with vanilla mode (--vanilla-operation).  Use this feature
          mainly for archives to be passed among agreeable parties.
          Certainly, -X is not for shell archives which are to be
          submitted to Usenet or other public networks.

          The problem is that unshar programs or procedures often feed
          /bin/sh from its standard input, thus putting /bin/sh and the
          shell archive script in competition for input lines.  As an
          attempt to alleviate this problem, shar will try to detect if
          /dev/tty exists at the receiving site and will use it to read
          user replies.  But this does not work in all cases, it may
          happen that the receiving user will have to avoid using unshar
          programs or procedures, and call /bin/sh directly.  In vanilla
          mode, using /dev/tty is not even attempted.

   -m, --no-timestamp
          do not restore modification times.

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

          When file modification times are not preserved, project build
          programs like "make" will see built files older than the files
          they get built from.  This is why, when this option is not used,
          a special effort is made to restore timestamps.

   -Q, --quiet-unshar
          avoid verbose messages at unshar time.

          Verbose OFF.  Disables the inclusion of comments to be output
          when the archive is unpacked.

   -f, --basename
          restore in one directory, despite hierarchy.

          Restore by the base file name 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 this
          option is specified or not.

   Internationalization options
          do not internationalize.

          Do not produce internationalized shell archives, use default
          English messages.  By default, shar produces archives that will
          try to output messages in the unpackers preferred language (as
          determined by the LANG/LC_MESSAGES environmental variables) when
          they are unpacked.  If no message file for the unpackers
          language is found at unpack time, messages will be in English.

          print directory with shar messages.

          Prints the directory shar looks in to find messages files for
          different languages, then immediately exits.

   User feedback/entertainment
   -q, --quiet
          do not output verbose messages.

          omit progress messages.

          This is an alias for the --quiet option.

   -h, --help
          Display usage information and exit.

   -!, --more-help
          Pass the extended usage information through a pager.

   -R [cfgfile], --save-opts [=cfgfile]
          Save the option state to cfgfile.  The default is the last
          configuration file listed in the OPTION PRESETS section, below.
          The command will exit after updating the config file.

   -r cfgfile, --load-opts=cfgfile, --no-load-opts
          Load options from cfgfile.  The no-load-opts form will disable
          the loading of earlier config/rc/ini files.  --no-load-opts is
          handled early, out of order.

   -v [{v|c|n --version [{v|c|n}]}]
          Output version of program and exit.  The default mode is `v', a
          simple version.  The `c' mode will print copyright information
          and `n' will print the full copyright notice.


   Any option that is not marked as not presettable may be preset by
   loading values from configuration ("RC" or ".INI") file(s).  The file
   "$HOME/.sharrc" will be used, if present.


   No attempt is made to restore the protection and modification dates for
   directories, even if this is done by default for files.  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, to
   conserve memory.  Therefore, do not change the directory contents 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 it.

   Use of the compression and encoding options will slow the archive
   process, perhaps considerably.

   Use of the --query-user produces shars which will cause problems with
   many unshar procedures.  Use this feature only for archives to be
   passed among agreeable parties.  Certainly, query-user is NOT for shell
   archives which are to be distributed across the net.  The use of
   compression in net shars will cause you to be flamed off the earth.
   Not using the --no-timestamp or --force-prefix options may also get you
   occasional complaints.  Put these options into your ~/.sharrc file.


   See OPTION PRESETS for configuration files.


   The first shows how to make a shell archive out of all C program
   sources.  The second produces a shell archive with all .c and .h files,
   which unpacks silently.  The third gives a shell archive of all
   uuencoded .arc files, into numbered files starting from  The
   last example gives a shell archive which will use only the file names
   at unpack time.

       shar *.c > cprog.shar
       shar -Q *.[ch] > cprog.shar
       shar -B -l28 *.arc
       shar -f /lcl/src/u*.c >


   One of the following exit values will be returned:

          Successful program execution.

          The command options were misconfigured.

          a specified input could not be found

          open/close of specified directory failed

          Resource limit/miscelleaneous shar command failure

   63  (EXIT_BUG)
          There is a shar command bug.  Please report it.

   66  (EX_NOINPUT)
          A specified configuration file could not be loaded.

   70  (EX_SOFTWARE)
          libopts had an internal operational error.  Please report it to
  Thank you.




   The shar and unshar programs is the collective work of many authors.
   Many people contributed by reporting problems, suggesting various
   improvements or submitting actual code.  A list of these people is in
   the THANKS file in the sharutils distribution.


   Copyright (C) 1994-2015 Free Software Foundation, Inc. all rights
   reserved.  This program is released under the terms of the GNU General
   Public License, version 3 or later.


   Please put sharutils in the subject line for emailed bug reports.  It
   helps to spot the message.

   Please send bug reports to:


   This manual page was AutoGen-erated from the shar option definitions.

More Linux Commands

vserver(2) - unimplemented system calls - Linux manual page
These system calls are not implemented in the Linux kernel. RETURN VALUE These system calls always return -1 and set errno to ENOSYS. NOTES Note that ftime(3),

wcscmp(3) - compare two wide-character strings (Man Page)...
The wcscmp() function is the wide-character equivalent of the strcmp(3) function. It compares the wide-character string pointed to by s1 and the wide-character

mremap(2) - remap a virtual memory address - Linux man page
mremap() expands (or shrinks) an existing memory mapping, potentially moving it at the same time (controlled by the flags argument and the available virtual add

Tcl_WaitPid(3) - manage child processes in background.......
Tcl_DetachPids and Tcl_ReapDetachedProcs provide a mechanism for managing subprocesses that are running in background. These procedures are needed because the p

gnutls_pkcs11_token_get_mechanism(3) - API function.........
This function will return the names of the supported mechanisms by the token. It should be called with an increasing index until it return GNUTLS_E_REQUESTED_DA

glColorSubTable(3gl) - respecify a portion of a color table
glColorSubTable is used to respecify a contiguous portion of a color table previously defined using glColorTable. The pixels referenced by data replace the port

sasl_global_listmech(3) - Retrieve a list of the supported S
sasl_global_listmech() returns a null-terminated array of strings that lists all mechanisms that are loaded by either the client or server side of the library.

paplay(1) - Play back audio files on a PulseAudio sound serv
paplay is a simple tool for playing back audio files on a PulseAudio sound server. It understands all audio file formats supported by libsndfile. OPTIONS -h | -

glGetMapdv(3gl) - return evaluator parameters (Man Page)....
glMap1 and glMap2 define evaluators. glGetMap returns evaluator parameters. target chooses a map, query selects a specific parameter, and v points to storage wh

XkbGetNames(3) - Obtain symbolic names from the server......
XkbGetNames retrieves symbolic names for the components of the keyboard extension from the X server. The which parameter specifies the name components to be upd

perlos2(1) - Perl under OS/2, DOS, Win0.3*, Win0.95 and WinN
Target The target is to make OS/2 one of the best supported platform for using/building/developing Perl and Perl applications, as well as make Perl the best lan

vigr(8) - edit the password, group or shadow file (ManPage)
The vipw and vigr commands edits the files /etc/passwd and /etc/group, respectively. With the -s flag, they will edit the shadow versions of those files, /etc/s

We can't live, work or learn in freedom unless the software we use is free.