Please note that in order to view this page properly, you must use a Web browser which supports tables. For instance, Netscape V1.1 (or better) or Mosaic V2.6 for UNIX (or better).
Unix is a multi-user, multi-tasking operating system that has become a standard on workstations, mainframes and supercomputers. This page provides only an overview of Unix. If you are new to Unix, you should buy a Unix text to help you learn Unix. A list of Unix and Unix related books is available.
If you work on the Goddard campus, you should consider taking introductory Unix courses at the Goddard Learning Center.
Note that there are several flavors of Unix that run on different computers. These include AT&T System V, BSD (Berkeley Software Distribution), and SunOS. This page is geared towards the Unix which runs on the Cray, UNICOS, which is a System V version of Unix with BSD extensions, as well as extensions unique to Cray.
The user interface to the Unix operating system is through a shell. The shell interprets the commands you type and call s the programs needed to execute your commands. Four shells are available on the Crays: the Posix shell, the Korn shell, the C shell, and the Tenex C shell. The Tenex C shell is not supported, which means that the NCCS supplies the software "as is" in /usr/local/ubin (the directory for unsupported binaries). The NCCS will attempt to resolve problems reported on unsupported software, but no guarantees are made, and problems with unsupported software usually have low priority.
Unix is case sensitive; upper and lower case letters have different meanings. Most Unix commands are all lowercase. For example, the command to list files is ls. LS is not equivalent to l s; LS is not a Unix command.
The stty command defines terminal control settings, in particul ar the definition of the backspace character, referred to as the erase character. To set the backspace character to the key you want to use for this function, type:
stty erase [press the key you want to use for backsp acing].
If you make an error while typing in a command, you can use the backspace key to delete the last characters you typed.
Many Unix commands operate on a list of files. You can use special characters (sometimes called metacharacters or wild cards) to automatically generate a list of filenames.
Use the asterisk, *, to match any number, including zero, of
characters. For example, making a reference to chap* could ref
er to files of the name chap, chap1, c
hapter2, etc. It would not refer to (or match) files of the name
Use ? to match a single character in a filename. For example,<
STRONG>chap? matches chap1, but does not match chap, chapter2 or first.chap.
Square brackets can be used to make more specific matches. Square
brackets define a "character class" (i.e. a set of characters), used to
replace a single character within a filename. For example, chap[135] matches chap1, chap3 or chap5
STRONG>, but does not match chap or chap2.
Hyphens can be used to represent a range of characters. [0-9]
means any digit, [a-z] means any lower case letter, and
[a-zA-Z] means any upper or lower case letter.
The following characters have special meaning to Unix shells:
& ; | * ? ' " ` [ ] ( ) $ < > ^ # / \ % !
In addition, the Return or Enter key, the space tab and the tab keys
have special meaning to shells. It is best to not use any of these
characters in filenames until you understand how the shell interprets
them!
Quoting removes the special meanings of characters.
You can quote a single character by preceding it with a backslash, \.
For example:
echo \|
results in | being typed at the terminal. If you hadn't quoted
the |, but typed:
echo |
the shell would have thought you were trying to send the output from
the echo command to a pipe, represented by | (there is more inf
ormation
on using pipes below), and your sequence of commands would have been
incomplete.
Use single quotes, ' ... ', to remove the special meaning of al
l
characters except ' itself. You cannot include another single
quote within a pair of single quotes.
Use double quotes, " ... ", to remove the special meaning of al
l characters except $, \, `,
and ".
Unix commands are of the form:
command [argument1] [argument2] ...
The square brackets indicate that the arguments are optional.
Arguments are separated by one or more spaces or tabs. The last
argument often specifies one or more filenames. An option is an
argument that changes the behavior of a command. Most Unix commands
use a dash (-) to indicate that an argument is an option. For
example:
ls -rlt chap*
Here, ls is the "list files" command, -rlt a
re the options to the
command (don't worry about what they mean for now), and chap* s
pecifies
the files to list (all files that start with the letters chap).
Options can usually be strung together, or listed separately, as you
prefer. The following is equivalent to the ls command shown a
bove:
ls -r -l -t chap*
If you group options together, do NOT put spaces between them. For
example, the following is NOT equivalent to the two ls commands
given
above:
ls -r l t chap*
(This last example would attempt to list the files l and
You can use file redirection to specify where commands get input from
or where they should send output to. Commands get their input from
standard input, which by default is usually the terminal. Commands
send their output to standard output, which by default is also usually
the terminal. Suppose that you wanted to save the output from the ls
command in a file (rather than have it displayed at the terminal, which
is the default). You can use the > symbol to redirect the o
utput from ls :
ls -lt > filename
Then you can look at the file (using an editor like vi, or via
the more or cat commands).
Now suppose that you wanted to append one file to another. You can use
>> to accomplish this. In the following example, we use
the cat command to display the contents of file1. By default, this would be displayed at the terminal. Instead, we use
cat file1 >> file2
You can also redirect standard input, using the < symbol. S
uppose you have a program that needs to read in some data to standard input (in
Fortran, standard input is unit 5). You could type:
program_name < input_data
Pipes are used to send the output from one command to the input to the
next. The symbol | (vertical bar) is used to represent pipes.
For example:
ls -alt * | more
takes the output from the ls command and "pipes it into" the <
STRONG>more
Another way to redirect I/O (input/output) is to use the "here
document". Here documents are often used in scripts (a script is a
sequence of commands contained in a file), when you want to say
"use the following text (arguments, commands, or whatever) from HERE to
HERE as input to my command". The general form of the here document is:
where HERE is a unique string (i.e. a string that won't be confused
with any of the commands in the script) that marks the beginning and end
of the input you want to provide to the command. For example, if you
use FTP (File Transfer Protocol) within a script, use the here document
to tell FTP which commands it should execute. For example:
A process is a command that is being executed by the Unix operating
system. Each process is associated with a unique process id. To see
the processes you own, type ps . The output from the
ps command looks like this:
where PID is the process id, TTY identifies
the terminal associated with the process, and TIME shows the
number of CPU seconds the process has accumulated.
The first command in the above display, csh, shows the shell, i
n this
case the C shell.
When you type a command, the shell usually forks, or spawns, a child
process to execute the command. Some commands are built into the
shell. The shell does not have to fork a separate process to run a
built-in command.
You can type <Ctrl>c (hold the Control key, then press t
he c key) to stop the execution of your current process.
You can use the kill -9 command to kill a process you own. T
ype:
kill -9 pid
where pid is the process id of the process you want to kill.
The Unix man ("man" is derived from "manual") command provides
online information about Unix commands, including syntax, function, and
options. The NCCS has added site-specific information to the Unix man
facility where appropriate. To use man , type:
man command_name
To find out what man pages (and software) are available in a general
topic area, type:
man -k topic_name
or:
apropos topic_name
For more information on how to use the man command, type:
man man
Sometimes it is convenient to save the output from a man comman
d to a
file, so that you can browse through it with your favorite editor.
You can remove the underscores and other "funny characters" by piping
the output from man to the col -b command and
saving the resulting file, as follows:
man command_name | col -b > filename
Note that there are usually no man pages for commands built into the
shell. Information for built-in commands is contained within the man
page for the shell. For example, type:
man csh
to see the C shell's built-in commands.
Unix uses a hierarchical system, called a tree structure (it's actually
an inverted tree), to store files. The top level of the Unix file
system is the root directory called /. Below / are various directories, sub-directories, sub-sub directories, and so forth. A
t the end of the "directory branches" are "ordinary files". A part of
the Cray's Unix file tree is shown below.
/u1, /u2, /u3 and /u4
are the user file systems on the Cray. /u2/abxyz
and /u2/acwxy are the home directories for users abxyz and acwx
y respectively. When you log into the Cray, you are automatically placed
in your home directory. The above diagram shows user acwxy having
several project directories. In each project directory are files
associated with that project.
/bin contains many of the Unix user commands, such as c
p (copy file) and ls (list files), shown in the diagra
m. The complete pathnames
(also called absolute pathnames) of these two commands are /bin/cpSpecial Characters
Quoting
Unix Commands
File Redirection
Pipes
The "here document"
command <<HERE
command_input_line1
command_input_line2
....
HERE
ftp -i my_workstation <<END
get my_program
get my_data
quit
END
Unix Processes
PID TTY TIME COMMAND
17605 p024 0:01 csh
10887 p024 0:00 ps
Getting Online Help With the man Command
The Unix file system
/
|
+------+------+------+--+---+-------+-------+--------+
| | | | | | | |
u1 u2 u3 u4 bin lib silo tmp ...
| |
+----+---+ +---+---+
| | | |
abxyz acwxy ... cp ls ...
|
+-----+-----+
| |
project1 project2 ...
|
+---+-----+
| |
test.f test.data ...
/u2/acwxy/project1/test.f.
Normally, you don't have to type the complete pathnames for these commands, because Unix uses your PATH environment variable (an environment variable is a variable that defines characteristics of your shell environment) to search for the commands you type. The Cray automatically includes /bin, /usr/bin, /usr/ucb, and /usr/local/bin in your path. Introduction to Unix Shell s provides more information on how to include other pathnames in your path.
The term current directory refers to your current location in the directory tree. Unix calls your current directory . (dot). T he parent directory is the directory one level up from the current directory. Unix calls the parent directory .. (two dots). Yo u can use . and .. as command arguments. For example, you can use the change directory (cd) command to go up one directory level by typing:
cd ..
You can refer to files located below your current directory by their relative pathnames (that is, the name relative to the current directory). For example, if user acwxy is in her home directory, /u3/acwxy, she can refer to the file test.f as project1/test.f. If she is in her project1 directory, she can simply call this file test.f.
Note that in Unix, the word file can refer either to a directory or to an ordinary file (directories are just files to the Unix operating system!), although people often loosely use the word file to mean ordinary file.
The maximum number of characters you can use in a pathname on the Cray is 1023; the maximum number of characters you can use in a filename (the part of the pathname that appears after the last /) is 256 . Note that some Unix systems may restrict you to 14 characters for the filename (and the POSIX standard is 14 characters).
Although almost any ASCII character can be used in a filename, it's best to restrict yourself to upper and lower case letters (keep in mind that Unix is case sensitive), digits, . and _. This is because many special characters have special meanings to Unix, and the ir use in filenames might be confusing. In particular, you should avoid using < STRONG>* and ? in filenames.
Some Unix files begin with a dot (.); they are often called hid den or dot files, and are usually startup files for various shells and utilities . This means that when the shell or utility starts running, it reads the information in the dot file for startup (or configuration) instructions. For example, the Korn and POSIX shells read your .profile for s tartup instructions. The C and Tenex C shells read your .login and .cshrc file. These files are not displayed when you use t he ls ("list files") command unless you give ls the -a option. To see your dot files, type:
ls -a
By convention, suffixes are used to indicate specific file types to certain Unix utilities. Some common suffixes are:
file.f | Fortran source file |
file.f90 | Fortran 90 source file |
file.c | C source file |
file.h | C include file with header data |
file.l | Fortran listing file |
file.o | object code (output from a compiler) |
file.z | compressed file |
All files (both ordinary files and directories) have file permissions associated with them. The three types of file permissions are:
Permissions are set for three groups of users: "user" (the userid that created the file), "group", and "other". "group" refers to users who belong to the Unix group with which the file is associated. To see which groups you belong to, type:
groups
"other" means all other users (but does not include the owner or users with group privileges!). To see the file permissions of the files within your current directory, type:
ls -l
You will see output like:
-rw------- 1 abxyz g123 3743 Dec 7 13:59 memo -rw-r----- 1 abxyz g123 7471 Mar 23 17:16 program.f drwxr-xr-x 1 abxyz g123 4096 Aug 19 1993 software ...
The first field of 10 columns shows the file permissions:
By looking at the first line of the file permissions, you learn that the ordinar
y file, memo, can be read ( r) or written (w)
by its owner only. Nobody else has any
permissions. The second line shows that the owner can read and modify
the file program.f , and that any user belonging to group
(Note: the above output is the output from the System V Unix ls -l
command; the output from the BSD Unix ls -l command would not s
how the
group name; to see group names with BSD Unix, use ls -lg.)
To change file permissions, use the chmod command. The syntax
of the chmod command is:
chmod what_to_do filename
where what_do_do has 3 fields: who_operator_permissio
n:
For example, to remove read and execute permissions for "other" for
the software directory listed above:
chmod o-rx software
The chmod command may also be used with what are called octal
permissions. Each permission is associated with a number as follows:
Simply add up the permissions you want for "user", "group" and "other"
to get a 3 digit octal number, where the first digit indicates the
permissions for "user", the second for "group" and the third for
"other". The possible digits for each permission group are:
For example:
means give all permissions for the file to its owner, and no
permissions to anyone else.
means give read and write permissions to the owner, and read permission
only to all other users.
The permissions that are associated with a file when you first create
the file depend on your "umask" setting. The default umask on
the Cray gives all permissions to the owner of a file, and no permissions to
anyone else. This is done by automatically executing the following
command whenever you login:
umask 077
The digits used with the umask command are opposite in meaning
to the
digits used with the chmod command:
You can change the default umask to your own umask by issuing the umask<
/STRONG> command interactively (in which case its effect will only last for your
login session) or by putting it in your sh
ell startup file.
The following commands are briefly described below:
Use the ls command to list the names of files and directories t
hat match a specified pattern:
ls options [filenames or pattern]
common options:
If you don't specify a filename, ls lists all the files in the
current directory. The filename is often specified using an *,
which represents any group of characters. For example:
ls -l chap*
means "produce a long listing of all files whose filenames start with
chap.
(Note that the System V and BSD versions of the ls command are
somewhat
different.)
Use the more command to display a file at the terminal, one scr
eenful at a time:
more filename
You go to the next screenful by pressing the spacebar.
more has its own set of internal commands that allow you to mov
e forwards and backwards in the file, and search for keywords.
Some of the more commonly used ones are:
Use the cat command to type out the entire file at the terminal
:
cat filename
Use the cd command to change to another directory:
cd pathname
Remember that a pathname can be absolute or relative to your current
directory. Some examples:
Use the pwd command to display the pathname of your current (or
working)
directory.
Use the mkdir command to create a new directory. You must have
write privilege in the parent directory:
mkdir pathname
where pathname may be an absolute pathname, or a relative pathname.
For example, to make a directory called "project" in your home directory,
type the following command from your home directory:
mkdir project
Use the cp command to copy an existing file into a new file:
cp existing_filename new_filename
Use the mv command to move a file from one location to another
location, or to rename a file:
mv old_filename new_filename
Examples:
moves the ordinary file program.f into the directory
project_directory , located one level below the current directory. The
filename ( program.f ) doesn't change.
renames program.f to newname.f (the file rem
ains in the current directory)
Use the rm command to permanently delete a file. Once you have
deleted the file, you cannot get it back.
rm options filename
Two of the options you can use with rm are:
Causes rm to prompt you with a message to make sure you really
want to remove the file. This is a good option to always use,
since it helps prevent you from accidentally deleting a file.
Removes files "recursively", which means that it removes all of
the files in a subdirectory as well as the subdirectory. Use
this option when you want to delete a directory.
Example:
rm -i data*
Prompts you about removing all files whose names start with data. Answer
Use the head command to display the first count line
s in a file:
head -count filename
If you don't specify a count, the default is to show the first 10 lines.
Use the tail command to display the last count lines
in a file:
tail -count filename
If you don't specify a count, the default is to show the last 10 lines.
The following is a list of Unix and UNICOS commands that you may find
useful. For more information, see the man pages or a Unix text.
The following were used as references:
Changing File Permissions Using Symbolic Permissions<
/H3>
Changing File Permissions Using Octal Permissions
0 for no permissions
1 for x only
2 for w only
3 for x and w
4 for r only
5 for x and r
6 for r and w
7 for all permissions
7 for no permissions
6 for x only
5 for w only
4 for x and w
3 for r only
2 for x and r
1 for r and w
0 for all permissions
Some Commands to Use with Files and Directories
ls list files
more display a file one screenful at a time
cat display a file at the terminal
cd change directory
pwd print working directory
mkdir make a new directory
cp copy a file
mv rename or move a file
rm remove a file
head display the first lines in a file
tail display the last lines in a file
ls: list files
-l long list (detailed information about the files)
-a include . files
-t sort by date (default is to sort by filename)
-C multi-column output
-F shows the types of files (/ for directories, *
for executable files; note that these characters
are NOT part of the filenames)
more: display a file one screenful at a time
spacebar display next screenful
return or enter scroll down 1 line
b scroll back 1 screenful
h display help
q quit out of more
/ string search downwards for string
v enter vi
cat: display a file at the terminal
cd: change directory
cd /usr/local/lib go to /usr/local/lib
cd .. go up one directory level
cd go from wherever you are to your home
directory
pwd: print working directory
mkdir: make a new directory
cp: copy a file
mv: move or rename a file
rm: remove a file
head: display the first lines in a file
tail: display the last lines in a file
Some Other Useful Unix Commands
at Executes commands at a specified time.
awk A pattern-scanning and processing language. It searches
a
file (or files) for specified patterns and processes lines
containing a matched pattern.
chgrp Changes the group associated with a file.
cusage Displays your NCCS CU usage by sponsor code (local NCCS
utility).
cut Cuts columns from a file. Example:
cat filename | cut -c1-72 > newfile
date Displays the local date and time.
df Displays available physical disk space on file systems.
diff Compares two files and displays the differences.
du Displays the disk usage of a directory. du -s shows how
much
disk space is being used in the current directory and below.
echo Displays a message.
file Displays the type of file contents (ascii text, directory
,
fortran program text, executable, ...)
find Locates files located under pathnames that you specify an
d
that meet the characteristics you specify.
grep Searches a file or files for character strings.
groups Displays the groups you belong to.
kill Terminates processes.
ln Makes a hard or a soft link to a file.
lp, lpr Prints files to a network connected printer.
mailx Sends or receives electronic mail.
make Executes commands in a makefile to update one or more tar
get
files, which are usually programs. Uses "construction
commands" to specify how to "make" the program.
mesg Enables or disables the reception of messages.
newacct Changes the account id to use for charging (UNICOS comman
d).
nohup Runs a command that will keep running after you log out.
paste Joins files side by side (converse of cut).
pr Formats a file for printing.
ps Displays information on processes.
quota Displays your file quota and disk usage statistics.
rcp Copies files to or from a remote computer.
rlogin Logs into a remote computer.
sed Edits files according to a script of commands.
showacct Displays your current Cray account (sponsor code); i.e. t
he
account being used for current charges (local utility).
sleep Sleeps (suspends execution) for a specified number of sec
onds.
sort Sorts files.
spell Check a file for spelling errors (not available on charne
y).
stty Displays or sets terminal parameters.
tar Stores or retrieves files from an archive file (called a
"tar
file").
tr Translates specified characters.
uniq Reports repeated lines in a file.
wc Counts lines, words, and characters in a file.
whereis Displays the pathnames of binaries and man pages.
who Reports who is on the system.
write Sends a message to another user.
References
Author: NCCS Technical Assistance Group (tag@nccs.gsfc.nasa.gov)
Authorizing Technical Official: Michael S. Seablom,
NASA/GSFC Code 931 (Michael.S.Seablom.1@gsfc.nasa.gov)
Authorizing NASA Official: Nancy Palm, NASA/GSFC Code
931 (Nancy.L.Palm.1@gsfc.nasa.gov)
Last Updated: 07/08/99
Reason: Added semicolons to & commands in code
Links to this Page