Provided by: nmh_1.7.1~RC3-1build1_amd64 bug

NAME

       pick - search nmh messages

SYNOPSIS


       pick [-help] [-version] [+folder] [msgs] [-reverse ...]  [-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
            ...]  [-nosequence] [-public | -nopublic] [-zero | -nozero] [-list | -nolist] [-debug]

       typical usage:

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

DESCRIPTION

       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 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 complementary action.

       Both the -after and -before switches take legal RFC 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  RFC  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”.

       Use the -reverse switch to make pick find matching messages in reverse order, working  from  the  highest
       message number down to the lowest.  This can be useful in searching for recent messages in large folders,
       for example,

            pick -reverse -from frated | xargs -n1 scan

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

       The  -nosequence  switch  will  disable  all  previously named sequences, allowing those established by a
       profile component to be overridden.

       By default, pick will zero a 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.

       The -debug switch causes pick to output a representation of the search pattern.

   Output when no messages are matched
       If pick is used in a backquoted 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.

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

       Any occurrence of -datefield must occur prior to the -after or -before switch it applies to.

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

nmh-1.7.1-RC3                                      2016-03-12                                          PICK(1mh)