PICK(1)

PICK(1)

pic2tpic Home Page User Commands Index pico


NAME
       pick - select messages by content

SYNOPSIS
       pick [+folder] [msgs] [-and ...] [-or ...] [-not ...]
            [-lbrace ... -rbrace] [--component pattern]
            [-cc pattern] [-date pattern] [-from pattern]
            [-search pattern] [-subject pattern] [-to pattern]
            [-after date] [-before date] [-datefield field]
            [-sequence name ...]  [-public] [-nopublic] [-zero]
            [-nozero] [-list] [-nolist] [-version] [-help]

     typical usage:
            scan `pick -from jones`
            pick -to holloway -sequence select
            show `pick -before friday`

DESCRIPTION
       Pick  searches  messages within a folder for the specified
       contents, and then identifies those messages.   Two  types
       of  search  primitives are available: pattern matching and
       date constraint operations.

       A modified grep(1) is used to perform the matching, so the
       full  regular expression (see ed(1)) facility is available
       within  `pattern'.   With  `-search',  `pattern'  is  used
       directly,  and  with  the  others,  the  grep pattern con-
       structed is:

            "component[ \t]*:.*pattern"

       This means that the pattern specified for a `-search' will
       be  found  everywhere in the message, including the header
       and the body, while the other  pattern  matching  requests
       are  limited  to  the  single  specified  component.   The
       expression

            `--component pattern'

       is a shorthand for specifying

            `-search "component[ \t]*:.*pattern" '

       It is used to pick a component which is not one of  "To:",
       "cc:",  "Date:",  "From:",  or  "Subject:".  An example is
       `pick --reply-to pooh'.

       Pattern matching is performed on a per-line basis.  Within
       the  header  of  the message, each component is treated as
       one long line, but in the body,  each  line  is  separate.
       Lower-case letters in the search pattern will match either
       lower or upper case in the message, while upper case  will
       match only upper case.

       Note  that  since the `-date' switch is a pattern matching
       operation (as described above), to find messages sent on a
       certain date the pattern string must match the text of the
       "Date:" field of the message.

       Independent of any pattern matching operations  requested,
       the  switches  `-after date' or `-before date' may also be
       used to introduce date/time contraints on all of the  mes-
       sages.  By default, the "Date:" field is consulted, but if
       another date  yielding  field  (such  as  "BB-Posted:"  or
       "Delivery-Date:")  should  be used, the `-datefield field'
       switch may be used.

       With `-before' and `-after', pick will actually parse  the
       date  fields  in  each of the messages specified in `msgs'
       and compare them to the date/time specified.  If  `-after'
       is  given,  then  only  those messages whose "Date:" field
       value is chronologically after the date specified will  be
       considered.  The `-before' switch specifies the complimen-
       tary action.

       Both  the  `-after'  and  `-before'  switches  take  legal
       822-style  date  specifications  as  arguments.  Pick will
       default certain missing fields so  that  the  entire  date
       need  not  be  specified.   These  fields are (in order of
       defaulting): timezone, time and timezone, date,  date  and
       timezone.   All  defaults are taken from the current date,
       time, and timezone.

       In addition to 822-style dates, pick will  also  recognize
       any  of  the  days of the week ("sunday", "monday", and so
       on), and the special dates "today", "yesterday" (24  hours
       ago), and "tomorrow" (24 hours from now).  All days of the
       week are judged to refer to  a  day  in  the  past  (e.g.,
       telling  pick "saturday" on a "tuesday" means "last satur-
       day" not "this saturday").

       Finally, in addition to these special specifications, pick
       will  also  honor a specification of the form "-dd", which
       means "dd days ago".

       Pick supports complex boolean operations on the  searching
       primitives   with   the   `-and',   `-or',   `-not',   and
       `-lbrace ... -rbrace' switches.  For example,

            pick -after yesterday -and
                 -lbrace -from freida -or -from fear -rbrace

       identifies messages recently sent by "frieda" or "fear".

       The matching primitives take precedence  over  the  `-not'
       switch,  which  in turn takes precedence over `-and' which
       in turn takes precedence  over  `-or'.   To  override  the
       default  precedence,  the `-lbrace' and `-rbrace' switches

       are provided, which act  just  like  opening  and  closing
       parentheses in logical expressions.

       If  no  search criteria are given, all the messages speci-
       fied on the command line are selected  (this  defaults  to
       "all").

       Once  the search has been performed, if the `-list' switch
       is given, the message numbers of the selected messages are
       written  to  the  standard  output  separated by newlines.
       This is extremely useful for quickly generating  arguments
       for  other  nmh programs by using the "backquoting" syntax
       of the shell.  For example, the command

            scan `pick +todo -after "31 Mar 83 0123 PST"`

       says to scan those messages in the indicated folder  which
       meet  the  appropriate criterion.  Note that since pick 's
       context changes are written out prior to  scan 's  invoca-
       tion,  you  need  not  give the folder argument to scan as
       well.

       Regardless of the operation of  the  `-list'  switch,  the
       `-sequence  name'  switch  may  be  given  once  for  each
       sequence the user wishes to  define.   For  each  sequence
       named, that sequence will be defined to mean exactly those
       messages selected by pick.  For example,

            pick -from frated -seq fred

       defines a new message  sequence  for  the  current  folder
       called  "fred"  which contains exactly those messages that
       were selected.

       Note  that  whenever  pick  processes  a  `-sequence name'
       switch, it sets `-nolist'.

       By  default, pick will zero the sequence before adding it.
       This action can be disabled  with  the  `-nozero'  switch,
       which  means  that  the  messages selected by pick will be
       added to the sequence, if it already exists, and any  mes-
       sages already a part of that sequence will remain so.

       The `-public' and `-nopublic' switches are used by pick in
       the same way mark uses them.

FILES
       $HOME/.mh_profile                    The user profile

PROFILE COMPONENTS
       Path:                To determine the user's nmh directory
       Current-Folder:      To find the default current folder

SEE ALSO
       mark(1) 

DEFAULTS
       `+folder' defaults to the current folder
       `msgs' defaults to all
       `-datefield date'
       `-zero'
       `-list' is the default if no `-sequence', `-nolist' otherwise

CONTEXT
       If a folder is given, it will become the current folder.

HISTORY
       In previous versions of MH, the pick command  would  show,
       scan,  or  refile  the selected messages.  This was rather
       "inverted logic" from the UNIX point of view, so pick  was
       changed  to  define  sequences and output those sequences.
       Hence, pick can be used to generate the arguments for  all
       other MH commands, instead of giving pick endless switches
       for invoking those commands itself.

       Also, previous versions of pick balked if you didn't spec-
       ify  a  search string or a date/time constraint.  The cur-
       rent version does not, and merely matches the messages you
       specify.  This lets you type something like:

            show `pick last:20 -seq fear`

       instead of typing

            mark -add -nozero -seq fear last:20
            show fear

       Finally,  timezones  used  to  be  ignored  when comparing
       dates: they aren't any more.

HELPFUL HINTS
       Use "pick sequence -list" to enumerate the messages  in  a
       sequence (such as for use by a shell script).

BUGS
       The  argument  to the `-after' and `-before' switches must
       be interpreted as a single token by the shell that invokes
       pick.   Therefore,  one must usually place the argument to
       this switch inside double-quotes.  Furthermore, any  occu-
       rance  of `-datefield' must occur prior to the `-after' or
       `-before' switch it applies to.

       If pick is used in a back-quoted operation, such as

            scan `pick -from jones`

       and pick selects no messages (e.g., no messages  are  from

       "jones"),  then the shell will still run the outer command
       (e.g., "scan").  Since no messages were matched, pick pro-
       duced  no output, and the argument given to the outer com-
       mand as a result of backquoting pick  is  empty.   In  the
       case of nmh programs, the outer command now acts as if the
       default `msg' or `msgs' should be used (e.g., "all" in the
       case  of  scan ).  To prevent this unexpected behavior, if
       `-list' was given, and if its standard  output  is  not  a
       tty, then pick outputs the illegal message number "0" when
       it fails.  This lets the outer command fail gracefully  as
       well.

       The  pattern  syntax "[l-r]" is not supported; each letter
       to be matched must be included within the square brackets.

pic2tpic Home Page User Commands Index pico