Annotation of 43BSDTahoe/new/spms/man/mann/pexec.n, revision 1.1.1.1

1.1       root        1: .TH PEXEC 1P "22 June 1983"
                      2: .UC 4
                      3: .SH NAME
                      4: pexec \- execute command over project hierarchy
                      5: .SH SYNOPSIS
                      6: .B pexec
                      7: [\fB\-?ciqx\fR] [\fB\-P \fRpdirname] [\fB\-T \fRtypexpr] [\fB\-X \fRerrstatus]
                      8: command
                      9: .SH DESCRIPTION
                     10: .I Pexec
                     11: descends recursively through a project hierarchy executing
                     12: .I command
                     13: in each project directory using either the
                     14: .I csh
                     15: or
                     16: .I sh
                     17: command interpreter. The directories at each level are traversed in
                     18: alphabetical order.
                     19: .PP
                     20: Before executing
                     21: .I command
                     22: in each directory, the current working project is reset to the
                     23: project in which the directory resides.
                     24: .PP
                     25: Unless the
                     26: .B \-i
                     27: option is used,
                     28: .I pexec
                     29: quits if a directory is inaccessible or
                     30: .I command
                     31: returns a non-zero exit status. This prevents propagation of errors through
                     32: a project.
                     33: .PP
                     34: Care should be taken when using the characters $ * [ | ( ) and \\ in
                     35: the
                     36: .I command
                     37: as they are also meaningful to the command shell. It is safest to enclose
                     38: the entire
                     39: .I command
                     40: in single quotes.
                     41: .PP
                     42: If a
                     43: .I typexpr
                     44: boolean type label expression is specified,
                     45: .I pexec
                     46: considers only those project directories with type labels that satisfy
                     47: that expression.
                     48: The order in which the project directories are traversed depends on the
                     49: relative priorities of the type labels attached to each directory.
                     50: Only those type labels that appear in
                     51: .I typexpr
                     52: are used. Directories with labels of the same priority are sorted
                     53: alphabetically. For example, if the project directories `include', `cmd1',
                     54: `cmd2', `lib1', and `lib2' have the following labels:
                     55: .PP
                     56: .nf
                     57: .ta 1.0i 2.5i
                     58:        include print.0, src, update.0, include
                     59:        cmd1    print.1, src, update.2, cmdsrc
                     60:        cmd2    print.1, src, update.2, cmdsrc
                     61:        lib1    print.2, src, update.1, libsrc
                     62:        lib2    print.2, src, update.1, libsrc
                     63: .DT
                     64: .fi
                     65: .PP
                     66: then type label expression `update' will force
                     67: .I pexec
                     68: to traverse the directories in the order `include', `lib1', `lib2', `cmd1',
                     69: `cmd2'.
                     70: .PP
                     71: Labels that are part of a negated expression are not used for sorting.
                     72: .SH OPTIONS
                     73: .IP \fB\-?\fR
                     74: Do not print ``Do you really want to quit? [yn](y):'' when interrupted in
                     75: foreground mode. Quit immediately.
                     76: .IP \fB\-c\fR
                     77: Instruct
                     78: .I csh
                     79: to read the `.cshrc' startup file.
                     80: .IP \fB\-i\fR
                     81: Ignore inaccessible directories and non-zero exit codes from
                     82: .I command.
                     83: .IP \fB\-q\fR
                     84: Quiet mode. Do not print `==>
                     85: .I directory
                     86: <==' titles.
                     87: .IP \fB\-x\fR
                     88: Trace, and print directory titles, but do not execute
                     89: .I command.
                     90: .IP "\fB\-P \fIpdirname\fR"
                     91: Specify a project other than the current working project. If
                     92: .I pdirname
                     93: is a project directory,
                     94: .I command
                     95: will be executed only in that directory.
                     96: .IP "\fB\-T \fItypexpr\fR"
                     97: Only execute
                     98: .I command
                     99: in project directories corresponding to boolean type label expression,
                    100: .I typexpr.
                    101: .IP "\fB\-X \fIerrstatus\fR"
                    102: If
                    103: .I pexec
                    104: fails, exit with status
                    105: .I errstatus.
                    106: Default error status is 1.
                    107: .SH EXAMPLES
                    108: To list all of the files in a project using
                    109: .I ls,
                    110: type:
                    111: .PP
                    112:        pexec ls
                    113: .PP
                    114: If the directories containing source code have been labeled previously as
                    115: type `src', then, to count the total number of lines of source code in a project,
                    116: type:
                    117: .PP
                    118:        pexec  \-Tsrc  \'cat *.h *.c\'  | wc \-l
                    119: .PP
                    120: where quotes surround the
                    121: .I cat
                    122: command to prevent file name expansion in the
                    123: current directory.
                    124: .SH "ENVIRONMENT VARIABLES"
                    125: .ta \w'PROJECT'u+.5i
                    126: PROJECT        Current working project root directory.
                    127: .br
                    128: SHELL  Name of command interpreter.
                    129: .DT
                    130: .SH "SEE ALSO"
                    131: csh(1), sh(1)
                    132: .SH DIAGNOSTICS
                    133: If
                    134: .I pexec
                    135: is interrupted while executing
                    136: .I command
                    137: in foreground,
                    138: the message, ``Do you really want to quit? [yn](y):'' will appear after
                    139: .I command
                    140: has completed.
                    141: .PP
                    142: If the error message, ``pexec: \fIlabel, label \fR...: conflicting type
                    143: label priorities'', occurs when performing an operation on a set of
                    144: project directories that have been selected according to a boolean
                    145: type label expression with more than one type label, this indicates
                    146: that the directories cannot be sorted satisfactorily because of a clash
                    147: in priorities. For example, if project directories
                    148: .I a
                    149: and
                    150: .I b,
                    151: selected by type label expression `print\|&\|update', have
                    152: the following type labels:
                    153: .PP
                    154:                directory a:    print.1, src, update.2
                    155: .br
                    156:                directory b:    print.2, src, update.1
                    157: .PP
                    158: the ordering will be
                    159: .I ab
                    160: if the directories are sorted according to the
                    161: `print' type label, and
                    162: .I ba
                    163: if they are sorted by the `update'
                    164: type label. The
                    165: .B \-D
                    166: debug option can be used to dump the list of project directories that match
                    167: .I typexpr,
                    168: together with their type labels.
                    169: .PP
                    170: .I Pexec
                    171: returns the exit status of
                    172: .I command.
                    173: Exit status 0 is normal. Non-zero exit status indicates an error.
                    174: .SH AUTHOR
                    175: Peter J. Nicklin
                    176: .SH BUGS
                    177: The PROJECT environment variable must be defined.
                    178: .PP
                    179: Since
                    180: .I pexec
                    181: uses a separate command shell to execute
                    182: .I command
                    183: in each directory, the characters $ * [ | ( ) and \\ will be meaningful
                    184: to that shell even if
                    185: .I command
                    186: is protected by single quotes.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.