Provided by: nmh_1.3-1build1_i386 bug


       pick - search for messages by content


       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`


       Pick searches within a folder for messages with 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 constructed 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
       constraints  on  all of the messages.  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

       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  complimentary

       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

       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 saturday” 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

            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  specified  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 invocation, you need not give the folder
       argument to scan as well.

       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.

       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 messages 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.


       $HOME/.mh_profile          The user profile


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




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


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


       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 specify  a  search
       string  or  a  date/time constraint.  The current version does not, and
       merely matches the messages you specify.  This lets you type  something

            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.


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


       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 occurrence 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 produced no output, and the argument given
       to the outer command 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.