ast@cs.vu.nl (Andy Tanenbaum) (01/23/89)
#animals
Command: animals - twenty questions type guessing game about animals
Syntax: animals [database]
Flags: (none)
Example:
_A_n_i_m_a_l_s is a guessing game. The user picks an animal and the computer tries
to guess it by posing questions that should be answered by typing "y" for yes
and "n" for no. Whenever the computer loses, it asks some questions that allow
it to improve its data base, so as time goes on, it learns. The default data
base should be in /_u_s_r/_l_i_b/_a_n_i_m_a_l_s.
#ar
Command: ar - archiver
Syntax: ar [qrxdpmt][abivulc] [posname] archive file ...
Flags: (none)
Examples:
_A_r allows groups of files to be put together into a single archive. It is
normally used for libraries of compiled procedures. The following keys are
allowed: q: quickly append to the end of the archive file. m: move named
files. Ar expects 'a', 'b', or 'i' to be specified. r: replace (append when
not in archive). d: delete. Ar will delete the name members. t: print the
archive's table of contents. p: print the named files (list them on standard
output) x: extract
The keys may optionally concatencated with one or more of the following:
l: local temporary file for work instead of /tmp/ar.$$$$$ v: verbose
a: after 'posname' b: before 'posname' i: before 'posname' c: create
(suppresses creation message) u: replace only if dated later than member in
archive
#ascii
Command: ascii - strip all the pure ASCII lines from a file
Syntax: ascii [-n] [file]
Flags: -n Extract the lines containing nonASCII
characters
Examples:
Sometimes a file contains some nonASCII characters that are in the way. This
program allows the lines containing only ASCII characters to be grepped from the
file. With the -n flag, the nonASCII lines are grepped. No matter whether the
flag is used or not, the program returns an exit status of true if the file is
pure ASCII, and false otherwise.
1
2
#asld
Command: asld - assembler-loader
Syntax: asld [-d] [-s] [-o name] file ...
Flags: -L A listing is produced on standard output
-T Used to specify a directory for the tem-
porary file
-o Output goes to file named by next argu-
ment
-i Use separate I & D space (64K + 64K)
-s A symbol table is produced on standard
output
Examples:
_A_s_l_d is the MINIX assembler and loader combined. It accepts a language simi-
lar to that accepted by the PC-IX assembler. Symbols are made up of letters,
digits and underscores. The machine instructions and addressing modes are the
same as those used by PC-IX, except that modes using multiple registers are
written like this example: _m_o_v _a_x,(_b_x__s_i). Constant operands are denoted by a
number sign. Local labels are permitted in the usual UNIX style: the instruc-
tion _j_m_p _1_f jumps forward to the closest label _1:
The pseudoinstructions accepted by the assembler are listed below:
.align n Align to a multiple of _n bytes
.ascii strAssemble a string
.asciz strAssemble a zero-terminated string
.bss What follows goes in the bss segment
.byte n Assemble one or more bytes
.data What follows goes in the data segment
.define symExport _s_y_m from the file
.errnz n Force error if _n is nonzero
.even Align to an even address
.extern symDeclare _s_y_m external
.globl symSame as extern
.long n Assemble _n as a long
.org adr Set address within current segment
.short n Assemble _n as a short
.space n Skip _n bytes
.text What follows goes in the text segment
.word n Assemble _n as a word
.zerow n Assemble _n words of zeros
In the above pseudoinstructions, _a_d_r is an expression yielding a machine
address, _n is a numeric expression, _s_t_r is a quoted string, and _s_y_m is a symbol.
The library /_u_s_r/_l_i_b/_l_i_b_c._a is a packed archive of assembly code. To see some
examples of it, extract some files from the archive with _a_r and then use the
filter _l_i_b_u_p_a_c_k to convert them to readable ASCII.
MINIX does not use ._o files. Compiler output is packed assembly language, as
are the modules in an archive. This scheme requires reassembling archive
3
modules all the time, but it saves precious diskette space.
#ast
Command: ast - add symbol table to executable file
Syntax: ast [-xX] [file] [symbol_file]
Flags: -x Do not preserve local symbols
-X preserve
Example:
_A_s_t adds the symbol table produced by the -s option of asld to the
executable file. If no symbol table file is listed, the default
name 'symbol.out' is used. The symbol table can be generated by the command
cc -s file.c >symbol.out.
#at
Command: at - execute commands at a later time
Syntax: at time [month day] [file]
Flags: (none)
Examples:
_A_t prepares a file to be executed later at the specified time by creating a
special entry in /_u_s_r/_s_p_o_o_l/_a_t. The program _a_t_r_u_n should be started periodi-
cally, for example, every minute by cron. _A_t_r_u_n checks to see if any files in
/usr/spool/at should now be run, and if so, it runs them and then puts them in
/usr/spool/at/past. The name of the file created in /usr/spool/at by at is
YY.DDD.HHMM.UU (where YY, DDD, HH, and MM give the time to execute and UU is a
unique number). Note that when the command runs, it will not be able to use
standard input or standard output unless specifically redirected. In the first
example above, it might be necessary to put >/_d_e_v/_t_t_y_0 on some lines in the
shell script myfile. The same holds for the commands typed directly to _a_t.
#badblocks
Command: badblocks - put a list of bad blocks in a file
Syntax: badblocks block_special
Flags: (none)
Example:
If a device develops bad sectors, it is important to not have them allocated
to important files. This program makes it possible to collect up to 7 bad
blocks into a file, so they will not be allocated for a "real" file. When the
program starts up, it asks for a list of bad blocks. Then it creates a file
whose name is of the form .Bad_xxxxx, where xxxxx is a pid.
4
#banner
Command: banner - print a banner
Syntax: banner arg ...
Flags: (none)
Example:
_B_a_n_n_e_r prints its arguments on standard output using a matrix of 6 x 6 pixels
per character. The @ sign is used for the pixels.
#basename
Command: basename - strip off file prefixes and suffixes
Syntax: basename file [suffix]
Flags: (none)
Examples:
The initial directory names (if any) are removed yielding the name of the
file itself. If a second argument is present, it is interpreted as a suffix and
is also stripped, if present. This program is primarily used in shell scripts.
#cal
Command: cal - print a calendar
Syntax: cal [month] year
Flags: (none)
Example:
_C_a_l prints a calendar for a month or year. The year can be between 1 and
9999. Note that the year 87 is not a synonym for 1987, but is itself a valid
year about 19 centuries ago. The calendar produced is the one used by England
and her colonies. Try Sept. 1752, Feb 1900, and Feb 2000. If you don't under-
stand what is going on, look up "Calendar, Gregorian" in a good encyclopedia.
#cat
Command: cat - concatenate files and write them to standard output
Syntax: cat [-u] file ...
Flags: -u Unbuffered output
Examples:
_C_a_t concatenates its input files and copies the result to standard output.
If no input file is named, or - is encountered as a file name, standard input is
used. Output is buffered in 512 byte blocks unless the -u flag is given.
5
#cc
Command: cc - C compiler
Syntax: cc [option] ... file ...
Flags: -D The flag -D_x=_y defines a macro _x with
value _y
-F Use a file instead of a pipe for prepro-
cessor output
-I -I_d_i_r searches _d_i_r for include files
-LIB Produce a library module
-R Complain about all non Kernighan &
Ritchie code
-S Produce an assembly code file, then stop
-T The flag -T_d_i_r tells _c_e_m to use _d_i_r for
temporary files
-U Undefine a macro
-c Compile only. Do not link. (Same as -S)
-i Use separate I & D space (64K + 64K)
-o Put output on file named by next arg
-v Verbose. Print pass names
-w Suppress warning messages
Examples:
This is the C compiler. It has five passes, as follows:
_P_r_o_g_r_a_m _I_n_p_u_t _O_u_t_p_u_t _O_p_e_r_a_t_i_o_n _p_e_r_f_o_r_m_e_d
/lib/cpp
/lib/cem prog.i prog.k Parsing and semantic analysis
/usr/lib/opt prog.k prog.mOptimization of the intermediate code
/usr/lib/cg prog.m prog.s Code generation
/usr/lib/asld prog.s a.outAssembly and linking
The main program, _c_c, forks appropriately to call the passes, transmitting flags
and arguments. The -v flag causes the passes to be listed as they are called.
The -c or -S flags stop compilation when _c_g has produced an assembly code
file (in packed format) because the current assembler-loader expects that (see
under File Formats later in this appendix). The libraries are also archives of
packed assembly code files, except that defined symbols must be declared by
._d_e_f_i_n_e statements at the beginning. To make modules for inclusion in the
library, use the -c and -LIB options. There is no way to get ._o files; the
packed assembly language files are used as a substitute. They can be unpacked
with the filter _l_i_b_u_p_a_c_k.
The -R flag gives warnings about all constructions not permitted by official
Kernighan and Ritchie C. The average garden-variety C program that has been
flawlessly acceptedly by most C compilers contains surprisingly many illegal
constructions. Try it.
The compiler normally keeps _c_p_p and _c_e_m in memory at the same time,
6
transferring the output of _c_p_p to _c_e_m using a pipe. However, if there is insuf-
ficient memory available to hold both at once, the -F flag can be given to cause
these two passes to be run strictly sequentially, with the preprocessor output
being stored on a file in /_t_m_p (unless -T is used). When available memory is
very limited (e.g., a 512K machine), it may be necessary to run _c_h_m_e_m to reduce
the sizes of the compiler passes that do not fit, typically _c_e_m.
The other passes, especially _a_s_l_d, can create large temporary files in /_t_m_p.
To compile very large programs, first type
cc -c *.c
to get ._s files. Then remove /_l_i_b/_c_p_p and /_l_i_b/_c_e_m and possibly other files
from the RAM disk to make more space for /_t_m_p. Finally, type
cc *.s
which results in
asld /usr/lib/crtso.s *.s /usr/lib/libc.a /usr/lib/end.s
to produce the _a._o_u_t file. The files removed from the RAM disk can be restored
by mounting the root file system and copying them from there, or the system can
be shut down and rebooted.
If the compiler (or, in fact, almost any program) begins acting strange, it
is almost always due to its running out of space, either stack space or scratch
file space. The relevant pass can be given more stack space using _c_h_m_e_m. More
space for scratch files can be obtained by removing other files on the device.
The compiler is derived from the ACK system (Tanenbaum et al., 1983), not
from the AT&T portable C compiler. It has been shoehorned onto the PC with some
loss of performance.
#cdiff
Command: cdiff - context diff
Syntax: cdiff [-c] old new
Flags: -cN how much context to provide
Example:
Cdiff\fIfR produces a context diff by first running 'diff' and then adding
context. Some update programs, like patch, can use context diffs to update
files, even in the presence of other, independent changes.
#cgrep
Command: cgrep - grep and display context
Syntax: cgrep [-a n] [-b n] [-l n] [-w n] pattern [file] ...
7
Flags: -a How many lines to display after the
matching line
-b How many lines to display before the
matching line
-f Suppress file name in the output
-l Lines are truncated to this length
before comparison
-n Suppress line numbers in the output
-w Sets window size (same as -a n -b n)
Example:
_C_g_r_e_p _i_s _a _p_r_o_g_r_a_m _l_i_k_e _g_r_e_p, _e_x_c_e_p_t _t_h_a_t _i_t _a_l_s_o _c_a_n _p_r_i_n_t _a _f_e_w _l_i_n_e_s _a_b_o_v_e
_a_n_d/_o_r _b_e_l_o_w _t_h_e _m_a_t_c_h_i_n_g _l_i_n_e_s. _I_t _a_l_s_o _p_r_i_n_t_s _t_h_e _l_i_n_e _n_u_m_b_e_r_s _o_f _t_h_e _o_u_t_p_u_t.
#_c_h_g_r_p
Command: chgrp - change group
Syntax: chgrp group file ...
Flags: (none)
Example:
The group field of the named files is changed to _g_r_o_u_p. Alternatively, a
decimal gid may be specified instead of a user name. Only the super-user may
execute this command.
#chmem
Command: chmem - change memory allocation
Syntax: chmem [+] [-] [=] amount file ...
Flags: (none)
Examples:
When a program is loaded into memory, it is allocated enough memory for the
text and data+bss segments, plus an area for the stack. Data segment growth
using _m_a_l_l_o_c, _b_r_k, or _s_b_r_k eats up stack space from the low end. The amount of
stack space to allocate is derived from a field in the executable program's file
header. If the combined stack and data segment growth exceeds the stack space
allocated, the program will be terminated.
It is therefore important to set the amount of stack space carefully. If too
little is provided, the program may crash. If too much is provided, memory will
be wasted, and fewer programs will be able to fit in memory and run simultane-
ously. MINIX does not swap, so that when memory is full, subsequent attempts to
fork will fail. The compiler sets the stack space to the largest possible value
(64K - text - data). For many programs, this value is far too large. Nonrecur-
sive programs that do not call _b_r_k, _s_b_r_k, or _m_a_l_l_o_c, and do not have any local
arrays usually do not need more than 1K of stack space.
8
The _c_h_m_e_m command changes the value of the header field that determines the
stack allocation, and thus indirectly the total memory required to run the pro-
gram. The = option sets the stack size to a specific value; the + and - options
increment and decrement the current value by the indicated amount. The old and
new stack sizes are printed.
#chmod
Command: chmod - change access mode for files
Syntax: chmod octal-number files
chmod [augo][+-=][rwxst] files
Flags: (none)
Examples:
The given mode is applied to each file in the file list. The mode can be
either absolute or symbolic. Absolute modes are given as an octal number that
represents the new file mode. The mode bits are defined as follows: 4000
Set effective user id on execution to file's owner id 2000 Set effective
group id on execution to file's group id 0400 file is readable by the owner
of the file 0200 writeable by owner 0100 executable by owner 0070
same as above, for other users in the same group 0007 same as above, for
all other users
Symbolic modes modify the current file mode in a specified way. They take the
form: [who] op permissions { op permissions } The possibilities for [who] are
'u', 'g', 'o', and 'a'; standing for user, group, other and all, respectively.
If who is omitted, 'a' is assumed, but the current umask is used. The op can be
'+', '-', or '='; '+' turns on the given permissions, '-' turns them off; '='
sets the permissions exclusively for the given who. For example 'g=x' sets the
group permissions to '--x'.
The possible permissions are 'r', 'w', 'x'; which stand for read, write, and
execute; 's' turns on the set effective user/group id bits. 'u', other permis-
sion bits, respectively. Only one of these may be used at a time. Multiple
symbolic modes may be specified, separated by commas.
#chown
Command: chown - change owner
Syntax: chown user file ...
Flags: (none)
Example:
The owner field of the named files is changed to _u_s_e_r (i.e., login name
specified). Alternatively, a decimal uid may be specified instead of a user
9
name. Only the super-user may execute this command.
#clr
Command: clr - clear the screen
Syntax: clr
Flags: (none)
Example:
The screen is cleared to blanks.
#cmp
Command: cmp - compare two files
Syntax: cmp [-ls] file1 file2
Flags: -l Loud mode. Print bytes that differ (in
octal)
-s Silent mode. Print nothing, just return
exit status
Examples:
Two files are compared. If they are identical, exit status 0 is returned.
If they differ, exit status 1 is returned. If the files cannot be opened, exit
status 2 is returned. If _f_i_l_e_1 is - , standard input is compared to _f_i_l_e_2.
#comm
Command: comm - print lines common to two sorted files
Syntax: comm [-123] file1 file2
Flags: -1 Suppress column 1 (lines only in _f_i_l_e_1)
-2 Suppress column 2 (lines only in _f_i_l_e_2)
-3 Suppress column 3 (lines in both files)
Examples:
Two sorted files are read and compared. A three column listing is produced.
Files only in _f_i_l_e_1 are in column 1; files only in _f_i_l_e_2 are in column 2; files
common to both files are in column 3. The file name - means standard input.
#compress
Command: compress - compress a file using modified Lempel-Ziv coding
Syntax: compress [-cdfv] [file] ...
Flags: -c Put output on standard output instead of
on file.Z
-d Decompress instead of compress
10
-f Force output even if there is no saving
-v Verbose mode
Examples:
The listed files (or standard input, if none are given) are compressed using
the Ziv-Lempel algorithm. If the output is smaller than the input, the output
is put on _f_i_l_e._Z or standard output if no files are listed. If _c_o_m_p_r_e_s_s is
linked to _u_n_c_o_m_p_r_e_s_s, the latter is the same as giving the -d flag. Similarly,
a link to _z_c_a_t decompresses to standard output.
#cp
Command: cp - copy file
Syntax: cp file1 file2
cp file ... directory
Flags: (none)
Examples:
_C_p copies one file to another, or copies one or more files to a directory. A
file cannot be copied to itself.
#cpdir
Command: cpdir - copy a directory and its subdirectories
Syntax: cpdir [-v] srcdir destdir
Flags: -v Verbose; cpdir tells what it is doing
Example:
_C_p_d_i_r creates the target directory, goes into it, and copies all the files in
the source directory to it. When it is done, the target directory contains the
same files as the source directory. Subdirectories are copied Recursively.
Links and special files are ignored.
#crc
Command: crc - print the checksum of the file data
Syntax: crc
Flags: (none)
Example:
The checksum of each argument is computed and printed, along with the file
length and its name, one file per lie. This program is useful for seeing if a
file transmitted to another machine has arrived correctly. It is conceptually
similar to _s_u_m, except that it uses a strong checksum algorithm and also prints
the length.
11
#cron
Command: cron - clock daemon
Syntax: cron
Flags: (none)
Example:
_C_r_o_n is clock daemon. It is typically started up by including the command
/usr/bin/cron in the /etc/rc file. Once started, cron puts itself in the back-
ground, so no & is needed. It runs forever, sleeping most of the time. Once a
minute it wakes up and examines /usr/lib/crontab to see if there is any work to
do. If there is, the work is done. The entries of /usr/lib/crontab contain 6
elements each. Some examples follow:
min hr dat mo daycommand * * * * * /usr/bin/date
>/dev/tty0
#print
Mon-Fri at 0430 30 19 * * 1,3,5 /etc/backup /dev/fd1
#Mon,
>/dev/tty0
#date
Command: date - print or set the date and time
Syntax: date [[MMDDYY]hhmm[ss]]
Flags: -q Read the date from standard input
Examples:
Without an argument, _d_a_t_e prints the current date and time. With an argu-
ment, it sets the date and time. _M_M_D_D_Y_Y refers to the month, day, and year;
_h_h_m_m_s_s refers to the hour, minute and second. Each of the six fields must be
two digits.
#dd
Command: dd - disk dumper
Syntax: dd [option = value] ...
Flags: (none)
Examples:
This command is intended for copying partial files. The block size, skip
count, and number of blocks to copy can be specified. The options are:
if = file - Input file (default is standard input)
of = file - Output file (default is standard output)
ibs = n - Input block size (default 512 bytes)
obs = n - Output block size (default is 512 bytes)
bs = n - Block size; sets _i_b_s and _o_b_s (default is 512 bytes)
skip = n - Skip _n input blocks before reading
12
seek = n - Skip _n output blocks before writing
count = n - Copy only _n input blocks
conv = lcase - Convert upper case letters to lower case
conv = ucase - Convert lower case letters to upper case
conv = swab - Swap every pair of bytes
conv = noerror- Ignore errors and just keep going
Where sizes are expected, they are in bytes. However, the letters w, b, or k
may be appended to the number to indicate words (2 bytes), blocks (512 bytes),
or K (1024 bytes), respectively. When _d_d is finished, it reports the number of
full and partial blocks read and written.
#df
Command: df - report on free disk space and i-nodes
Syntax: df special ...
Flags: (none)
Examples:
The amount of disk space and number of i-nodes, both free and used is
reported.
#diff
Command: diff - print differences between two files
Syntax: diff file1 file2
Flags: (none)
Example:
_D_i_f_f compares two files and generates a list of lines telling how the two
files differ. Lines may not be longer than 128 characters.
#dis88
Command: dis88 - disassembler
Syntax: dis88 [-o] infile [outfile]
Flags: -o List the object code along with the
assembly code
Examples:
_D_i_s_8_8 is a disassembler. It takes an executable file and prints the symbolic
assembly code that corresponds to it. If the executable file contains a symbol
table (added by the program ast), the symbol table information is used to give a
more readable asembly listing.
13
#diskcheck
Command: diskcheck - check a disk for bad sectors
Syntax: diskcheck device start count
Flags: (none)
Examples:
_D_i_s_k_c_h_e_c_k checks a disk for bad sectors by reading in each sector, writing a
known bit pattern onto it, reading it back in and comparing with what was writ-
ten. This check is then done a second time. Bad sectors are reported. After
each sector is tested, the original sector is restored.
#dosdir
Command: dosdir - list an MS-DOS diskette directory
Syntax: dosdir [-lr] drive
Flags: -l Long listing
-r Recursively descend and print subdirec-
tories
Examples:
_D_o_s_d_i_r reads standard IBM PC diskettes or hard disk partitions in MS-DOS for-
mat and lists their contents on standard output. Directory names should contain
slashes to separate components, even though MS-DOS uses backslashes. The names
_d_o_s_d_i_r, _d_o_s_r_e_a_d, and _d_o_s_w_r_i_t_e are all links to the same program. The program
sees which function to perform by seeing how it was called. The letters _a, and
_b can be used as synonyms for 0 and 1 for floppies. The letters _c through _f are
for hard disk partitions.
#dosread
Command: dosread - read a file from an MS-DOS diskette
Syntax: dosread
Flags: -a ASCII file
Examples:
_D_o_s_r_e_a_d reads one file from an MS-DOS diskette and writes it on standard out-
put. The file name should use slash, not backslash as a separator. ASCII files
have the final CTRL-Z stripped, and carriage return plus line feed are mapped to
line feed only, the usual MINIX convention.
#doswrite
Command: doswrite - write a file onto an MS-DOS diskette
Syntax: doswrite [-a] drive file
Flags: -a ASCII file
Examples:
14
_D_o_s_w_r_i_t_e writes its standard input to an MS-DOS diskette. The diskette must
be formatted and have an MS-DOS file system already in place, including all the
directories leading up to the file.
#du
Command: du - print disk usage
Syntax: du [-s] dir
Flags: -s Summary only
Example:
_D_u examines a directory and prints the amount of space occupied by the files
in that directory and its subdirectories.
#echo
Command: echo - print the arguments
Syntax: echo [-n] argument ...
Flags: -n No line feed is output when done
Examples:
_E_c_h_o writes its arguments to standard output. They are separated by blanks
and terminated with a line feed unless -n is present. This command is used
mostly in shell scripts.
#ed
Command: ed - editor
Syntax: ed file
Flags: (none)
Example:
_E_d is functionally equivalent to the standard V7 editor, ed. It supports the
following commands:
(.) a: append (.,.)c: change (.,.)d: delete e: edit new
file" f: print name of edited file" (1,$)g: global command
(.) i: insert (.,.+1)j: join lines together (.) k: mark
(.) l: print with special characters in octal (.,.)m: move
(.,.)p: print q: quit editor" (.) r: read in new file
(.,.)s: substitute (1,$)v: like g, except select lines that do not
match (1,$)w: write out edited file
Many of the commands can take one or two addresses, as indicated above. The
defaults are shown in parentheses. Thus 'a' appends to the current line, and g
works on the whole file as default. The dot refers to the current line. Below
15
is
through
Replace
#elle
Command: elle - ELLE Looks Like Emacs
Syntax: elle file [file2]
Flags: (none)
Example:
_E_l_l_e is a screen-oriented editor that is patterned after Emacs. It can edit
multiple files, regardless of their length, can support 1 or 2 windows, and has
many other powerful features. An _e_l_l_e manual is present in the _d_o_c directory.
#expr
Command: expr - evaluate experession
Syntax: expr arg ...
Flags: (none)
Example:
_E_x_p_r computes the value of its argument and writes the result on standard
output. The valid operators, in order of increasing precedence, are listed
below. Operators grouped by {...} have the same precedence. Operators: |, &,
{<, <=, ==, !=, >=, >}, {+, -}, *.
Note that the V7 ":" operator is missing. Parentheses are permitted.
#factor
Command: factor - factor an integer less than 2**31
Syntax: factor number
Flags: (none)
Example:
_F_a_c_t_o_r prints the prime factors of its argument in increasing order. Each
factor is printed as many times as it appears in the number.
#fdisk
Command: fdisk - partition a hard disk
Syntax: fdisk file
Flags: (none)
Example:
16
When _f_d_i_s_k starts up, it reads in the partition table and displays it. It
then presents a menu to allow the user to modify partitions, store the partition
table on a file, or load it from a file. Partitions can be marked as DOS or
non-DOS, and active or not. MINIX doesn't care what kind of a partition it
uses. Using _f_d_i_s_k is self-explanatory. However, be aware that repartitioning a
disk may cause information on it to be lost. Rebooting the system is mandatory
after changing partition sizes. MINIX, XENIX, PC-IX, and MS-DOS all have dif-
ferent ideas about how partitions are numbered.
#fgrep
Command: fgrep - fast grep
Syntax: fgrep [-cfhlnsv] [file] [string] [file] ...
Flags: -c Count matching lines and only print
count, not the lines
-f Take strings from file named in follow-
ing argument
-h Omit file headers from printout
-l List file names once only
-n Each line is preceded by its line number
-s Status only, no output
-v Print only lines not matching
Examples:
_F_g_r_e_p is essentially the same as grep, except that it only searches for lines
containing literal strings (no wildcard characters), and it is much faster.
#file
Command: file - make a guess as to a file's type based on contents
Syntax: file name ...
Flags: (none)
Example:
_F_i_l_e reads the first block of a file and tries to make an intelligent guess
about what kind of file it is. It understands about archives, C source programs,
executable binaries, shell scripts, and English text.
#find
Command: find - find files meeting a given condition
Syntax: find directory expression
Flags: (none)
Examples:
17
_F_i_n_d descends the file tree starting at the given directory checking each
file in that directory and its subdirectories against a predicate. If the
predicate is true, an action is taken. The predicates may be connected by -a
(Boolean and), -o (Boolean or) and ! (Boolean negation). Each predicate is true
under the conditions specified below. The integer n may also be +n to mean any
value greater than n, -n to mean any value less than n, or just n for exactly n.
-name s true if current filename is s (include shell wild cards) -size
n true if file size is n blocks -inum n true if the current file's i-node
number is n -mtime ntrue if modification time relative to today (in days) is n
-links ntrue if the number of links to the file is n -newer ftrue if the
file is newer than f -perm n true if the file's permission bits = n (n is in
octal) -user u true if the uid = u (a numerical value, not a login name) -
grogp gtrue if the gid = g (a numerical value, not a group name) -type x where
x is bcdfug (block, char, dir, regular, setuid, setgid)
Following the expression can be one of the following, telling what to do when a
file is found: -print print the file name on standard output -
exec execute a MINIX command, {} stands for the file name -ok prompts
before executing the command
#fix
Command: fix - generate new file from old one and diff listing
Syntax: fix oldfile difflist >newfile
Flags: (none)
Example:
_F_i_x accepts a diff listing produced by diff and reconstructs the new file.
It is common for people to take a file, modify it, and then send the diff list-
ing between the old and new files to other people. Using _f_i_x, the old file, and
the diff listing, it is possible to creat the new file. For example:
diff oldfile newfile >difflist
fix oldfile difflist >new2[TGive
will generate a file _n_e_w_2 that is identical to _n_e_w_f_i_l_e. A more sophisticated
alternative to _f_i_x is _p_a_t_c_h.
#fortune
Command: fortune - print a fortune
Syntax: fortune
Flags: (none)
Example:
_F_o_r_t_u_n_e picks a fortune at random from the fortunes file,
/_u_s_r/_l_i_b/_f_o_r_t_u_n_e._d_a_t, and prints it. This file consists of pieces of text
separated by a line containing only %%.
18
#from
Command: from - input half of a connection
Syntax: from port
Flags: (none)
Examples:
To and from are used together to provide connection-oriented service. On the
sending machine, the last member of a pipeline is '_t_o port'. On the receiving
machine, the first member of a pipe line is '_f_r_o_m port'. The net result is that
the output of the sending pipeline goes into the input of the receiving pipe-
line, making pipelines work across the network.
#fsck
Command: fsck - perform file system consistency check
Syntax: fsck [-aclmrs] [device] ...
Flags: -a Automatically repair inconsistencies
-c Check and list only the specified i-
nodes
-l List the files and directories in the
filesytem
-m Make a new file system
-r Prompt user for repairs if inconsisten-
cies are found
-s List the superblock of the file system
Examples:
_F_s_c_k performs consistency checks on the file systems which reside on the
specified devices. It may also be used to list the contents of a file system or
to make a new file system. _F_s_c_k can be run from the initial menu and during nor-
mal production. The number of heads and sectors/track are built in to the pro-
gram (4 and 17, respectively). To change these, modify the code and recompile.
If they are set wrong, _f_s_c_k will give absurd errors.
#getlf
Command: getlf - wait until a line has been typed
Syntax: getlf [argument]
Flags: (none)
Example:
In shell scripts it is sometimes necessary to pause to give the user a chance
to perform some action, such as inserting a diskette. This command prints its
argument, if any, and then waits until a carriage return has been typed, at
which time it terminates. It is used in /_e_t_c/_r_c.
19
#grep
Command: grep - search a file for lines containing a given pattern
Syntax: grep [-ensv] pattern [file] ...
Flags: -e -e _p_a_t_t_e_r_n is the same as _p_a_t_t_e_r_n
-n Print line numbers
-s Status only, no printed output
-v Select lines that do not match
Examples:
_G_r_e_p searches one or more files (by default, standard input) and selects out
all the lines that match the pattern. All the regular expressions accepted by
_m_i_n_e_d are allowed. In addition, + can be used instead of * to mean 1 or more
occurrences, ? can be used to mean 0 or 1 occurrences, and | can be used between
two regular expressions to mean either one of them. Parentheses can be used for
grouping. If a match is found, exit status 0 is returned. If no match is
found, exit status 1 is returned. If an error is detected, exit status 2 is
returned.
#gres
Command: gres - grep and substitute
Syntax: gres [-g] pattern string [file] ...
Flags: -g Only change the first occurrence per
line
Examples:
_G_r_e_s is a poor man's _s_e_d. It looks for the same patterns as _g_r_e_p, and
replaces each one by the given string.
#head
Command: head - print the first few lines of a file
Syntax: head [-n] [file] ...
Flags: -_n How many lines to print
Examples:
The first few lines of one or more files are printed. The default count is
10 lines. The default file is standard input.
#help
Command: help - give help about a command
Syntax: help [name]
Flags: (none)
Example:
20
_H_e_l_p gives help about a given command name (or help itself, if none is speci-
fied). It gets its information from /_u_s_r/_l_i_b/_h_e_l_p_f_i_l_e, which should be linked
to _d_o_c/_m_a_n__p_a_g_e_s. To improve performance, it builds an index file,
/_u_s_r/_l_i_b/_h_e_l_p_f_i_l_e._i_d_x, which is updated when it is observed to be older than
/_u_s_r/_l_i_b/_h_e_l_p_f_i_l_e.
helpfile contains all the manual pages not present in the book.
#id
Command: id - print user's identity
Syntax: id
Flags: (none)
Example:
_I_d prints the current user's uid and gid, both numerically and symbolically
using the information from /_e_t_c/_p_a_s_s_w_d and _e_t_c/_g_r_o_u_p.
#inodes
Command: inodes - print i-node information
Syntax: inodes
Flags: (none)
Example:
_I_n_o_d_e_s expects a list of file names on _s_t_d_i_n, one file name per line. For
each file named, the file type, mode, uid, gid, length, checksum, and and name
is printed. The checksum algorithm is the same as used by _c_r_c.
#kill
Command: kill - send a signal to a process
Syntax: kill [-signal] process
Flags: (none)
Examples:
A signal is sent to a given process. By default signal 15 (SIGTERM) is sent.
Process 0 means all the processes in the sender's process group.
#leave
Command: leave - warn when it is time to go home
Syntax: leave [ [+] hh[:]mm]
Flags: (none)
Examples:
21
_L_e_a_v_e sets an alarm clock to a specified time and issues a warning 5 minutes
before, 1 minute before, and at the time to leave. It then keeps issuing warn-
ings every minute for 10 minutes, then quits. If no time is provided, the pro-
gram prompts for one.
#libpack
Command: libpack - pack an ASCII assembly code file
Syntax: libpack
Flags: (none)
Example:
This program is a filter that reads an ASCII assembly code file from standard
input and writes the corresponding packed file on standard output. The compiler
libraries are archives of packed assembly code files.
#libupack
Command: libupack - convert a packed assembly code file to ASCII
Syntax: libupack
Flags: (none)
Example:
This program is a filter that reads a packed assembly code file from standard
input and writes the corresponding ASCII file on standard output.
#ln
Command: ln - create a link to a file
Syntax: ln file [name]
Flags: (none)
Examples:
A directory entry is created for _n_a_m_e. The entry points to _f_i_l_e. Hen-
ceforth, _n_a_m_e and _f_i_l_e can be used interchangeably. If _n_a_m_e is not supplied,
the last component of _f_i_l_e is used as the link name.
#login
Command: login - log into the computer
Syntax: login [user]
Flags: (none)
Example:
22
_L_o_g_i_n allows a logged in user to login as someone else without first logging
out. If a password is needed, _l_o_g_i_n will prompt for it.
#look
Command: look - look up words in dictionary
Syntax: look [-f] prefix[/suffix] [dictionary]
Flags: -f Fold upper case letters to lower case
Examples:
_L_o_o_k takes a prefix and/or suffix and searches /_u_s_r/_l_i_b/_d_i_c_t_i_o_n_a_r_y or the
specified dictionary for all words with that match. The words are printed. The
-f flag causes all upper case letters to be treated as lower case.
#lorder
Command: lorder - compute the order for library modules
Syntax: lorder file ...
Flags: (none)
Example:
_L_o_r_d_e_r accepts a series of packed or unpacked .s files and libraries, and
produces a partial ordering suitable for processing by _t_s_o_r_t.
#lpr
Command: lpr - copy a file to the line printer
Syntax: lpr [file] ...
Flags: (none)
Examples:
Each argument is interpreted as a file to be printed. _L_p_r copies each file
to /_d_e_v/_l_p, without spooling. It inserts carriage returns and expands tabs.
Only one _l_p_r at a time may be running.
#ls
Command: ls - list the contents of a directory
Syntax: ls [-adfgilrst] name ...
Flags: -a All entries are listed, even . and ..
-d Do not list contents of directories
-f List argument as unsorted directory
-g Group id given instead of user id
-i I-node number printed in first column
23
-l Long listing: mode, links, owner, size
and time
-r Reverse the sort order
-s Give size in blocks (including indirect
blocks)
-t Sort by time, latest first
Examples:
For each file argument, list it. For each directory argument, list its con-
tents, unless -d is present. When no argument is present, the working directory
is listed.
#make
Command: make - a program for maintaining large programs
Syntax: make [-f file] [-ikns] [option] ... [target]
Flags: -f Use _f_i_l_e as the makefile
-i Ignore status returned by commands
-k Kill branch on error
-n Report, but do not execute
-s Silent mode
Examples:
_M_a_k_e is a program that is normally used for developing large programs con-
sisting of multiple files. It keeps track of which object files depend on which
source and header files. When called, it does the minimum amount of recompila-
tion to bring the target file up to date.
The file dependencies are expected in _m_a_k_e_f_i_l_e or _M_a_k_e_f_i_l_e, unless another
file is specified with -f. _M_a_k_e has some default rules built in, for example,
it knows how to make ._s files from ._c files. Here is a sample _m_a_k_e_f_i_l_e.
A complete description of _m_a_k_e would require too much space here. For more
information, see Feldman (1979). Many books on UNIX also discuss _m_a_k_e.
#master
Command: master - control the creation of shervers
Syntax: master count uid gid command
Flags: (none)
Example:
24
If a machine is intended to be used as a server, its /_e_t_c/_r_c file should have
a command similar to the example above. When the system is booted, _m_a_s_t_e_r runs
and forks off the required number of shervers (shell servers), up to a maximum
of four. They run with the indicated uid and gid, and listen to the indicated
port. When an _r_s_h is done on a client machine, the command is given to one of
the shervers for execution. When the sherver is done, it exits, _m_a_s_t_e_r, which
is always running, sees this, and creates a new sherver. Thus _m_a_s_t_e_r is very
similar to _i_n_i_t, only it makes new shervers (usually) instead of new _l_o_g_i_n pro-
grams. _M_a_s_t_e_r must run as root to be able to do setuid and setgid.
#mined
Command: mined - MINIX editor
Syntax: mined [file]
Flags: (none)
Examples:
_M_i_n_e_d (pronounced min-ed) is a simple full-screen editor. When editing a
file, it holds the file in memory, thus speeding up editing, but limiting the
editor to files of up to about 43K. Larger files must first be cut into pieces
by _s_p_l_i_t. Lines may be arbitrarily long. Output from a command may be piped
into _m_i_n_e_d so it can be viewed without scrolling off the screen.
At any instant, a window of 24 lines is visible on the screen. The current
position in the file is shown by the cursor. Ordinary characters typed in are
inserted at the cursor. Control characters and keys on the numeric keypad (at
the right-hand side of the keyboard) are used to move the cursor and perform
other functions.
Commands exist to move forward and backward a word, and delete words. A word
in this context is a sequence of characters delimited on both ends by white
space (space, tab, line feed, start of file, or end of file). The commands for
deleting characters and words also work on line feeds, making it possible to
join two consecutive lines by deleting the line feed between them.
The editor maintains one save buffer (not displayed). Commands are present
to move text from the file to the buffer, from the buffer to the file, and to
write the buffer onto a new file. If the edited text cannot be written out due
to a full disk, it may still be possible to copy the whole text to the save
buffer and then write it to a different file on a different disk with CTRL-Q.
It may also be possible to escape from the editor with CTRL-S and remove some
files.
Some of the commands prompt for arguments (file names, search patterns,
etc.). All commands that might result in loss of the file being edited prompt
to ask for confirmation.
A key (command or ordinary character) can be repeated _n times by typing _E_S_C _n
_k_e_y where _E_S_C is the ``escape'' key.
25
Forward and backward searching requires a regular expression as the search
pattern. Regular expressions follow the same rules as in the UNIX editor, _e_d:
1. Any displayable character matches itself.
2. . (period) matches any character except line feed.
3. ^ (circumflex) matches the start of the line.
4. $ (dollar sign) matches the end of the line.
5. \c matches the character _c (including period, circumflex, etc).
6. [string] matches any of the characters in the string.
7. [^string] matches any of the characters except those in the string.
8. [x-y] matches any characters between _x and _y (e.g., [a-z]).
9. Pattern* matches any number of occurrences of _p_a_t_t_e_r_n.
Some examples of regular expressions are:
The boy matches the string ``The boy''
^$ matches any empty line.
^A.*\.$ matches any line starting with an _A, ending with a period.
^[A-Z]*$matches any line containing only capital letters (or empty).
[A-Z0-9]matches any line containing either a capital letter or a digit.
Control characters cannot be entered into a file simply by typing them
because all of them are editor commands. To enter a control character, depress
the ALT key, and then while holding it down, hit the ESC key. Release both ALT
and ESC and type the control character. Control characters are displayed in
reverse video.
The _m_i_n_e_d commands are as follows.
CURSOR MOTION
arrows Move the cursor in the indicated direction
CTRL-A Move cursor to start of current line
CTRL-Z Move cursor to end of current line
CTRL-^ Move cursor to top of screen
CTRL-_ Move cursor to end of screen
CTRL-F Move cursor forward to start of next word