NAME:awk awk - pattern scanning and processing language SYNOPSIS /usr/bin/awk [ -f progfile ] [ -Fc ] [ 'prog' ] [ parameters ] [ filename...] /usr/xpg4/bin/awk [ -F ERE ] [ -v assignment ... ] 'program' | -f progfile ... [ argument ... ] DESCRIPTION The /usr/xpg4/bin/awk utility is described on the nawk(1) manual page. The /usr/bin/awk utility scans each input filename for lines that match any of a set of patterns specified in prog. The prog string must be enclosed in single quotes (') to protect it from the shell. For each pattern in prog there may be an associated action performed when a line of a filename matches the pattern. The set of pattern-action statements may appear literally as prog or in a file specified with the -f progfile option. Input files are read in order; if there are no files, the standard input is read. The file name '-' means the standard input. OPTIONS -f progfile awk uses the set of patterns it reads from progfile. -Fc Use the character c as the field separator (FS) character. See the discussion of FS below. USAGE Input Lines Each input line is matched against the pattern portion of every pattern-action statement; the associated action is performed for each matched pattern. Any filename of the form var=value is treated as an assignment, not a filename, and is executed at the time it would have been opened if it were a filename. Variables assigned in this manner are not available inside a BEGIN rule, and are assigned after previ- ously specified files have been read. An input line is normally made up of fields separated by white spaces. (This default can be changed by using the FS built-in variable or the -Fc option.) The default is to ignore leading blanks and to separate fields by blanks and/or tab characters. However, if FS is assigned a value that does not include any of the white spaces, then leading blanks are not ignored. The fields are denoted $1, $2, ...; $0 refers to the entire line. Pattern-action Statements A pattern-action statement has the form: pattern { action } Either pattern or action may be omitted. If there is no action, the matching line is printed. If there is no pat- tern, the action is performed on every input line. Pattern-action statements are separated by newlines or semi- colons. Patterns are arbitrary Boolean combinations ( !, ||, &&, and parentheses) of relational expressions and regular expres- sions. A relational expression is one of the following: expression relop expression expression matchop regular_expression where a relop is any of the six relational operators in C, and a matchop is either ~ (contains) or !~ (does not con- tain). An expression is an arithmetic expression, a rela- tional expression, the special expression var in array or a Boolean combination of these. Regular expressions are as in egrep(1). In patterns they must be surrounded by slashes. Isolated regular expressions in a pattern apply to the entire line. Regular expressions may also occur in relational expressions. A pattern may consist of two patterns separated by a comma; in this case, the action is performed for all lines between the occurrence of the first pattern to the occurrence of the second pat- tern. The special patterns BEGIN and END may be used to capture control before the first input line has been read and after the last input line has been read respectively. These key- words do not combine with any other patterns. Built-in Variables Built-in variables include: FILENAME name of the current input file FS input field separator regular expression (default blank and tab) NF number of fields in the current record NR ordinal number of the current record OFMT output format for numbers (default %.6g) OFS output field separator (default blank) ORS output record separator (default new- line) RS input record separator (default new- line) An action is a sequence of statements. A statement may be one of the following: if ( expression ) statement [ else statement ] while ( expression ) statement do statement while ( expression ) for ( expression ; expression ; expression ) statement for ( var in array ) statement break continue { [ statement ] ... } expression # commonly variable = expression print [ expression-list ] [ >expression ] printf format [ , expression-list ] [ >expression ] next # skip remaining patterns on this input line exit [expr] # skip the rest of the input; exit status is expr Statements are terminated by semicolons, newlines, or right braces. An empty expression-list stands for the whole input line. Expressions take on string or numeric values as appropriate, and are built using the operators +, -, *, /, %, ^ and concatenation (indicated by a blank). The opera- tors ++, --, +=, -=, *=, /=, %=, ^=, >, >=, <, <=, ==, !=, and ?: are also available in expressions. Variables may be scalars, array elements (denoted x[i]), or fields. Vari- ables are initialized to the null string or zero. Array subscripts may be any string, not necessarily numeric; this allows for a form of associative memory. String constants are quoted (""), with the usual C escapes recognized within. The print statement prints its arguments on the standard output, or on a file if >expression is present, or on a pipe if '|cmd' is present. The output resulted from the print statement is terminated by the output record separator with each argument separated by the current output field separa- tor. The printf statement formats its expression list according to the format (see printf(3S)). Built-in Functions The arithmetic functions are as follows: cos(x) Return cosine of x, where x is in radians. sin(x) Return sine of x, where x is in radians. exp(x) Return the exponential function of x. log(x) Return the natural logarithm of x. sqrt(x) Return the square root of x. int(x) Truncate its argument to an integer. It will be truncated toward 0 when x > 0. The string functions are as follows: index(s, t) Return the position in string s where string t first occurs, or 0 if it does not occur at all. int(s) truncates s to an integer value. If s is not specified, $0 is used. length(s) Return the length of its argument taken as a string, or of the whole line if there is no argument. match(s, re) Return the position in string s where the regular expression re occurs, or 0 if it does not occur at all. split(s, a, fs) Split the string s into array elements a[1], a[2], a[n], and returns n. The separation is done with the regular expression fs or with the field separa- tor FS if fs is not given. sprintf(fmt, expr, expr,...) Format the expressions according to the printf(3S) format given by fmt and returns the resulting string. substr(s, m, n) returns the n-character substring of s that begins at position m. The input/output function is as follows: getline Set $0 to the next input record from the current input file. getline returns 1 for successful input, 0 for end of file, and -1 for an error. Large File Behavior See largefile(5) for the description of the behavior of awk when encountering files greater than or equal to 2 Gbyte (2**31 bytes). EXAMPLES Print lines longer than 72 characters: length > 72 Print first two fields in opposite order: { print $2, $1 } Same, with input fields separated by comma and/or blanks and tabs: BEGIN { FS = ",[ \t]*|[ \t]+" } { print $2, $1 } Add up first column, print sum and average: { s += $1 } END { print "sum is", s, " average is", s/NR } Print fields in reverse order: { for (i = NF; i > 0; --i) print $i } Print all lines between start/stop pairs: /start/, /stop/ Print all lines whose first field is different from previous one: $1 != prev { print; prev = $1 } Print a file, filling in page numbers starting at 5: /Page/ { $2 = n++; } { print } Assuming this program is in a file named prog, the following command line prints the file input numbering its pages starting at 5: awk -f prog n=5 input. ENVIRONMENT See environ(5) for descriptions of the following environment variables that affect the execution of awk: LC_CTYPE and LC_MESSAGES. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: /usr/bin/awk __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWesu | | CSI | Enabled | |_______________|_________________| /usr/xpg4/bin/awk __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWxcu4 | | CSI | Enabled | |_______________|_________________| SEE ALSO egrep(1), grep(1), nawk(1), sed(1), printf(3S), attri- butes(5), environ(5), largefile(5), xpg4(5) NOTES Input white space is not preserved on output if fields are involved. There are no explicit conversions between numbers and strings. To force an expression to be treated as a number add 0 to it; to force it to be treated as a string concaten- ate the null string ("") to it. NAME:bc bc - arbitrary precision arithmetic language SYNOPSIS bc [ -c ] [ -l ] [ file...] DESCRIPTION The bc utility implements an arbitrary precision calculator. It takes input from any files given, then reads from the standard input. If the standard input and standard output to bc are attached to a terminal, the invocation of bc is interactive , causing behavioural constraints described in the following sections. bc processes a language that resem- bles C and is a preprocessor for the desk calculator program dc, which it invokes automatically unless the -c option is specified. In this case the dc input is sent to the stan- dard output instead. USAGE The syntax for bc programs is as follows: L means a letter a-z, E means an expression: a (mathematical or logical) value, an operand that takes a value, or a combina- tion of operands and operators that evaluates to a value, S means a statement. Comments Enclosed in /* and */. Names (Operands) Simple variables: L. Array elements: L [ E ] (up to BC_DIM_MAX dimen- sions). The words ibase, obase (limited to BC_BASE_MAX), and scale (limited to BC_SCALE_MAX). Other Operands Arbitrarily long numbers with optional sign and decimal point. Strings of fewer than BC_STRING_MAX characters, between double quotes ("). ( E ) sqrt ( E ) Square root length ( E ) Number of significant decimal digits. scale ( E ) Number of digits right of decimal point. L ( E , ... , E ) Operators + - * / % ^ (% is remainder; ^ is power) ++ -- (prefix and postfix; apply to names) == <= >= != < > = =+ =- =* =/ =% =^ Statements E { S ;... ; S } if ( E ) S while ( E ) S for ( E ; E ; E ) S null statement break quit .string Function Definitions define L ( L ,..., L ) { auto L ,..., L S ;... S return ( E ) } Functions in -l Math Library s(x) sine c(x) cosine e(x) exponential l(x) log a(x) arctangent j(n,x) Bessel function All function arguments are passed by value. The value of a statement that is an expression is printed unless the main operator is an assignment. Either semi- colons or new-lines may separate statements. Assignment to scale influences the number of digits to be retained on arithmetic operations in the manner of dc. Assignments to ibase or obase set the input and output number radix respec- tively. The same letter may be used as an array, a function, and a simple variable simultaneously. All variables are global to the program. auto variables are stacked during function calls. When using arrays as function arguments or defining them as automatic variables, empty square brackets must fol- low the array name. OPTIONS -c Compile only. The output is dc commands that are sent to the standard output. -l Define the math functions and initialize scale to 20, instead of the default zero. OPERANDS The following operands are supported: file A pathname of a text file containing bc program statements. After all cases of file have been read, bc will read the standard input. EXAMPLES In the shell, the following assigns an approximation of the first ten digits of -n to the variable x : x=$(printf "%s\n" 'scale = 10; 104348/33215' | bc) Defines a function to compute an approximate value of the exponential function: scale = 20 define e(x){ auto a, b, c, i, s a = 1 b = 1 s = 1 for(i=1; 1==1; i++){ a = a*x b = b*i c = a/b if(c == 0) return(s) s = s+c } } Prints approximate values of the exponential function of the first ten integers: for(i=1; i<=10; i++) e(i) or for (i = 1; i <= 10; ++i) { e(i) } ENVIRONMENT See environ(5) for descriptions of the following environment variables that affect the execution of bc: LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS The following exit values are returned: 0 All input files were processed successfully. unspecified An error occurred. FILES /usr/lib/lib.b mathematical library /usr/include/limits.h to define BC_ parameters ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWesu | |_______________|_________________| SEE ALSO dc(1), awk(1), attributes(5) NOTES The bc command does not recognize the logical operators && and ||. The for statement must have all three expressions (E's). NAME:chgrp chgrp - change file group ownership SYNOPSIS chgrp [ -fhR ] group file DESCRIPTION The chgrp utility will set the group ID of the file named by each file operand to the group ID specified by the group operand. For each file operand, it will perform actions equivalent to the chown(2) function, called with the following arguments: o The file operand will be used as the path argument. o The user ID of the file will be used as the owner argu- ment. o The specified group ID will be used as the group argu- ment. Unless chgrp is invoked by a process with appropriate privileges, the set-user-ID and set-group-ID bits of a regu- lar file will be cleared upon successful completion; the set-user-ID and set-group-ID bits of other file types may be cleared. The operating system has a configuration option {_POSIX_CHOWN_RESTRICTED}, to restrict ownership changes. When this option is in effect, the owner of the file may change the group of the file only to a group to which the owner belongs. Only the super-user can arbitrarily change owner IDs, whether or not this option is in effect. To set this configuration option, include the following line in /etc/system: set rstchown = 1 To disable this option, include the following line in /etc/system: set rstchown = 0 {_POSIX_CHOWN_RESTRICTED} is enabled by default. See sys- tem(4) and fpathconf(2). OPTIONS -f Force. Do not report errors. -h If the file is a symbolic link, change the group of the symbolic link. Without this option, the group of the file referenced by the symbolic link is changed. -R Recursive. chgrp descends through the directory, and any subdirectories, setting the specified group ID as it proceeds. When a symbolic link is encountered, the group of the target file is changed (unless the -h option is specified), but no recursion takes place. OPERANDS The following operands are supported: group A group name from the group database or a numeric group ID. Either specifies a group ID to be given to each file named by one of the file operands. If a numeric group operand exists in the group database as a group name, the group ID number associated with that group name is used as the group ID. file A path name of a file whose group ID is to be modi- fied. USAGE See largefile(5) for the description of the behavior of chgrp when encountering files greater than or equal to 2 Gbyte (2**31 bytes). ENVIRONMENT See environ(5) for descriptions of the following environment variables that affect the execution of chgrp: LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS The following exit values are returned: 0 The utility executed successfully and all requested changes were made. >0 An error occurred. FILES /etc/group group file ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: ______________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE | |_______________|_____________________| | Availability | SUNWcsu | | CSI | Enabled (see NOTES)| |_______________|_____________________| SEE ALSO chmod(1), chown(1), id(1M), chown(2), fpathconf(2), group(4), passwd(4), system(4), attributes(5), environ(5), largefile(5) NOTES chgrp is CSI-enabled except for the group name. NAME:chmod chmod - change the permissions mode of a file SYNOPSIS chmod [ -fR ] file... chmod [ -fR ] file... DESCRIPTION chmod changes or assigns the mode of a file. The mode of a file specifies its permissions and other attributes. The mode may be absolute or symbolic. Absolute mode An absolute mode is specified using octal numbers: chmod nnnn file ... where: n a number from 0 to 7. An absolute mode is constructed from the OR of any of the follow- ing modes: 4000 Set user ID on execution. 20#0 Set group ID on execution if # is 7, 5, 3, or 1. Enable mandatory locking if # is 6, 4, 2, or 0. For directories, files are created with BSD semantics for propagation of the group ID. With this option, files and subdirectories created in the directory inherit the group ID of the directory, rather than of the current process. It may be cleared only by using symbolic mode. 1000 Turn on sticky bit. See chmod(2). 0400 Allow read by owner. 0200 Allow write by owner. 0100 Allow execute (search in directory) by owner. 0700 Allow read, write, and execute (search) by owner. 0040 Allow read by group. 0020 Allow write by group. 0010 Allow execute (search in directory) by group. 0070 Allow read, write, and execute (search) by group. 0004 Allow read by others. 0002 Allow write by others. 0001 Allow execute (search in directory) by others. 0007 Allow read, write, and execute (search) by others. Note that the setgid bit cannot be set (or cleared) in abso- lute mode; it must be set (or cleared) in symbolic mode using g+s (or g-s). Symbolic mode A symbolic mode specification has the following format: chmod file... where: is a comma-separated list (with no intervening whitespace) of symbolic mode expressions of the form: [who] operator [permissions] Operations are performed in the order given. Multiple per- missions letters following a single operator cause the corresponding operations to be performed simultaneously. who zero or more of the characters u, g, o, and a specifying whose permissions are to be changed or assigned: u user's permissions g group's permissions o others' permissions a all permissions (user, group, and other) If who is omitted, it defaults to a, but the setting of the file mode creation mask (see umask in sh(1) or csh(1) for more informa- tion) is taken into account. When who is omitted, chmod will not override the restric- tions of your user mask. operator either +, -, or =, signifying how permissions are to be changed: + Add permissions. If permissions is omitted, nothing is added. If who is omitted, add the file mode bits represented by permis- sions, except for the those with corresponding bits in the file mode creation mask. If who is present, add the file mode bits represented by the per- missions. - Take away permissions. If permissions is omitted, do noth- ing. If who is omitted, clear the file mode bits represented by permis- sions, except for those with corresponding bits in the file mode creation mask. If who is present, clear the file mode bits represented by permis- sions. = Assign permissions absolutely. If who is omitted, clear all file mode bits; if who is present, clear the file mode bits represented by who. If permissions is omitted, do noth- ing else. If who is omitted, add the file mode bits represented by permis- sions, except for the those with corresponding bits in the file mode creation mask. If who is present, add the file mode bits represented by permis- sions. Unlike other symbolic operations, = has an absolute effect in that it resets all other bits represented by who. Omitting permis- sions is useful only with = to take away all permissions. permission any compatible combination of the following letters: r read permission w write permission x execute permission l mandatory locking s user or group set-ID t sticky bit u,g,o indicate that permission is to be taken from the current user, group or other mode respectively. Permissions to a file may vary depending on your user identification number (UID) or group identification number (GID). Permis- sions are described in three sequences each having three characters: User Group Other rwx rwx rwx This example (user, group, and others all have permission to read, write, and execute a given file) demonstrates two categories for granting permissions: the access class and the permissions themselves. The letter s is only meaningful with u or g, and t only works with u. Mandatory file and record locking (l) refers to a file's ability to have its reading or writing permissions locked while a program is accessing that file. In a directory which has the set-group-ID bit set (reflected as either -----s--- or ----- l--- in the output of 'ls -ld'), files and subdirectories are created with the group-ID of the parent directory-not that of current process. It is not possible to permit group execution and enable a file to be locked on execution at the same time. In addition, it is not possible to turn on the set-group-ID bit and enable a file to be locked on execution at the same time. The following examples, therefore, are invalid and elicit error mes- sages: chmod g+x,+l file chmod g+s,+l file Only the owner of a file or directory (or the super-user) may change that file's or directory's mode. Only the super-user may set the sticky bit on a non-directory file. If you are not super-user, chmod will mask the sticky-bit but will not return an error. In order to turn on a file's set-group-ID bit, your own group ID must correspond to the file's and group execution must be set. OPTIONS The following options are supported: -f Force. chmod will not complain if it fails to change the mode of a file. -R Recursively descend through directory arguments, setting the mode for each file as described above. When symbolic links are encountered, the mode of the target file is changed, but no recursion takes place. OPERANDS The following operands are supported: mode Represents the change to be made to the file mode bits of each file named by one of the file operands; see DESCRIPTION. file A path name of a file whose file mode bits are to be modified. USAGE See largefile(5) for the description of the behavior of chmod when encountering files greater than or equal to 2 Gbyte (2**31 bytes). EXAMPLES Deny execute permission to everyone: example% chmod a-x file Allow only read permission to everyone: example% chmod 444 file Make a file readable and writable by the group and others: example% chmod go+rw file example% chmod 066 file Cause a file to be locked during access: example% chmod +l file Allow everyone to read, write, and execute the file and turn on the set group-ID. example% chmod a=rwx,g+s file example% chmod 2777 file ENVIRONMENT See environ(5) for descriptions of the following environment variables that affect the execution of chmod: LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS The following exit values are returned: 0 Successful completion. >0 An error occurred. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWcsu | | CSI | enabled | |_______________|_________________| SEE ALSO ls(1), chmod(2), attributes(5), environ(5), largefile(5) NOTES Absolute changes don't work for the set-group-ID bit of a directory. You must use g+s or g-s. chmod permits you to produce useless modes so long as they are not illegal (for instance, making a text file execut- able). chmod does not check the file type to see if manda- tory locking is meaningful. If the filesystem is mounted with the nosuid option, setuid execution is not allowed. NAME:chown chown - change file ownership SYNOPSIS chown [ -fhR ] owner[:group] file... DESCRIPTION The chown utility will set the user ID of the file named by each file to the user ID specified by owner, and, option- ally, will set the group ID to that specified by group. If chown is invoked by other than the super-user, the set- user-ID bit is cleared. Only the owner of a file (or the super-user) may change the owner of that file. The operating system has a configuration option {_POSIX_CHOWN_RESTRICTED}, to restrict ownership changes. When this option is in effect the owner of the file is prevented from changing the owner ID of the file. Only the super-user can arbitrarily change owner IDs whether or not this option is in effect. To set this configuration option, include the following line in /etc/system: set rstchown = 1 To disable this option, include the following line in /etc/system: set rstchown = 0 {_POSIX_CHOWN_RESTRICTED} is enabled by default. See sys- tem(4) and fpathconf(2). OPTIONS The following options are supported: -f Do not report errors. -h If the file is a symbolic link, change the owner of the symbolic link. Without this option, the owner of the file referenced by the symbolic link is changed. -R Recursive. chown descends through the directory, and any subdirectories, setting the ownership ID as it proceeds. When a symbolic link is encountered, the owner of the target file is changed (unless the -h option is specified), but no recursion takes place. OPERANDS The following operands are supported: owner[:group] A user ID and optional group ID to be assigned to file. The owner portion of this operand must be a user name from the user database or a numeric user ID. Either speci- fies a user ID to be given to each file named by file. If a numeric owner exists in the user database as a user name, the user ID number associated with that user name will be used as the user ID. Similarly, if the group portion of this operand is present, it must be a group name from the group database or a numeric group ID. Either specifies a group ID to be given to each file. If a numeric group operand exists in the group database as a group name, the group ID number associated with that group name will be used as the group ID. file A path name of a file whose user ID is to be modified. USAGE See largefile(5) for the description of the behavior of chown when encountering files greater than or equal to 2 Gbyte (2**31 bytes). ENVIRONMENT See environ(5) for descriptions of the following environment variables that affect the execution of chown: LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS The following exit values are returned: 0 The utility executed successfully and all requested changes were made. >0 An error occurred. FILES /etc/passwd system password file ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: ______________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE | |_______________|_____________________| | Availability | SUNWcsu | | CSI | Enabled (see NOTES)| |_______________|_____________________| SEE ALSO chgrp(1), chmod(1), chown(2), fpathconf(2), passwd(4), sys- tem(4), attributes(5), environ(5), largefile(5) NOTES chown is CSI-enabled except for the owner and group names. NAME:cp cp - copy files SYNOPSIS /usr/bin/cp [-fip] source_file target_file /usr/bin/cp [-fip] source_file... target /usr/bin/cp -r|-R [-fip] source_dir... target /usr/xpg4/bin/cp [-fip] source_file target_file /usr/xpg4/bin/cp [-fip] source_file... target /usr/xpg4/bin/cp -r|-R [-fip] source_dir... target DESCRIPTION In the first synopsis form, neither source_file nor target_file are directory files, nor can they have the same name. The cp utility will copy the contents of source_file to the destination path named by target_file. If target_file exists, cp will overwrite its contents, but the mode (and ACL if applicable), owner, and group associated with it are not changed. The last modification time of target_file and the last access time of source_file are set to the time the copy was made. If target_file does not exist, cp creates a new file named target_file that has the same mode as source_file except that the sticky bit is not set unless the user is superuser; the owner and group of target_file are those of the owner. If target_file is a link to another file with links, the other links remain and target_file becomes a new file. In the second synopsis form, one or more source_files are copied to the directory specified by target. For each source_file specified, a new file with the same mode (and ACL if applicable), is created in target; the owner and group are those of the user making the copy. It is an error if any source_file is a file of type directory, if target either does not exist or is not a directory. In the third synopsis form, one or more directories speci- fied by source_dir are copied to the directory specified by target. Either -r or -R must be specified. For each source_dir, cp will copy all files and subdirectories. OPTIONS The following options are supported for both /usr/bin/cp and /usr/xpg4/bin/cp: -f Unlink. If a file descriptor for a destination file cannot be obtained, attempt to unlink the destina- tion file and proceed. -i Interactive. cp will prompt for confirmation when- ever the copy would overwrite an existing target. A y answer means that the copy should proceed. Any other answer prevents cp from overwriting target. -r Recursive. cp will copy the directory and all its files, including any subdirectories and their files to target. -R Same as -r, except pipes are replicated, not read from. /usr/bin/cp The following option is supported for /usr/bin/cp only: -p Preserve. cp duplicates not only the contents of source_file, but also preserves the owner and group id, permissions modes, modification and access time, and ACLs if applicable. Note that the command may fail if ACLs are copied to a file system that does not support ACLs. The command will not fail if unable to preserve modification and access time or permission modes. If unable to preserve owner and group id, cp will not fail, and it will clear S_ISUID and S_ISGID bits in the target. cp will print a diagnostic message to stderr and return a non-zero exit status if unable to clear these bits. In order to preserve the owner and group id, permission modes, and modification and access times, users must have the appropriate file access permissions; this includes being superuser or the same owner id as the destination file. /usr/xpg4/bin/cp The following option is supported for /usr/xpg4/bin/cp only: -p Preserve. cp duplicates not only the contents of source_file, but also preserves the owner and group id, permission modes, modification and access time, and ACLs if applicable. Note that the command may fail if ACLs are copied to a file system that does not support ACLs. If unable to duplicate the modification and access time or the permission modes, cp will print a diagnostic message to stderr and return a non-zero exit status. If unable to preserve owner and group id, cp will not fail, and it will clear S_ISUID and S_ISGID bits in the target. cp will print a diagnostic message to stderr and return a non-zero exit status if unable to clear these bits. In order to preserve the owner and group id, permission modes, and modification and access times, users must have the appropriate file access permissions; this includes being superuser or the same owner id as the destination file. OPERANDS The following operands are supported: source_file A path name of a regular file to be copied. source_dir A path name of a directory to be copied. target_file A pathname of an existing or non-existing file, used for the output when a single file is copied. target A pathname of a directory to contain the copied files. USAGE See largefile(5) for the description of the behavior of cp when encountering files greater than or equal to 2 Gbyte (2**31 bytes). EXAMPLES 1. To copy a file: example% cp goodies goodies.old example% ls goodies* goodies goodies.old 2. To copy a list of files to a destination directory: example% cp ~/src/* /tmp 3. To copy a directory, first to a new, and then to an existing destination directory: example% ls ~/bkup /usr/example/fred/bkup not found example% cp -r ~/src ~/bkup example% ls -R ~/bkup x.c y.c z.sh example% cp -r ~/src ~/bkup example% ls -R ~/bkup src x.c y.c z.sh src: x.c y.c z.sh ENVIRONMENT See environ(5) for descriptions of the following environment variables that affect the execution of cp: LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS The following exit values are returned: 0 All files were copied successfully. >0 An error occurred. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: /usr/bin/cp __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWcsu | | CSI | enabled | |_______________|_________________| /usr/xpg4/bin/cp __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWxcu4 | | CSI | enabled | |_______________|_________________| SEE ALSO chmod(1), chown(1), setfacl(1), utime(2), attributes(5), environ(5), largefile(5), xpg4(5) NOTES The permission modes of the source file are preserved in the copy. A -- permits the user to mark the end of any command line options explicitly, thus allowing cp to recognize filename arguments that begin with a -. If a -- and a - both appear on the same command line, the second will be interpreted as a filename. NAME:cron cron - clock daemon SYNOPSIS /usr/sbin/cron DESCRIPTION The cron command starts a process that executes commands at specified dates and times. Regularly scheduled commands can be specified according to instructions found in crontab files in the directory /var/spool/cron/crontabs. Users can submit their own crontab file using the crontab(1) command. Commands which are to be executed only once may be submitted using the at(1) command. cron only examines crontab or at command files during its own process initialization phase and when the crontab or at command is run. This reduces the overhead of checking for new or changed files at regularly scheduled intervals. Since cron never exits, it should be executed only once. This is done routinely through /etc/rc2.d/S75cron at system boot time. The file /etc/cron.d/FIFO is used (among other things) as a lock file to prevent the execution of more than one instance of cron. cron captures the output of the job's stdout and stderr streams, and, if it is non-empty, mails the output to the user. If the job does not produce output, no mail is sent to the user (unless the job is an at(1) job and the -m option was specified when the job was submitted). Setting cron Defaults To keep a log of all actions taken by cron, CRONLOG=YES (by default) must be specified in the /etc/default/cron file. If CRONLOG=NO is specified, no logging is done. Keeping the log is a user configurable option since cron usually creates huge log files. The PATH for user cron jobs can be set using PATH= in /etc/default/cron. The PATH for root cron jobs can be set using SUPATH= in /etc/default/cron. The security implica- tions of setting PATH and SUPATH should be carefully con- sidered. Example /etc/default/cron file: CRONLOG=YES PATH=/usr/bin:/usr/ucb: This example enables logging and sets the default PATH used by non-root jobs to /usr/bin:/usr/ucb:. Root jobs will continue to use /usr/sbin:/usr/bin. /etc/cron.d/logchecker is a script that checks to see if the log file has exceeded the system ulimit. If so, the log file is moved to /var/cron/olog. FILES /etc/cron.d main cron directory /etc/cron.d/FIFO used as a lock file /etc/default/cron contains cron default settings /var/cron/log cron history information /var/spool/cron spool area /etc/cron.d/logchecker moves log file to /var/cron/olog if log file exceeds system ulimit. /etc/cron.d/queuedefs queue description file for at, batch, and cron. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWcsu | |_______________|_________________| SEE ALSO at(1), crontab(1), sh(1), queuedefs(4), attributes(5) DIAGNOSTICS A history of all actions taken by cron is stored in /var/cron/log and (possibly) /var/cron/olog. NAME:csh csh - shell command interpreter with a C-like syntax SYNOPSIS csh [ -bcefinstvVxX ] [ argument... ] DESCRIPTION csh, the C shell, is a command interpreter with a syntax reminiscent of the C language. It provides a number of con- venient features for interactive use that are not available with the Bourne shell, including filename completion, com- mand aliasing, history substitution, job control, and a number of built-in commands. As with the Bourne shell, the C shell provides variable, command and filename substitu- tion. Initialization and Termination When first started, the C shell normally performs commands from the .cshrc file in your home directory, provided that it is readable and you either own it or your real group ID matches its group ID. If the shell is invoked with a name that starts with `-', as when started by login(1), the shell runs as a login shell. If the shell is a login shell, this is the sequence of invo- cations: First, commands in /etc/.login are executed. Next, commands from the .cshrc file your home directory are executed. Then the shell executes commands from the .login file in your home directory; the same permission checks as those for .cshrc are applied to this file. Typically, the .login file contains commands to specify the terminal type and environment. (For an explanation of file interpreters, see below "Command Execution" and exec(2).) As a login shell terminates, it performs commands from the .logout file in your home directory; the same permission checks as those for .cshrc are applied to this file. Interactive Operation After startup processing is complete, an interactive C shell begins reading commands from the terminal, prompting with hostname% (or hostname# for the privileged user). The shell then repeatedly performs the following actions: a line of command input is read and broken into words. This sequence of words is placed on the history list and then parsed, as described under USAGE, below. Finally, the shell executes each command in the current line. Noninteractive Operation When running noninteractively, the shell does not prompt for input from the terminal. A noninteractive C shell can exe- cute a command supplied as an argument on its command line, or interpret commands from a file, also known as a script. OPTIONS -b Force a "break" from option processing. Subsequent command line arguments are not interpreted as C shell options. This allows the passing of options to a script without confusion. The shell does not run set-user-ID or set-group-ID scripts unless this option is present. -c Execute the first argument (which must be present). Remaining arguments are placed in argv, the argument-list variable, and passed directly to csh. -e Exit if a command terminates abnormally or yields a nonzero exit status. -f Fast start. Read neither the .cshrc file, nor the .login file (if a login shell) upon startup. -i Forced interactive. Prompt for command line input, even if the standard input does not appear to be a terminal (character-special device). -n Parse (interpret), but do not execute commands. This option can be used to check C shell scripts for syntax errors. -s Take commands from the standard input. -t Read and execute a single command line. A `\' (backslash) can be used to escape each newline for continuation of the command line onto subsequent input lines. -v Verbose. Set the verbose predefined variable; com- mand input is echoed after history substitution (but before other substitutions) and before execu- tion. -V Set verbose before reading .cshrc. -x Echo. Set the echo variable; echo commands after all substitutions and just before execution. -X Set echo before reading .cshrc. Except with the options -c, -i, -s, or -t, the first nonop- tion argument is taken to be the name of a command or script. It is passed as argument zero, and subsequent argu- ments are added to the argument list for that command or script. USAGE Filename Completion When enabled by setting the variable filec, an interactive C shell can complete a partially typed filename or user name. When an unambiguous partial filename is followed by an ESC character on the terminal input line, the shell fills in the remaining characters of a matching filename from the working directory. If a partial filename is followed by the EOF character (usu- ally typed as CTRL-d), the shell lists all filenames that match. It then prompts once again, supplying the incomplete command line typed in so far. When the last (partial) word begins with a tilde (~), the shell attempts completion with a user name, rather than a file in the working directory. The terminal bell signals errors or multiple matches; this can be inhibited by setting the variable nobeep. You can exclude files with certain suffixes by listing those suf- fixes in the variable fignore. If, however, the only possi- ble completion includes a suffix in the list, it is not ignored. fignore does not affect the listing of filenames by the EOF character. Lexical Structure The shell splits input lines into words at space and tab characters, except as noted below. The characters &, |, ;, <, >, (, and ) form separate words; if paired, the pairs form single words. These shell metacharacters can be made part of other words, and their special meaning can be suppressed by preceding them with a `\' (backslash). A new- line preceded by a \ is equivalent to a space character. In addition, a string enclosed in matched pairs of single- quotes ('), double-quotes ("), or backquotes (`), forms a partial word; metacharacters in such a string, including any space or tab characters, do not form separate words. Within pairs of backquote (`) or double-quote (") characters, a newline preceded by a `\' (backslash) gives a true newline character. Additional functions of each type of quote are described, below, under Variable Substitution, Command Sub- stitution, and Filename Substitution. When the shell's input is not a terminal, the character # introduces a comment that continues to the end of the input line. Its special meaning is suppressed when preceded by a \ or enclosed in matching quotes. Command Line Parsing A simple command is composed of a sequence of words. The first word (that is not part of an I/O redirection) speci- fies the command to be executed. A simple command, or a set of simple commands separated by | or |& characters, forms a pipeline. With |, the standard output of the preceding com- mand is redirected to the standard input of the command that follows. With |&, both the standard error and the standard output are redirected through the pipeline. Pipelines can be separated by semicolons (;), in which case they are executed sequentially. Pipelines that are separated by && or || form conditional sequences in which the execu- tion of pipelines on the right depends upon the success or failure, respectively, of the pipeline on the left. A pipeline or sequence can be enclosed within parentheses `( )' to form a simple command that can be a component in a pipeline or sequence. A sequence of pipelines can be executed asynchronously or "in the background" by appending an `&'; rather than waiting for the sequence to finish before issuing a prompt, the shell displays the job number (see Job Control, below) and associated process IDs and prompts immediately. History Substitution History substitution allows you to use words from previous command lines in the command line you are typing. This sim- plifies spelling corrections and the repetition of compli- cated commands or arguments. Command lines are saved in the history list, the size of which is controlled by the history variable. The most recent command is retained in any case. A history substitution begins with a ! (although you can change this with the histchars variable) and may occur any- where on the command line; history substitutions do not nest. The ! can be escaped with \ to suppress its special meaning. Input lines containing history substitutions are echoed on the terminal after being expanded, but before any other sub- stitutions take place or the command gets executed. Event Designators An event designator is a reference to a command line entry in the history list. ! Start a history substitution, except when followed by a space character, tab, newline, = or (. !! Refer to the previous command. By itself, this substitution repeats the previous command. !n Refer to command line n. !-n Refer to the current command line minus n. !str Refer to the most recent command starting with str. !?str? Refer to the most recent command containing str. !?str? additional Refer to the most recent command containing str and append additional to that referenced command. !{command} additional Refer to the most recent command beginning with command and append additional to that referenced command. ^previous_word^replacement^ Repeat the previous command line replacing the string previous_word with the string replacement. This is equivalent to the history substitution: !:s/previous_word/replacement/. To re-execute a specific previous command AND make such a substitution, say, re-executing command #6, !:6s/previous_word/replacement/. Word Designators A `:' (colon) separates the event specification from the word designator. It can be omitted if the word designator begins with a ^, $, *, - or %. If the word is to be selected from the previous command, the second ! character can be omitted from the event specification. For instance, !!:1 and !:1 both refer to the first word of the previous command, while !!$ and !$ both refer to the last word in the previous command. Word designators include: # The entire command line typed so far. 0 The first input word (command). n The n'th argument. ^ The first argument, that is, 1. $ The last argument. % The word matched by (the most recent) ?s search. x-y A range of words; -y abbreviates 0-y. * All the arguments, or a null value if there is just one word in the event. x* Abbreviates x-$. x- Like x* but omitting word $. Modifiers After the optional word designator, you can add one of the following modifiers, preceded by a :. h Remove a trailing pathname component, leaving the head. r Remove a trailing suffix of the form `.xxx', leav- ing the basename. e Remove all but the suffix, leaving the Extension. s/l/r/ Substitute r for l. t Remove all leading pathname components, leaving the tail. & Repeat the previous substitution. g Apply the change to the first occurrence of a match in each word, by prefixing the above (for example, g&). p Print the new command but do not execute it. q Quote the substituted words, escaping further sub- stitutions. x Like q, but break into words at each space charac- ter, tab or newline. Unless preceded by a g, the modification is applied only to the first string that matches l; an error results if no string matches. The left-hand side of substitutions are not regular expres- sions, but character strings. Any character can be used as the delimiter in place of /. A backslash quotes the delim- iter character. The character &, in the right hand side, is replaced by the text from the left-hand-side. The & can be quoted with a backslash. A null l uses the previous string either from a l or from a contextual scan string s from !?s. You can omit the rightmost delimiter if a newline immedi- ately follows r; the rightmost ? in a context scan can similarly be omitted. Without an event specification, a history reference refers either to the previous command, or to a previous history reference on the command line (if any). Quick Substitution ^l^r^ This is equivalent to the history substitution: !:s/l/r/. Aliases The C shell maintains a list of aliases that you can create, display, and modify using the alias and unalias commands. The shell checks the first word in each command to see if it matches the name of an existing alias. If it does, the com- mand is reprocessed with the alias definition replacing its name; the history substitution mechanism is made available as though that command were the previous input line. This allows history substitutions, escaped with a backslash in the definition, to be replaced with actual command line arguments when the alias is used. If no history substitu- tion is called for, the arguments remain unchanged. Aliases can be nested. That is, an alias definition can con- tain the name of another alias. Nested aliases are expanded before any history substitutions is applied. This is useful in pipelines such as alias lm 'ls -l \!* | more' which when called, pipes the output of ls(1) through more(1). Except for the first word, the name of the alias may not appear in its definition, nor in any alias referred to by its definition. Such loops are detected, and cause an error message. I/O Redirection The following metacharacters indicate that the subsequent word is the name of a file to which the command's standard input, standard output, or standard error is redirected; this word is variable, command, and filename expanded separately from the rest of the command. < Redirect the standard input. < >! >& >&! Redirect the standard output to a file. If the file does not exist, it is created. If it does exist, it is overwritten; its previ- ous contents are lost. When set, the variable noclobber prevents destruction of existing files. It also prevents redirection to terminals and /dev/null, unless one of the ! forms is used. The & forms redirect both standard output and the standard error (diagnostic output) to the file. >> >>& >>! >>&! Append the standard output. Like >, but places output at the end of the file rather than overwriting it. If noclobber is set, it is an error for the file not to exist, unless one of the ! forms is used. The & forms append both the standard error and standard output to the file. Variable Substitution The C shell maintains a set of variables, each of which is composed of a name and a value. A variable name consists of up to 20 letters and digits, and starts with a letter (the underscore is considered a letter). A variable's value is a space-separated list of zero or more words. To refer to a variable's value, precede its name with a `$'. Certain references (described below) can be used to select specific words from the value, or to display other informa- tion about the variable. Braces can be used to insulate the reference from other characters in an input-line word. Variable substitution takes place after the input line is analyzed, aliases are resolved, and I/O redirections are applied. Exceptions to this are variable references in I/O redirections (substituted at the time the redirection is made), and backquoted strings (see Command Substitution). Variable substitution can be suppressed by preceding the $ with a \, except within double-quotes where it always occurs. Variable substitution is suppressed inside of single-quotes. A $ is escaped if followed by a space char- acter, tab or newline. Variables can be created, displayed, or destroyed using the set and unset commands. Some variables are maintained or used by the shell. For instance, the argv variable contains an image of the shell's argument list. Of the variables used by the shell, a number are toggles; the shell does not care what their value is, only whether they are set or not. Numerical values can be operated on as numbers (as with the @ built-in command). With numeric operations, an empty value is considered to be zero; the second and subsequent words of multiword values are ignored. For instance, when the verbose variable is set to any value (including an empty value), command input is echoed on the terminal. Command and filename substitution is subsequently applied to the words that result from the variable substitution, except when suppressed by double-quotes, when noglob is set (suppressing filename substitution), or when the reference is quoted with the :q modifier. Within double-quotes, a reference is expanded to form (a portion of) a quoted string; multiword values are expanded to a string with embedded space characters. When the :q modifier is applied to the reference, it is expanded to a list of space- separated words, each of which is quoted to prevent subse- quent command or filename substitutions. Except as noted below, it is an error to refer to a variable that is not set. $var ${var} These are replaced by words from the value of var, each separated by a space character. If var is an environment variable, its value is returned (but `:' modifiers and the other forms given below are not available). $var[index] ${var[index]} These select only the indicated words from the value of var. Variable substitution is applied to index, which may consist of (or result in) a either single number, two numbers separated by a `-', or an asterisk. Words are indexed starting from 1; a `*' selects all words. If the first number of a range is omitted (as with $argv[-2]), it defaults to 1. If the last number of a range is omitted (as with $argv[1-]), it defaults to $#var (the word count). It is not an error for a range to be empty if the second argument is omitted (or within range). $#name ${#name} These give the number of words in the vari- able. $0 This substitutes the name of the file from which command input is being read except for setuid shell scripts. An error occurs if the name is not known. $n ${n} Equivalent to $argv[n]. $* Equivalent to $argv[*]. The modifiers :e, :h, :q, :r, :t, and :x can be applied (see History Substitution), as can :gh, :gt, and :gr. If {} (braces) are used, then the modifiers must appear within the braces. The current implementation allows only one such modifier per expansion. The following references may not be modified with : modif- iers. $?var ${?var} Substitutes the string 1 if var is set or 0 if it is not set. $?0 Substitutes 1 if the current input filename is known or 0 if it is not. $$ Substitute the process number of the (parent) shell. $< Substitutes a line from the standard input, with no further interpretation thereafter. It can be used to read from the keyboard in a C shell script. Command and Filename Substitutions Command and filename substitutions are applied selectively to the arguments of built-in commands. Portions of expres- sions that are not evaluated are not expanded. For non- built-in commands, filename expansion of the command name is done separately from that of the argument list; expansion occurs in a subshell, after I/O redirection is performed. Command Substitution A command enclosed by backquotes (`...`) is performed by a subshell. Its standard output is broken into separate words at each space character, tab and newline; null words are discarded. This text replaces the backquoted string on the current command line. Within double-quotes, only newline characters force new words; space and tab characters are preserved. However, a final newline is ignored. It is therefore possible for a command substitution to yield a partial word. Filename Substitution Unquoted words containing any of the characters *, ?, [ or {, or that begin with ~, are expanded (also known as glob- bing) to an alphabetically sorted list of filenames, as fol- lows: * Match any (zero or more) characters. ? Match any single character. [ ... ] Match any single character in the enclosed list(s) or range(s). A list is a string of characters. A range is two characters separated by a dash (-), and includes all the characters in between in the ASCII collating sequence (see ascii(5)). { str, str, ... } Expand to each string (or filename-matching pattern) in the comma-separated list. Unlike the pattern-matching expressions above, the expansion of this construct is not sorted. For instance, {b,a} expands to `b' `a', (not `a' `b'). As special cases, the characters { and }, along with the string {}, are passed undisturbed. ~[user] Your home directory, as indicated by the value of the variable home, or that of user, as indicated by the password entry for user. Only the patterns *, ? and [...] imply pattern matching; an error results if no filename matches a pattern that con- tains them. The `.' (dot character), when it is the first character in a filename or pathname component, must be matched explicitly. The / (slash) must also be matched explicitly. Expressions and Operators A number of C shell built-in commands accept expressions, in which the operators are similar to those of C and have the same precedence. These expressions typically appear in the @, exit, if, set and while commands, and are often used to regulate the flow of control for executing commands. Com- ponents of an expression are separated by white space. Null or missing values are considered 0. The result of all expressions is a string, which may represent decimal numbers. The following C shell operators are grouped in order of pre- cedence: (...) grouping ~ one's complement ! logical negation * / % multiplication, division, remainder (These are right associative, which can lead to unexpected results. Group combinations explicitly with parentheses.) + - addition, subtraction (also right associative) << >> bitwise shift left, bitwise shift right < > <= >= less than, greater than, less than or equal to, greater than or equal to == != =~ !~ equal to, not equal to, filename- substitution pattern match (described below), filename- substitution pattern mismatch & bitwise AND ^ bitwise XOR (exclusive or) | bitwise inclusive OR && logical AND || logical OR The operators: ==, !=, =~, and !~ compare their arguments as strings; other operators use numbers. The operators =~ and !~ each check whether or not a string to the left matches a filename substitution pattern on the right. This reduces the need for switch statements when pattern-matching between strings is all that is required. Also available are file inquiries: -r filename Return true, or 1 if the user has read access. Otherwise it returns false, or 0. -w filename True if the user has write access. -x filename True if the user has execute permission (or search permission on a directory). -e filename True if filename exists. -o filename True if the user owns filename. -z filename True if filename is of zero length (empty). -f filename True if filename is a plain file. -d filename True if filename is a directory. If filename does not exist or is inaccessible, then all inquiries return false. An inquiry as to the success of a command is also available: { command } If command runs successfully, the expres- sion evaluates to true, 1. Otherwise, it evaluates to false, 0. (Note: Con- versely, command itself typically returns 0 when it runs successfully, or some other value if it encounters a problem. If you want to get at the status directly, use the value of the status variable rather than this expression). Control Flow The shell contains a number of commands to regulate the flow of control in scripts and within limits, from the terminal. These commands operate by forcing the shell either to reread input (to loop), or to skip input under certain conditions (to branch). Each occurrence of a foreach, switch, while, if...then and else built-in command must appear as the first word on its own input line. If the shell's input is not seekable and a loop is being read, that input is buffered. The shell performs seeks within the internal buffer to accomplish the rereading implied by the loop. (To the extent that this allows, back- ward goto commands will succeed on nonseekable inputs.) Command Execution If the command is a C shell built-in command, the shell exe- cutes it directly. Otherwise, the shell searches for a file by that name with execute access. If the command name con- tains a /, the shell takes it as a pathname, and searches for it. If the command name does not contain a /, the shell attempts to resolve it to a pathname, searching each direc- tory in the path variable for the command. To speed the search, the shell uses its hash table (see the rehash built-in command) to eliminate directories that have no applicable files. This hashing can be disabled with the -c or -t, options, or the unhash built-in command. As a special case, if there is no / in the name of the script and there is an alias for the word shell, the expan- sion of the shell alias is prepended (without modification) to the command line. The system attempts to execute the first word of this special (late-occurring) alias, which should be a full pathname. Remaining words of the alias's definition, along with the text of the input line, are treated as arguments. When a pathname is found that has proper execute permis- sions, the shell forks a new process and passes it, along with its arguments, to the kernel using the execve() system call (see exec(2)). The kernel then attempts to overlay the new process with the desired program. If the file is an executable binary (in a.out(4) format) the kernel succeeds and begins executing the new process. If the file is a text file and the first line begins with #!, the next word is taken to be the pathname of a shell (or command) to inter- pret that script. Subsequent words on the first line are taken as options for that shell. The kernel invokes (over- lays) the indicated shell, using the name of the script as an argument. If neither of the above conditions holds, the kernel cannot overlay the file and the execve() call fails (see exec(2)); the C shell then attempts to execute the file by spawning a new shell, as follows: + If the first character of the file is a #, a C shell is invoked. + Otherwise, a Bourne shell is invoked. Signal Handling The shell normally ignores QUIT signals. Background jobs are immune to signals generated from the keyboard, including hangups (HUP). Other signals have the values that the C shell inherited from its environment. The shell's handling of interrupt and terminate signals within scripts can be controlled by the onintr built-in command. Login shells catch the TERM signal; otherwise, this signal is passed on to child processes. In no case are interrupts allowed when a login shell is reading the .logout file. Job Control The shell associates a numbered job with each command sequence to keep track of those commands that are running in the background or have been stopped with TSTP signals (typi- cally CTRL-z). When a command or command sequence (semi- colon separated list) is started in the background using the & metacharacter, the shell displays a line with the job number in brackets and a list of associated process numbers: [1] 1234 To see the current list of jobs, use the jobs built-in com- mand. The job most recently stopped (or put into the back- ground if none are stopped) is referred to as the current job and is indicated with a `+'. The previous job is indi- cated with a `-'; when the current job is terminated or moved to the foreground, this job takes its place (becomes the new current job). To manipulate jobs, refer to the bg, fg, kill, stop, and % built-in commands. A reference to a job begins with a `%'. By itself, the percent-sign refers to the current job. % %+ %% The current job. %- The previous job. %j Refer to job j as in: `kill -9 %j'. j can be a job number, or a string that uniquely specifies the command line by which it was started; `fg %vi' might bring a stopped vi job to the foreground, for instance. %?string Specify the job for which the command line uniquely contains string. A job running in the background stops when it attempts to read from the terminal. Background jobs can normally produce output, but this can be suppressed using the `stty tostop' command. Status Reporting While running interactively, the shell tracks the status of each job and reports whenever the job finishes or becomes blocked. It normally displays a message to this effect as it issues a prompt, in order to avoid disturbing the appear- ance of your input. When set, the notify variable indicates that the shell is to report status changes immediately. By default, the notify command marks the current process; after starting a background job, type notify to mark it. Built-In Commands Built-in commands are executed within the C shell. If a built-in command occurs as any component of a pipeline except the last, it is executed in a subshell. : Null command. This command is interpreted, but performs no action. alias [ name [ def ] ] Assign def to the alias name. def is a list of words that may contain escaped history- substitution metasyntax. name is not allowed to be alias or unalias. If def is omitted, the current definition for the alias name is displayed. If both name and def are omitted, all aliases are displayed with their definitions. bg [ %job ... ] Run the current or specified jobs in the back- ground. break Resume execution after the end of the nearest enclosing foreach or while loop. The remaining commands on the current line are executed. This allows multilevel breaks to be written as a list of break commands, all on one line. breaksw Break from a switch, resuming after the endsw. case label: A label in a switch statement. cd [ dir ] chdir [ dir ] Change the shell's working directory to directory dir. If no argument is given, change to the home directory of the user. If dir is a relative path- name not found in the current directory, check for it in those directories listed in the cdpath variable. If dir is the name of a shell variable whose value starts with a /, change to the direc- tory named by that value. continue Continue execution of the next iteration of the nearest enclosing while or foreach loop. default: Labels the default case in a switch statement. The default should come after all case labels. Any remaining commands on the command line are first executed. dirs [ -l ] Print the directory stack, most recent to the left; the first directory shown is the current directory. With the -l argument, produce an unab- breviated printout; use of the ~ notation is suppressed. echo [ -n ] list The words in list are written to the shell's stan- dard output, separated by space characters. The output is terminated with a newline unless the -n option is used. csh will, by default, invoke its built-in echo, if echo is called without the full pathname of a Unix command, regardless of the configuration of your PATH (see echo(1)). eval argument... Reads the arguments as input to the shell and exe- cutes the resulting command(s). This is usually used to execute commands generated as the result of command or variable substitution. See tset(1B) for an example of how to use eval. exec command Execute command in place of the current shell, which terminates. exit [ (expr) ] The calling shell or shell script exits, either with the value of the status variable or with the value specified by the expression expr. fg [ %job ] Bring the current or specified job into the fore- ground. foreach var (wordlist) ... end The variable var is successively set to each member of wordlist. The sequence of commands between this command and the matching end is exe- cuted for each new value of var. Both foreach and end must appear alone on separate lines. The built-in command continue may be used to ter- minate the execution of the current iteration of the loop and the built-in command break may be used to terminate execution of the foreach com- mand. When this command is read from the termi- nal, the loop is read once prompting with ? before any statements in the loop are executed. glob wordlist Perform filename expansion on wordlist. Like echo, but no \ escapes are recognized. Words are delimited by NULL characters in the output. goto label The specified label is a filename and a command expanded to yield a label. The shell rewinds its input as much as possible and searches for a line of the form label: possibly preceded by space or tab characters. Execution continues after the indicated line. It is an error to jump to a label that occurs between a while or for built-in com- mand and its corresponding end. hashstat Print a statistics line indicating how effective the internal hash table for the path variable has been at locating commands (and avoiding execs). An exec is attempted for each component of the path where the hash function indicates a possible hit and in each component that does not begin with a `/'. These statistics only reflect the effec- tiveness of the path variable, not the cdpath variable. history [ -hr ] [ n ] Display the history list; if n is given, display only the n most recent events. -r Reverse the order of printout to be most recent first rather than oldest first. -h Display the history list without leading numbers. This is used to produce files suit- able for sourcing using the -h option to source. if (expr) command If the specified expression evaluates to true, the single command with arguments is executed. Vari- able substitution on command happens early, at the same time it does for the rest of the if command. command must be a simple command, not a pipeline, a command list, or a parenthesized command list. Note: I/O redirection occurs even if expr is false, when command is not executed (this is a bug). if (expr) then ... else if (expr2) then ... else ... endif If expr is true, commands up to the first else are executed. Otherwise, if expr2 is true, the com- mands between the else if and the second else are executed. Otherwise, commands between the else and the endif are executed. Any number of else if pairs are allowed, but only one else. Only one endif is needed, but it is required. The words else and endif must be the first nonwhite charac- ters on a line. The if must appear alone on its input line or after an else. jobs[-l] List the active jobs under job control. -l List process IDs, in addition to the normal information. kill [ -sig ] [ pid ] [ %job ] ... kill -l Send the TERM (terminate) signal, by default, or the signal specified, to the specified process ID, the job indicated, or the current job. Signals are either given by number or by name. There is no default. Typing kill does not send a signal to the current job. If the signal being sent is TERM (terminate) or HUP (hangup), then the job or pro- cess is sent a CONT (continue) signal as well. -l List the signal names that can be sent. limit [ -h ] [ resource [ max-use ] ] Limit the consumption by the current process or any process it spawns, each not to exceed max-use on the specified resource. If max-use is omitted, print the current limit; if resource is omitted, display all limits. (Run the sysdef(1M) command to obtain the maximum possible limits for your system. The values reported are in hexadecimal, but can be translated into decimal numbers using the bc(1) command). -h Use hard limits instead of the current lim- its. Hard limits impose a ceiling on the values of the current limits. Only the privileged user may raise the hard limits. resource is one of: cputime Maximum CPU seconds per pro- cess. filesize Largest single file allowed; limited to the size of the filesystem. (see df(1M)). datasize (heapsize) Maximum data size (including stack) for the process. This is the size of your virtual memory See swap(1M). stacksize Maximum stack size for the process. See swap(1M). coredumpsize Maximum size of a core dump (file). This limited to the size of the filesystem. descriptors Maximum number of file descriptors. Run sysdef(). memorysize Maximum size of virtual memory. max-use is a number, with an optional scaling fac- tor, as follows: nh Hours (for cputime). nk n kilobytes. This is the default for all but cputime. nm n megabytes or minutes (for cpu- time). mm:ss Minutes and seconds (for cputime). Example of limit: to limit the size of a core file dump to 0 Megabytes, type the following: limit coredumpsize 0M login [ username| -p ] Terminate a login shell and invoke login(1). The .logout file is not processed. If username is omitted, login prompts for the name of a user. -p Preserve the current environment (variables). logout Terminate a login shell. nice [ +n | -n ] [ command ] Increment the process priority value for the shell or for command by n. The higher the priority value, the lower the priority of a process, and the slower it runs. When given, command is always run in a subshell, and the restrictions placed on commands in simple if commands apply. If command is omitted, nice increments the value for the current shell. If no increment is specified, nice sets the process priority value to 4. The range of process priority values is from -20 to 20. Values of n outside this range set the value to the lower, or to the higher boundary, respec- tively. +n Increment the process priority value by n. -n Decrement by n. This argument can be used only by the privileged user. nohup [ command ] Run command with HUPs ignored. With no arguments, ignore HUPs throughout the remainder of a script. When given, command is always run in a subshell, and the restrictions placed on commands in simple if statements apply. All processes detached with & are effectively nohup'd. notify [ %job ] ... Notify the user asynchronously when the status of the current job or specified jobs changes. onintr [ -| label] Control the action of the shell on interrupts. With no arguments, onintr restores the default action of the shell on interrupts. (The shell terminates shell scripts and returns to the termi- nal command input level). With the - argument, the shell ignores all interrupts. With a label argument, the shell executes a goto label when an interrupt is received or a child process ter- minates because it was interrupted. popd [ +n ] Pop the directory stack and cd to the new top directory. The elements of the directory stack are numbered from 0 starting at the top. +n Discard the n'th entry in the stack. pushd [ +n | dir] Push a directory onto the directory stack. With no arguments, exchange the top two elements. +n Rotate the n'th entry to the top of the stack and cd to it. dir Push the current working directory onto the stack and change to dir. rehash Recompute the internal hash table of the contents of directories listed in the path variable to account for new commands added. Recompute the internal hash table of the contents of directories listed in the cdpath variable to account for new directories added. repeat count command Repeat command count times. command is subject to the same restrictions as with the one-line if statement. set [var [ = value ] ] set var[n] = word With no arguments, set displays the values of all shell variables. Multiword values are displayed as a parenthesized list. With the var argument alone, set assigns an empty (null) value to the variable var. With arguments of the form var = value set assigns value to var, where value is one of: word A single word (or quoted string). (wordlist) A space-separated list of words enclosed in parentheses. Values are command and filename expanded before being assigned. The form set var[n] = word replaces the n'th word in a multiword value with word. setenv [ VAR [ word ] ] With no arguments, setenv displays all environment variables. With the VAR argument, setenv sets the environment variable VAR to have an empty (null) value. (By convention, environment variables are normally given upper-case names.) With both VAR and word arguments, setenv sets the environment variable NAME to the value word, which must be either a single word or a quoted string. The most commonly used environment variables, USER, TERM, and PATH, are automatically imported to and exported from the csh variables user, term, and path; there is no need to use setenv for these. In addition, the shell sets the PWD environment variable from the csh variable cwd whenever the latter changes. The environment variables LC_CTYPE, LC_MESSAGES, LC_TIME, LC_COLLATE, LC_NUMERIC, and LC_MONETARY take immediate effect when changed within the C shell. If any of the LC_* variables ( LC_CTYPE, LC_MESSAGES, LC_TIME, LC_COLLATE, LC_NUMERIC, and LC_MONETARY ) (see environ(5)) are not set in the environment, the operational behavior of csh for each corresponding locale category is determined by the value of the LANG environment variable. If LC_ALL is set, its contents are used to override both the LANG and the other LC_* variables. If none of the above variables is set in the environ- ment, the "C" (U.S. style) locale determines how csh behaves. LC_CTYPE Determines how csh handles characters. When LC_CTYPE is set to a valid value, csh can display and handle text and filenames containing valid characters for that locale. LC_MESSAGES Determines how diagnostic and informa- tive messages are presented. This includes the language and style of the messages and the correct form of affir- mative and negative responses. In the "C" locale, the messages are presented in the default form found in the program itself (in most cases, U.S./English). LC_NUMERIC Determines the value of the radix char- acter (decimal point (".") in the "C" locale) and thousand separator (empty string ("") in the "C" locale). shift [ variable ] The components of argv, or variable, if supplied, are shifted to the left, discarding the first com- ponent. It is an error for the variable not to be set or to have a null value. source [ -h ] name Reads commands from name. source commands may be nested, but if they are nested too deeply the shell may run out of file descriptors. An error in a sourced file at any level terminates all nested source commands. -h Place commands from the file name on the history list without executing them. stop %jobid ... Stop the current or specified background job. stop pid ... Stop the specified process, pid. (see ps(1)). suspend Stop the shell in its tracks, much as if it had been sent a stop signal with ^Z. This is most often used to stop shells started by su. switch (string) case label: ... breaksw ... default: ... breaksw endsw Each label is successively matched, against the specified string, which is first command and filename expanded. The file metacharacters *, ? and [...] may be used in the case labels, which are variable expanded. If none of the labels match before a "default" label is found, execution begins after the default label. Each case state- ment and the default statement must appear at the beginning of a line. The command breaksw contin- ues execution after the endsw. Otherwise control falls through subsequent case and default state- ments as with C. If no label matches and there is no default, execution continues after the endsw. time [ command ] With no argument, print a summary of time used by this C shell and its children. With an optional command, execute command and print a summary of the time it uses. As of this writing, the time built-in command does NOT compute the last 6 fields of output, rendering the output to erroneously report the value "0" for these fields. example %time ls -R 9.0u 11.0s 3:32 10% 0+0k 0+0io 0pf+0w (See below the "Environment Variables and Prede- fined Shell Variables" sub-section on the time variable.) umask [ value ] Display the file creation mask. With value, set the file creation mask. With value given in octal, the user can turn-off any bits, but cannot turn-on bits to allow new permissions. Common values include 077, restricting all permissions from everyone else; 002, giving complete access to the group, and read (and directory search) access to others; or 022, giving read (and directory search) but not write permission to the group and others. unalias pattern Discard aliases that match (filename substitution) pattern. All aliases are removed by `unalias *'. unhash Disable the internal hash tables for the path and cdpath variables. unlimit [ -h ] [ resource ] Remove a limitation on resource. If no resource is specified, then all resource limitations are removed. See the description of the limit command for the list of resource names. -h Remove corresponding hard limits. Only the privileged user may do this. unset pattern Remove variables whose names match (filename sub- stitution) pattern. All variables are removed by `unset *'; this has noticeably distasteful side effects. unsetenv variable Remove variable from the environment. As with unset, pattern matching is not performed. wait Wait for background jobs to finish (or for an interrupt) before prompting. while (expr) ... end While expr is true (evaluates to nonzero), repeat commands between the while and the matching end statement. break and continue may be used to ter- minate or continue the loop prematurely. The while and end must appear alone on their input lines. If the shell's input is a terminal, it prompts for commands with a question-mark until the end command is entered and then performs the commands in the loop. %[ job ] [ & ] Bring the current or indicated job to the fore- ground. With the ampersand, continue running job in the background. @ [ var =expr ] @ [ var[n] =expr ] With no arguments, display the values for all shell variables. With arguments, set the variable var, or the n'th word in the value of var, to the value that expr evaluates to. (If [n] is sup- plied, both var and its n'th component must already exist.) If the expression contains the characters >, <, &, or |, then at least this part of expr must be placed within parentheses. The operators *=, +=, and so forth, are available as in C. The space separating the name from the assignment operator is optional. Spaces are, how- ever, mandatory in separating components of expr that would otherwise be single words. Special postfix operators, ++ and --, increment or decrement name, respectively. Environment Variables and Predefined Shell Variables Unlike the Bourne shell, the C shell maintains a distinction between environment variables, which are automatically exported to processes it invokes, and shell variables, which are not. Both types of variables are treated similarly under variable substitution. The shell sets the variables argv, cwd, home, path, prompt, shell, and status upon ini- tialization. The shell copies the environment variable USER into the shell variable user, TERM into term, and HOME into home, and copies each back into the respective environment variable whenever the shell variables are reset. PATH and path are similarly handled. You need only set path once in the .cshrc or .login file. The environment variable PWD is set from cwd whenever the latter changes. The following shell variables have predefined meanings: argv Argument list. Contains the list of com- mand line arguments supplied to the current invocation of the shell. This variable determines the value of the posi- tional parameters $1, $2, and so on. cdpath Contains a list of directories to be searched by the cd, chdir, and popd com- mands, if the directory argument each accepts is not a subdirectory of the current directory. cwd The full pathname of the current direc- tory. echo Echo commands (after substitutions) just before execution. fignore A list of filename suffixes to ignore when attempting filename completion. Typically the single word `.o'. filec Enable filename completion, in which case the CTRL-d character EOT and the ESC char- acter have special significance when typed in at the end of a terminal input line: EOT Print a list of all filenames that start with the preceding string. ESC Replace the preceding string with the longest unambiguous extension. hardpaths If set, pathnames in the directory stack are resolved to contain no symbolic-link components. histchars A two-character string. The first charac- ter replaces ! as the history- substitution character. The second replaces the carat (^) for quick substitu- tions. history The number of lines saved in the history list. A very large number may use up all of the C shell's memory. If not set, the C shell saves only the most recent com- mand. home The user's home directory. The filename expansion of ~ refers to the value of this variable. ignoreeof If set, the shell ignores EOF from termi- nals. This protects against accidentally killing a C shell by typing a CTRL-d. mail A list of files where the C shell checks for mail. If the first word of the value is a number, it specifies a mail checking interval in seconds (default 5 minutes). nobeep Suppress the bell during command comple- tion when asking the C shell to extend an ambiguous filename. noclobber Restrict output redirection so that exist- ing files are not destroyed by accident. > redirections can only be made to new files. >> redirections can only be made to existing files. noglob Inhibit filename substitution. This is most useful in shell scripts once filenames (if any) are obtained and no further expansion is desired. nonomatch Returns the filename substitution pattern, rather than an error, if the pattern is not matched. Malformed patterns still result in errors. notify If set, the shell notifies you immediately as jobs are completed, rather than waiting until just before issuing a prompt. path The list of directories in which to search for commands. path is initialized from the environment variable PATH, which the C shell updates whenever path changes. A null word specifies the current directory. The default is typically (/usr/bin .). If path becomes unset only full pathnames will execute. An interactive C shell will normally hash the contents of the direc- tories listed after reading .cshrc, and whenever path is reset. If new commands are added, use the rehash command to update the table. prompt The string an interactive C shell prompts with. Noninteractive shells leave the prompt variable unset. Aliases and other commands in the .cshrc file that are only useful interactively, can be placed after the following test: `if ($?prompt == 0) exit', to reduce startup time for nonin- teractive shells. A ! in the prompt string is replaced by the current event number. The default prompt is hostname% for mere mortals, or hostname# for the privileged user. The setting of $prompt has three meanings: $prompt not set -- non-interactive shell, test $?prompt. $prompt set but == "" -- .cshrc called by the which(1) command. $prompt set and != "" -- normal interac- tive shell. savehist The number of lines from the history list that are saved in ~/.history when the user logs out. Large values for savehist slow down the C shell during startup. shell The file in which the C shell resides. This is used in forking shells to inter- pret files that have execute bits set, but that are not executable by the system. status The status returned by the most recent command. If that command terminated abnormally, 0200 is added to the status. Built-in commands that fail return exit status 1; all other built-in commands set status to 0. time Control automatic timing of commands. Can be supplied with one or two values. The first is the reporting threshold in CPU seconds. The second is a string of tags and text indicating which resources to report on. A tag is a percent sign (%) followed by a single upper-case letter (unrecognized tags print as text): %D Average amount of unshared data space used in Kilobytes. %E Elapsed (wallclock) time for the command. %F Page faults. %I Number of block input opera- tions. %K Average amount of unshared stack space used in Kilobytes. %M Maximum real memory used dur- ing execution of the process. %O Number of block output opera- tions. %P Total CPU time - U (user) plus S (system) - as a percentage of E (elapsed) time. %S Number of seconds of CPU time consumed by the kernel on behalf of the user's process. %U Number of seconds of CPU time devoted to the user's process. %W Number of swaps. %X Average amount of shared memory used in Kilobytes. The default summary display outputs from the %U, %S, %E, %P, %X, %D, %I, %O, %F, and %W tags, in that order. verbose Display each command after history substi- tution takes place. Large File Behavior See largefile(5) for the description of the behavior of csh when encountering files greater than or equal to 2 Gbyte (2**31 bytes). FILES ~/.cshrc Read at beginning of execution by each shell. ~/.login Read by login shells after .cshrc at login. ~/.logout Read by login shells at logout. ~/.history Saved history for use at next login. /usr/bin/sh The Bourne shell, for shell scripts not starting with a `#'. /tmp/sh* Temporary file for `<<'. /etc/passwd Source of home directories for `~name'. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: __________________________________ | ATTRIBUTE TYPE| ATTRIBUTE VALUE| |_______________|_________________| | Availability | SUNWcsu | | CSI | Enabled | |_______________|_________________| SEE ALSO bc(1), echo(1), login(1), ls(1), more(1), ps(1), sh(1), shell_builtins(1), tset(1B), which(1), df(1M), swap(1M), sysdef(1M), access(2), exec(2), fork(2), pipe(2), a.out(4), environ(4), ascii(5), attributes(5), environ(5), large- file(5), termio(7I) DIAGNOSTICS You have stopped jobs. You attempted to exit the C shell with stopped jobs under job control. An immediate second attempt to exit will succeed, terminating the stopped jobs. WARNINGS The use of setuid shell scripts is strongly discouraged. NOTES Words can be no longer than 1024 bytes. The system limits argument lists to 1,048,576 bytes. However, the maximum number of arguments to a command for which filename expan- sion applies is 1706. Command substitutions may expand to no more characters than are allowed in the argument list. To detect looping, the shell restricts the number of alias substitutions on a single line to 20. When a command is restarted from a stop, the shell prints the directory it started in if this is different from the current directory; this can be misleading (that is, wrong) as the job may have changed directories internally. Shell built-in functions are not stoppable/restartable. Command sequences of the form a ; b ; c are also not handled gracefully when stopping is attempted. If you suspend b, the shell never executes c. This is especially noticeable if the expansion results from an alias. It can be avoided by placing the sequence in parentheses to force it into a subshell. Control over terminal output after processes are started is primitive; use the Sun Window system if you need better out- put control. Commands within loops, prompted for by ?, are not placed in the history list. Control structures should be parsed rather than being recog- nized as built-in commands. This would allow control com- mands to be placed anywhere, to be combined with |, and to be used with & and ; metasyntax. It should be possible to use the : modifiers on the output of command substitutions. There are two problems with : modifier usage on variable substitutions: not all of the modifiers are available, and only one modifier per substitu- tion is allowed. The g (global) flag in history substitutions applies only to the first match in each word, rather than all matches in all words. The common text editors consistently do the latter when given the g flag in a substitution command. Quoting conventions are confusing. Overriding the escape character to force variable substitutions within double quotes is counterintuitive and inconsistent with the Bourne shell. Symbolic links can fool the shell. Setting the hardpaths variable alleviates this. It is up to the user to manually remove all duplicate path- names accrued from using built-in commands as set path = pathnames or setenv PATH pathnames more than once. These often occur because a shell script or a .cshrc file does something like `set path=(/usr/local /usr/hosts $path)' to ensure that the named directories are in the pathname list. The only way to direct the standard output and standard error separately is by invoking a subshell, as follows: example% (command > outfile) >& errorfile Although robust enough for general use, adventures into the esoteric periphery of the C shell may reveal unexpected quirks. If you start csh as a login shell and you do not have a .login in your home directory, then the csh reads in the /etc/.login. When the shell executes a shell script that attempts to exe- cute a non-existent command interpreter, the shell returns an erroneous diagnostic message that the shell script file does not exist. BUGS As of this writing, the time built-in command does NOT com- pute the last 6 fields of output, rendering the output to erroneously report the value "0" for these fields. example %time ls -R 9.0u 11.0s 3:32 10% 0+0k 0+0io 0pf+0w NAME:cut cut - cut out selected fields of each line of a file SYNOPSIS cut -b list [ -n ] [ file ... ] cut -c list [ file ... ] cut -f list [ -d delim ] [ -s ] [ file ... ] DESCRIPTION Use cut to cut out columns from a table or fields from each line of a file; in data base parlance, it implements the projection of a relation. The fields as specified by list can be fixed length, that is, character positions as on a punched card (-c option) or the length can vary from line to line and be marked with a field delimiter character like TAB (-f option). cut can be used as a filter. Either the -b, -c, or -f option must be specified. Use grep(1) to make horizontal ``cuts'' (by context) through a file, or paste(1) to put files together column-wise (that is, horizontally). To reorder columns in a table, use cut and paste. OPTIONS list A comma-separated or blank-character-separated list of integer field numbers (in increasing order), with optional - to indicate ranges (for instance, 1,4,7; 1-3,8; -5,10 (short for 1-5,10); or 3- (short for third through last field)). -b list The list following -b specifies byte positions (for instance, -b1-72 would pass the first 72 bytes of each line). When -b and -n are used together, list is adjusted so that no multi-byte character is split. If -b is used, the input line should contain 1023 bytes or less. -c list The list following -c specifies character posi- tions (for instance, -c1-72 would pass the first 72 characters of each line). -d delim The character following -d is the field delimiter (-f option only). Default is tab. Space or other characters with special meaning to the shell must be quoted. delim can be a multi-byte character. -f list The list following -f is a list of fields assumed to be separated in the file by a delimiter charac- ter (see -d ); for instance, -f1,7 copies the first and seventh field only. Lines with no field delimiters will be passed through intact (useful for table subheadings), unless -s is specified. If -f is used, the input line should contain 1023 characters or less. -n Do no