Sunteți pe pagina 1din 52

Unix

Reference manual Tutorial 1. Commands Simple commands: date, whoami, echo. 2. Files Your home directory -- cd, pwd Creating short files -- cat, ls Printing files -- print, lpr Examining files --- wc, grep , sort Getting rid of files -- rm 3. Directories Making directories -- mkdir Moving files --- mv Paths Changing directories -- cd Where are we? -- pwd Removing directories -- rmdir

Lesson 1: Commands
This tutorial will help you learn the basics of Unix. You should work on it while you are at the computer. Read a paragraph, then try the suggested commands. Do they work as intended? If not, look back at the lesson, and think about what went wrong. It was no doubt a "typo. " Computers, unlike human beings, are rather stupid (even though very fast), and can knot undrstand things that R missspelled or otherwise gurbled. Think of a computer as an obedient servant: we give it commands, it obeys. The goal of these lessons is to learn to "speak Unix", the language in which we shall command our servant. Let us begin with a simple command: we want the computer to tell us today's date. Here is how to do it:
% date Fri Mar 25 09:24:30 MST 1994

Wasn't that easy? Note that your commands --- what you tell the computer to do --- are displayed in bold. What the computer replies is displayed like this. Note also that you didn't type " % ": that is the prompt that the computer types. It does this when it is listening for your next command. (Prompts can be different from " % ") Try the "date" command now. Here are some more commands to try, with samples of how the computer might respond.
% whoami jeremy

whoami displays the login name of the current user, who (for the purpose of these lessons) is "jeremy. " Try this now. The computer should respond with your login name.
% echo This is a test This is a test.

echo does just that: it tells the computer to retype the string "This is a test". Here is another use of echo:
% echo $PRINTER b129lab1

This time echo tells us what is stored in the PRINTER variable --- the name of the printer the computer will use if you print something. Capitalization is important in Unix, so be sure to say "PRINTER", not " printer" or "Printer". The dollar sign in front of the variable name is also important. Note what happens if we forget to use it:
% echo PRINTER PRINTER

Try all the examples above. Also: know where your printer is! This is as good a time as any to introduce a little computer jargon. The words of the string "This is a test" are arguments to the command echo. The results of a command depend on what the arguments are.

Review
Write down on a sheet of paper the names of all the commands you have used in this lesson. Carry it around with for a few days, and use it to review the commands several times. Do this both at a workstation and away from it. Finally, explain to a coworker or fellow student what the commands do. Do this at a workstation so you both can try things out.

Lesson 2: Files
Remember to try all commands out yourself!! Do this in all future lessons too. Also, remember that "jeremy" is a fictitious login name. He is used only for purposes of illustration.

Your home directory


Computers store information in things called files. A file is like a sheet of paper (maybe a very long one) with something written on it. Files are stored in things called directories. We are now going to learn how make, use, and manage files and directories. We will begin by figuring out what our home directory is:
% cd % pwd /u/c/jeremy % echo $HOME /u/c/jeremy

The cd command ( c hange d irectory) used with no arguments takes us from wherever we might be to our home directory. The pwd ( p rint w orking d irectory) tells in which directory we find ourselves for the moment. In the case at

hand it is /u/c/jeremy. Don't be concerned for the moment about the /u/c/ part. It is a path, but that is irrelevant for now. Note that echo $HOME has exactly the same effect as pwd. Exercise: Figure out what your home directory is.

Creating short files


Now let us create a short file. For this we use the cat command. Follow the example below carefully:
% cat >dict red: rojo yellow: amarillo black: negro white: blanco blue: azul green: verde <control-d> %

By <control-d> we mean: hold the control key down; while it is down press "d". We have just used cat to create a short English-Spanish dictionary. This dictionary resides in the file dict . We told cat to put what we typed in dict using the "into" symbol, namely > . To tell cat that we were done typing we typed control-d ("d" for "done"). To check that the dictionary is really there and that it was correctly entered we do this:
% ls dict % cat dict red: rojo yellow: amarillo black: negro white: blanco blue: azul green: verde %

The ls command l ist s the files in the current directory. For the moment there is only one, namely dict. The command cat shows us what is in dict.

Printing files
Now that we know how to make small files and view them, let's learn how to print them. Here's how:
% print dict Printing dict2 (text) on jwb129lab1 %

Print is not a standard Unix command. For this see lpr. The print command will try to figure out what kind of file you are trying to print and use the method it deems best. For more information on what it does, type the command with no arguments:
% print ... displays info on print ... %

If you need a list of printers, use print -l. The "-l" is an option for the print command. Many Unix commands have options. Note for those who need it: The print command understands dvi and postcript (ps) files. For example, print foo.dvi correctly prints foo.dvi, and print bar.ps correctly prints the postscript file bar.ps. If you need to force a file to be printed as text use print -t, e.g., print -t weirdfile.

Examining files
Unix has some useful commands for examining files, e.g., counting the number of words, seeing whether a particular word is in the file, sorting the file, etc. We will learn about a few of these commands now:
% wc dict 6 12 78 % grep white dict white: blanco % sort dict black: negro blue: azul green: verde red: rojo white: blanco yellow: amarillo %

The wc command c ounts w ords (and more). In the case at hand it tells us that dict contains 6 lines, 12 words, and 78 characters ("letters "). The grep command looks for the word white in the file dict and displays the lines in which this word appears. It gives us a way to search through files. The sort command does just what it says. Before going on, let's see how to save a copy of our sorted dictionary. We'll put in a file called dict2.
% sort dict >dict2 % ls dict dict2 % cat dict2 black: negro blue: azul green: verde red: rojo white: blanco yellow: amarillo %

Notice once again the use of the "into" symbol ">". In our example it had the effect of directing the output of the sort command from the screen to the file dict2. Just to be sure that everything went according to plan, we used ls to be sure that dict2 was there, and we used cat dict2 to be sure that it contained what we thought it should. Timeout: after working through the last example, stand up and stretch. Then congrutalate yourself for having made so much progress learning Unix.

Getting rid of files


As you continue to work you will create more and more files. Eventually you will want to get rid of some of them. For this we use the rm command (for r e m ove):
% ls dict dict2 % rm dict2 rm: remove dict2? y % ls dict %

This is enough work for the second lesson. You now know how to create, view, print, and remove files, and you know how to manipulate them: to search for words and generate statistics on them. The main problem is what to do about creating longer files. It is too much to hope that you can do this with no typing

errors using cat. For this reason you need an editor. This is computer jargon for a program for creating files, putting text in them, and modifying that text. We recommend emacs .

Review
Do as before: Add the names of all the commands you have used in this lesson to your sheet of paper. Carry it around with for a few days, and use it to review the commands several times. Do this both at a workstation and away from it. Finally, explain to a coworker or fellow student what the commands do. Do this at a workstation so you both can try things out.

Creating and using directories


After working on your unix system for a while you will accumulate many files. Just like an unorganized desk, this creates a mess in which it is hard to work. The solution is to create directories in which to store related items. A directory is like a file folder which contains related documents (your files). As an example, suppose that when you list your files you see this:
% ls fred1 fred2 fred3 ch1 ch2 ch3 foo.c bar.c %

This is really not badly organized: the files fred1, etc. are letters to fred, the files ch1, etc. chapters of a book, and foo.c, bar.c are C programs. Nonetheless, we decide that it is time to get organized, with one directory per project.

The mdkir command.


We create a new directory using the mkdir command ( m ake d irectory).
% mkdir letters % ls fred1 fred2 fred3 ch1 ch2 ch3 foo.c bar.c letters

Notice that the directory letters shows up in the listing. If you are not sure what is a file and what is a directory, try this:
% ls -F

fred1 fred2 fred3 ch1 ch2 ch3 foo.c bar.c letters/

Notice that letters is displayed somewhat differently.

The mv command
Now we move the letters into the directory letters using the mv command ( m o v e).
% mv fred1 fred2 fred3 letters % ls ch1 ch2 ch3 foo.c bar.c letters If we want to check that letters really contains the files it should, we do this: % ls letters fred1 fred2 fred3

There is, by the way, a useful shortcut:


% mv fred* letters

Here the character * matches any sequence of characters, including the null string. Thus files named fred, fred101, and freddy would all be moved into letters.

Paths
You can deal directly with files in a directory like this:
% cat letters/fred1

This command displays the contents of the file fred1 , which is in the directory letters. Here are some other ways of doing the same thing:
% cat letters/fred1 % more letters/fred1 % emacs letters/fred1

We could even do this:


% cat l*f*1

Changing directories with cd


Sometimes it is better to work inside the directory letters. To do it we use the cd command ( ch hange d irectory).
% cd letters % ls

fred1 fred2 fred3

The letters are there, as they chould be. To go back to our home directory we do this:
% cd

We check that our home directory contains what it should.


% ls ch1 ch2 ch3 foo.c bar.c letters

Now we make directories for the other files and move them into the right places:
% mkdir book; mv ch* book % mkdir cprogs; mv *.c cprogs % ls -F book/ cprogs/ letters/ % ls book ch1 ch2 ch3 %

Where are we?


Sometimes in moving from one directory to another we lose track of where we are. To find out what the current directory is, use the pwd command ( p rint w orking d irectory).
% pwd jeremy % cd book % pwd jeremy/book %

Removing directories
To remove a directory we first remove all the file in it, then remove the directory with rmdir ( r emove d irectory).
% pwd jeremy % cd letters % pwd jeremy/letters % rm * % cd .. % rmdir letters

The command rm * removes all files in the current directory. The command cd .. changes the current directory to the parent of the current one. In this case, it changes us from jeremy/letters to jeremy . Remember that jeremy/letters is a path , as is jeremy/letters/fred1. The latter is the path which starts with Jeremy's home directory and ends with the file fred1.

Unix Command Summary


See the Unix tutorial for a leisurely, self-paced introduction on how to use the commands listed below. For more documentation on a command, consult a good book, or use the man pages. For example, for more information on grep, use the command man grep.

Contents

cat --- for creating and displaying short files chmod --- change permissions cd --- change directory cp --- for copying files date --- display date echo --- echo argument ftp --- connect to a remote machine to download or upload files grep --- search file head --- display first part of file ls --- see what files you have lpr --- standard print command (see also print ) more --- use to read files mkdir --- create directory mv --- for moving and renaming files ncftp --- especially good for downloading files via anonymous ftp. print --- custom print command (see also lpr ) pwd --- find out what directory you are in rm --- remove a file rmdir --- remove directory rsh --- remote shell

setenv --- set an environment variable sort --- sort file tail --- display last part of file tar --- create an archive, add or extract files telnet --- log in to another machine wc --- count characters, words, lines

cat
This is one of the most flexible Unix commands. We can use to create, view and concatenate files. For our first example we create a three-item English-Spanish dictionary in a file called "dict."
% cat >dict red rojo green verde blue azul <control-D> %

<control-D> stands for "hold the control key down, then tap 'd'". The symbol > tells the computer that what is typed is to be put into the file dict. To view a file we use cat in a different way:
% cat dict red rojo green verde blue azul %

If we wish to add text to an existing file we do this:


% cat >>dict white blanco black negro <control-D> %

Now suppose that we have another file tmp that looks like this:
% cat tmp cat gato dog perro %

Then we can join dict and tmp like this:


% cat dict tmp >dict2

We could check the number of lines in the new file like this:

% wc -l dict2

The command wc counts things --- the number of characters, words, and line in a file.

chmod
This command is used to change the permissions of a file or directory. For example to make a file essay.001 readable by everyone, we do this:
% chmod a+r essay.001

To make a file, e.g., a shell script mycommand executable, we do this


% chmod +x mycommand Now we can run mycommand as a command.

To check the permissions of a file, use ls -l . For more information on chmod, use man chmod.

cd
Use cd to change directory. Use pwd to see what directory you are in.
% cd english % pwd % /u/ma/jeremy/english % ls novel poems % cd novel % pwd % /u/ma/jeremy/english/novel % ls ch1 ch2 ch3 journal scrapbook % cd .. % pwd % /u/ma/jeremy/english % cd poems % cd % /u/ma/jeremy

Jeremy began in his home directory, then went to his english subdirectory. He listed this directory using ls , found that it contained two entries, both of which happen to be diretories. He cd'd to the diretory novel, and found that he had

gotten only as far as chapter 3 in his writing. Then he used cd .. to jump back one level. If had wanted to jump back one level, then go to poems he could have said cd ../poems. Finally he used cd with no argument to jump back to his home directory.

cp
Use cp to copy files or directories.
% cp foo foo.2

This makes a copy of the file foo.


% cp ~/poems/jabber .

This copies the file jabber in the directory poems to the current directory. The symbol "." stands for the current directory. The symbol "~" stands for the home directory.

date
Use this command to check the date and time.
% date Fri Jan 6 08:52:42 MST 1995

echo
The echo command echoes its arguments. Here are some examples:
% echo this this % echo $EDITOR /usr/local/bin/emacs % echo $PRINTER b129lab1

Things like PRINTER are so-called environment variables. This one stores the name of the default printer --- the one that print jobs will go to unless you take some action to change things. The dollar sign before an environment variable is needed to get the value in the variable. Try the following to verify this:
% echo PRINTER PRINTER

ftp
Use ftp to connect to a remote machine, then upload or download files. See also:
ncftp

Example 1: We'll connect to the machine fubar.net, then change director to mystuff, then download the file homework11:
% ftp solitude Connected to fubar.net. 220 fubar.net FTP server (Version wu-2.4(11) Mon Apr 18 17:26:33 MDT 1994) ready. Name (solitude:carlson): jeremy 331 Password required for jeremy. Password: 230 User jeremy logged in. ftp> cd mystuff 250 CWD command successful. ftp> get homework11 ftp> quit

Example 2: We'll connect to the machine fubar.net, then change director to mystuff, then upload the file collected-letters:
% ftp solitude Connected to fubar.net. 220 fubar.net FTP server (Version wu-2.4(11) Mon Apr 18 17:26:33 MDT 1994) ready. Name (solitude:carlson): jeremy 331 Password required for jeremy. Password: 230 User jeremy logged in. ftp> cd mystuff 250 CWD command successful. ftp> put collected-letters ftp> quit

The ftp program sends files in ascii (text) format unless you specify binary mode:
ftp> binary ftp> put foo ftp> ascii ftp> get bar The file foo was transferred in binary mode, the file bar was transferred in ascii

mode.

grep
Use this command to search for information in a file or files. For example, suppose that we have a file dict whose contents are
red rojo green verde

blue azul white blanco black negro

Then we can look up items in our file like this;


% grep red dict red rojo % grep blanco dict white blanco % grep brown dict %

Notice that no output was returned by grep brown. This is because "brown" is not in our dictionary file. Grep can also be combined with other commands. For example, if one had a file of phone numbers named "ph", one entry per line, then the following command would give an alphabetical list of all persons whose name contains the string "Fred".
% grep Fred ph | sort Alpha, Fred: 333-6565 Beta, Freddie: 656-0099 Frederickson, Molly: 444-0981 Gamma, Fred-George: 111-7676 Zeta, Frederick: 431-0987

The symbol "|" is called "pipe." It pipes the output of the grep command into the input of the sort command. For more information on grep, consult
% man grep

head
Use this command to look at the head of a file. For example,
% head essay.001

displays the first 10 lines of the file essay.001 To see a specific number of lines, do this:
% head -n 20 essay.001

This displays the first 20 lines of the file.

ls
Use ls to see what files you have. Your files are kept in something called a directory.
% ls foo foobar letter1 % letter2 letter3 maple-assignment1

Note that you have six files. There are some useful variants of the ls command:
% ls l* letter1 letter2 letter3 %

Note what happened: all the files whose name begins with "l" are listed. The asterisk (*) is the " wildcard" character. It matches any string.

lpr
This is the standard Unix command for printing a file. It stands for the ancient "line printer." See
% man lpr

for information on how it works. See print for information on our local intelligent print command.

mkdir
Use this command to create a directory.
% mkdir essays % cd essays % ls

To get "into" this directory, do To see what files are in essays, do this: There shouldn't be any files there yet, since you just made it. To create files, see cat or emacs.

more
More is a command used to read text files. For example, we could do this:
% more poems

The effect of this to let you read the file "poems ". It probably will not fit in one screen, so you need to know how to "turn pages". Here are the basic commands:

q --- quit more spacebar --- read next page return key --- read next line b --- go back one page

For still more information, use the command man more.

mv
Use this command to change the name of file and directories.
% mv foo foobar

The file that was named foo is now named foobar

ncftp
Use ncftp for anonymous ftp --- that means you don't have to have a password.
% ncftp ftp.fubar.net Connected to ftp.fubar.net > get jokes.txt

The file jokes.txt is downloaded from the machine ftp.fubar.net.

print
This is a moderately intelligent print command.
% print foo % print notes.ps % print manuscript.dvi

In each case print does the right thing, regardless of whether the file is a text file (like foo ), a postcript file (like notes.ps, or a dvi file (like manuscript.dvi. In these examples the file is printed on the default printer. To see what this is, do
% print

and read the message displayed. To print on a specific printer, do this:


% print foo jwb321 % print notes.ps jwb321 % print manuscript.dvi jwb321 % setenv PRINTER jwb321

To change the default printer, do this:

pwd
Use this command to find out what directory you are working in.
% pwd /u/ma/jeremy % cd homework % pwd /u/ma/jeremy/homework % ls assign-1 assign-2 assign-3 % cd % pwd /u/ma/jeremy %

Jeremy began by working in his "home" directory. Then he cd 'd into his homework subdirectory. Cd means " change directory". He used pwd to check to make sure he was in the right place, then used ls to see if all his homework files were there. (They were). Then he cd'd back to his home directory.

rm
Use rm to remove files from your directory.
% rm foo remove foo? y % rm letter* remove letter1? y remove letter2? y remove letter3? n %

The first command removed a single file. The second command was intended to remove all files beginning with the string "letter." However, our user (Jeremy?) decided not to remove letter3.

rmdir
Use this command to remove a directory. For example, to remove a directory called "essays", do this:
% rmdir essays

A directory must be empty before it can be removed. To empty a directory, use rm.

rsh
Use this command if you want to work on a computer different from the one you are currently working on. One reason to do this is that the remote machine might be faster. For example, the command
% rsh solitude

connects you to the machine solitude. This is one of our public workstations and is fairly fast. See also: telnet

setenv
% echo $PRINTER labprinter % setenv PRINTER myprinter % echo $PRINTER myprinter

sort
Use this commmand to sort a file. For example, suppose we have a file dict with contents
red rojo green verde blue azul white blanco black negro

Then we can do this:


% sort dict black negro blue azul green verde red rojo

white blanco Here the output of sort went to the screen. To store the output in file we do this: % sort dict >dict.sorted You can check the contents of the file dict.sorted using cat , more , or emacs .

tail
Use this command to look at the tail of a file. For example,
% tail essay.001

displays the last 10 lines of the file essay.001 To see a specific number of lines, do this:
% tail -n 20 essay.001

This displays the last 20 lines of the file.

tar
Use create compressed archives of directories and files, and also to extract directories and files from an archive. Example:
% tar -tvzf foo.tar.gz

displays the file names in the compressed archive foo.tar.gz while


% tar -xvzf foo.tar.gz

extracts the files.

telnet
Use this command to log in to another machine from the machine you are currently working on. For example, to log in to the machine "solitude", do this:
% telnet solitude

See also: rsh.

wc
Use this command to count the number of characters, words, and lines in a file. Suppose, for example, that we have a file dict with contents
red rojo

green verde blue azul white blanco black negro

Then we can do this


% wc dict 5 10 56 tmp

This shows that dict has 5 lines, 10 words, and 56 characters. The word count command has several options, as illustrated below:
% wc -l dict 5 tmp % wc -w dict 10 tmp % wc -c dict 56 tmp

Environment Control Command Description <!--[if !supportEmptyParas]--> <!--[endif]--> cd d Change to directory d <!--[if !supportEmptyParas]--> <!--[endif]--> mkdir d Create new directory d <!--[if !supportEmptyParas]--> <!--[endif]--> rmdir d Remove directory d <!--[if !supportEmptyParas]--> <!--[endif]--> mv f1 [f2...] d Move file f to directory d <!--[if !supportEmptyParas]--> <!--[endif]--> mv d1 d2 Rename directory d1 as d2 <!--[if !supportEmptyParas]--> <!--[endif]--> passwd Change password <!--[if !supportEmptyParas]--> <!--[endif]--> alias name1 name2 Create command alias (csh/tcsh) <!--[if !supportEmptyParas]--> <!--[endif]--> alias name1="name2" Create command alias (ksh/bash) <!--[if !supportEmptyParas]--> <!--[endif]--> unalias name1[na2...] Remove command alias na <!--[if !supportEmptyParas]--> <!--[endif]-->

ssh nd Login securely to remote node <!--[if !supportEmptyParas]--> <!--[endif]--> exit End terminal session <!--[if !supportEmptyParas]--> <!--[endif]--> setenv name v Set env var to value v (csh/tcsh) <!--[if !supportEmptyParas]--> <!--[endif]--> export name="v" set environment variable to value v (ksh/bash) Output, Communication, & Help Command Description <!--[if !supportEmptyParas]--> <!--[endif]--> lpr -P printer f or lp -d printer f Output file f to line printer <!--[if !supportEmptyParas]--> <!--[endif]--> script [f] Save terminal session to f <!--[if !supportEmptyParas]--> <!--[endif]--> exit Stop saving terminal session <!--[if !supportEmptyParas]--> <!--[endif]--> mailx username Send mail to user <!--[if !supportEmptyParas]--> <!--[endif]--> man name Unix manual entry for name <!--[if !supportEmptyParas]--> <!--[endif]--> Process Control Command Description <!--[if !supportEmptyParas]--> <!--[endif]--> CTRL/c * Interrupt processes <!--[if !supportEmptyParas]--> <!--[endif]--> CTRL/s * Stop screen scrolling <!--[if !supportEmptyParas]--> <!--[endif]--> CTRL/q * Resume screen output <!--[if !supportEmptyParas]--> <!--[endif]--> sleep n Sleep for n seconds <!--[if !supportEmptyParas]--> <!--[endif]--> jobs Print list of jobs <!--[if !supportEmptyParas]--> <!--[endif]--> kill % Kill job n <!--[if !supportEmptyParas]--> <!--[endif]--> ps Print process status stats

kill -9 n Remove process n <!--[if !supportEmptyParas]--> <!--[endif]--> CTRL/z * Suspend current process <!--[if !supportEmptyParas]--> <!--[endif]--> stop %n Suspend background job n <!--[if !supportEmptyParas]--> <!--[endif]--> cmmd& Run cmmd in background <!--[if !supportEmptyParas]--> <!--[endif]--> bg [%n] Resume background job n <!--[if !supportEmptyParas]--> <!--[endif]--> fg [%n] Resume foreground job n <!--[if !supportEmptyParas]--> <!--[endif]--> exit Exit from shell Environment Status Command Description <!--[if !supportEmptyParas]--> <!--[endif]--> ls [d] [f...] List files in directory <!--[if !supportEmptyParas]--> <!--[endif]--> ls -1 [f...] List files in detail <!--[if !supportEmptyParas]--> <!--[endif]--> alias [name] Display command aliases <!--[if !supportEmptyParas]--> <!--[endif]--> printenv [name] Print environment values <!--[if !supportEmptyParas]--> <!--[endif]--> quota Display disk quota <!--[if !supportEmptyParas]--> <!--[endif]--> date Print date & time <!--[if !supportEmptyParas]--> <!--[endif]--> who List logged in users <!--[if !supportEmptyParas]--> <!--[endif]--> whoami Display current user <!--[if !supportEmptyParas]--> <!--[endif]--> finger [username] Output user information <!--[if !supportEmptyParas]--> <!--[endif]--> chfn Change finger information <!--[if !supportEmptyParas]--> <!--[endif]--> pwd Print working directory <!--[if !supportEmptyParas]--> <!--[endif]--> history Display recent commands <!--[if !supportEmptyParas]--> <!--[endif]--> !n Submit recent command n

File Manipulation Command Description <!--[if !supportEmptyParas]--> <!--[endif]--> vi [f] Vi fullscreen editor <!--[if !supportEmptyParas]--> <!--[endif]--> emacs [f] Emacs fullscreen editor <!--[if !supportEmptyParas]--> <!--[endif]--> ed [f] Text editor <!--[if !supportEmptyParas]--> <!--[endif]--> wc f Line, word, & char count cat f List contents of file <!--[if !supportEmptyParas]--> <!--[endif]--> more f List file contents by screen <!--[if !supportEmptyParas]--> <!--[endif]--> cat f1 f2 >f3 Concatenates f1 & f2 into f3 <!--[if !supportEmptyParas]--> <!--[endif]--> chmod mode f Change protection mode of f <!--[if !supportEmptyParas]--> <!--[endif]--> cmp f1 f2 Compare two files <!--[if !supportEmptyParas]--> <!--[endif]--> cp f1 f2 Copy file f1 into f2 <!--[if !supportEmptyParas]--> <!--[endif]--> sort f Alphabetically sort f <!--[if !supportEmptyParas]--> <!--[endif]--> split [-n] f Split f into n-line pieces <!--[if !supportEmptyParas]--> <!--[endif]--> mv f1 f2 Rename file f1 as f2 <!--[if !supportEmptyParas]--> <!--[endif]--> rm f Delete (remove) file f <!--[if !supportEmptyParas]--> <!--[endif]--> grep 'ptn' f Outputs lines that match ptn <!--[if !supportEmptyParas]--> <!--[endif]--> diff f1 f2 Lists file differences <!--[if !supportEmptyParas]--> <!--[endif]--> head f Output beginning of f <!--[if !supportEmptyParas]--> <!--[endif]--> tail f Output end of f Compiler Command Description

<!--[if !supportEmptyParas]--> <!--[endif]--> cc [-o f1] f2 C compiler <!--[if !supportEmptyParas]--> <!--[endif]--> lint f Check C code for errors <!--[if !supportEmptyParas]--> <!--[endif]--> f77 [-o f1] f2 Fortran77 compiler <!--[if !supportEmptyParas]--> <!--[endif]--> pc [-o f1] f2 Pascal compiler Working with NFS files Files saved on the UITS central Unix computers Steel, the Parallel PC cluster, Solar/Lunar, and the Research SP are stored on the Network File Server (NFS). That means that your files are really on one disk, in directories named for the central Unix hosts on which you have accounts. No matter which of these computers you are logged into, you can get to your files on any of the others. Here are the commands to use to get to any system directory from any other system: cd /N/u/username/PPPC/ cd /N/u/username/Cobalt/ cd /N/u/username/Solar/ cd /N/u/username/Steel/ cd /n/u/username/SP/ Be sure you use the capitalization just as you see above, and substitute your own username for "username". For example, if Jessica Rabbit is logged into her account on Steel, and wants to get a file on her SP account, she would enter: cd /N/u/jrabbit/SP/ Now when she lists her files, she'll see her SP files, even though she's actually logged into Steel. You can use the ordinary Unix commands to move files, copy files, or make symbolic links between files. For example, if Jessica Rabbit wanted to move "file1" from her Steel directory to her SP directory, she would enter: mv -i /N/u/jrabbit/Steel/file1 /N/u/jrabbit/SP/

This shared file system means that you can access, for example, your SP files even when you are logged into Steel, and vice versa. However, if you are logged into the SP, you can only use the software installed on SP -- only users' directories are linked together, not system directories. Abbreviations used in this document <!--[if !supportEmptyParas]--> <!--[endif]--> CTRL/x hold down control key and press x <!--[if !supportEmptyParas]--> <!--[endif]--> d directory <!--[if !supportEmptyParas]--> <!--[endif]--> env environment <!--[if !supportEmptyParas]--> <!--[endif]--> f filename <!--[if !supportEmptyParas]--> <!--[endif]--> n number <!--[if !supportEmptyParas]--> <!--[endif]--> nd computer node <!--[if !supportEmptyParas]--> <!--[endif]--> prtr printer <!--[if !supportEmptyParas]--> <!--[endif]--> ptn pattern <!--[if !supportEmptyParas]--> <!--[endif]--> var variable <!--[if !supportEmptyParas]--> <!--[endif]--> [y/n] yes or no <!--[if !supportEmptyParas]--> <!--[endif]--> [] optional arg <!--[if !supportEmptyParas]--> <!--[endif]--> ... list <!--[if !supportEmptyParas]--> <!--[endif]--> Files

ls --- lists your files ls -l --- lists your files in 'long format', which contains lots of useful information, e.g. the exact size of the file, who owns the file and who has the right to look at it, and when it was last modified. ls -a --- lists all files, including the ones whose filenames begin in a dot,

which you do not always want to see. There are many more options, for example to list files by size, by date, recursively etc.

more filename --- shows the first part of a file, just as much as will fit on one screen. Just hit the space bar to see more or q to quit. You can use /pattern to search for a pattern.

emacs filename --- is an editor that lets you create and edit a file. See the emacs page.

mv filename1 filename2 --- moves a file (i.e. gives it a different name, or moves it into a different directory (see below)

cp filename1 filename2 --- copies a file rm filename --- removes a file. It is wise to use the option rm -i, which will ask you for confirmation before actually deleting anything. You can make this your default by making an alias in your .cshrc file.

diff filename1 filename2 --- compares files, and shows where they differ wc filename --- tells you how many lines, words, and characters there are in a file

chmod options filename --- lets you change the read, write, and execute permissions on your files. The default is that only you can look at them and change them, but you may sometimes want to change these permissions. For example, chmod o+r filename will make the file readable for everyone, and chmod o-r filename will make it unreadable for others again. Note that for someone to be able to actually look at the file the directories it is in need to be at least executable. See help protection for more details.

File Compression
o

gzip filename --- compresses files, so that they take up much less space. Usually text files compress to about half their original size,

but it depends very much on the size of the file and the nature of the contents. There are other tools for this purpose, too (e.g. compress), but gzip usually gives the highest compression rate. Gzip produces files with the ending '.gz' appended to the original filename.
o o

gunzip filename --- uncompresses files compressed by gzip. gzcat filename --- lets you look at a gzipped file without actually having to gunzip it (same as gunzip -c). You can even print it directly, using gzcat filename | lpr

printing
o

lpr filename --- print. Use the -P option to specify the printer name if you want to use a printer other than your default printer. For example, if you want to print double-sided, use 'lpr -Pvalkyr-d', or if you're at CSLI, you may want to use 'lpr -Pcord115-d'. See 'help printers' for more information about printers and their locations.

lpq --- check out the printer queue, e.g. to get the number needed for removal, or to see how many other files will be printed before yours will come out

lprm jobnumber --- remove something from the printer queue. You can find the job number by using lpq. Theoretically you also have to specify a printer name, but this isn't necessary as long as you use your default printer in the department.

genscript --- converts plain text files into postscript for printing, and gives you some options for formatting. Consider making an alias like alias ecop 'genscript -2 -r \!* | lpr -h -Pvalkyr' to print two pages on one piece of paper.

dvips filename --- print .dvi files (i.e. files produced by LaTeX). You can use dviselect to print only selected pages. See the LaTeX page for more information about how to save paper when printing drafts.

Directories Directories, like folders on a Macintosh, are used to group files together in a hierarchical structure.

mkdir dirname --- make a new directory cd dirname --- change directory. You basically 'go' to another directory, and you will see the files in that directory when you do 'ls'. You always start out in your 'home directory', and you can get back there by typing 'cd' without arguments. 'cd ..' will get you one level up from your current position. You don't have to walk along step by step - you can make big leaps or avoid walking around by specifying pathnames.

pwd --- tells you where you currently are.

Finding things

ff --- find files anywhere on the system. This can be extremely useful if you've forgotten in which directory you put a file, but do remember the name. In fact, if you use ff -p you don't even need the full name, just the beginning. This can also be useful for finding other things on the system, e.g. documentation.

grep string filename(s) --- looks for the string in the files. This can be useful a lot of purposes, e.g. finding the right file among many, figuring out which is the right version of something, and even doing serious corpus work. grep comes in several varieties (grep, egrep, and fgrep) and has a lot of very flexible options. Check out the man pages if this sounds good to you.

About other people

w --- tells you who's logged in, and what they're doing. Especially useful: the 'idle' part. This allows you to see whether they're actually sitting there typing away at their keyboards right at the moment.

who --- tells you who's logged on, and where they're coming from. Useful if you're looking for someone who's actually physically in the same building as you, or in some other particular location.

finger username --- gives you lots of information about that user, e.g. when they last read their mail and whether they're logged in. Often people put other practical information, such as phone numbers and addresses, in a file called .plan. This information is also displayed by 'finger'.

last -1 username --- tells you when the user last logged on and off and from where. Without any options, last will give you a list of everyone's logins.

talk username --- lets you have a (typed) conversation with another user write username --- lets you exchange one-line messages with another user elm --- lets you send e-mail messages to people around the world (and, of course, read them). It's not the only mailer you can use, but the one we recommend. See the elm page, and find out about the departmental mailing lists (which you can also find in /user/linguistics/helpfile).

About your (electronic) self

whoami --- returns your username. Sounds useless, but isn't. You may need to find out who it is who forgot to log out somewhere, and make sure *you* have logged out.

finger & .plan files of course you can finger yourself, too. That can be useful e.g. as a quick check whether you got new mail. Try to create a useful .plan file soon.

Look at other people's .plan files for ideas. The file needs to be readable for everyone in order to be visible through 'finger'. Do 'chmod a+r .plan' if necessary. You should realize that this information is accessible from anywhere in the world, not just to other people on turing.

passwd --- lets you change your password, which you should do regularly (at least once a year). See the LRB guide and/or look at help password.

ps -u yourusername --- lists your processes. Contains lots of information about them, including the process ID, which you need if you have to kill a process. Normally, when you have been kicked out of a dialin session or have otherwise managed to get yourself disconnected abruptly, this list will contain the processes you need to kill. Those may include the shell (tcsh or whatever you're using), and anything you were running, for example emacs or elm. Be careful not to kill your current shell - the one with the number closer to the one of the ps command you're currently running. But if it happens, don't panic. Just try again :) If you're using an X-display you may have to kill some X processes before you can start them again. These will show only when you use ps -efl, because they're root processes.

kill PID --- kills (ends) the processes with the ID you gave. This works only for your own processes, of course. Get the ID by using ps. If the process doesn't 'die' properly, use the option -9. But attempt without that option first, because it doesn't give the process a chance to finish possibly important business before dying. You may need to kill processes for example if your modem connection was interrupted and you didn't get logged out properly, which sometimes happens.

quota -v --- show what your disk quota is (i.e. how much space you have to store files), how much you're actually using, and in case you've exceeded your quota (which you'll be given an automatic warning about by the

system) how much time you have left to sort them out (by deleting or gzipping some, or moving them to your own computer).

du filename --- shows the disk usage of the files and directories in filename (without argument the current directory is used). du -s gives only a total.

last yourusername --- lists your last logins. Can be a useful memory aid for when you were where, how long you've been working for, and keeping track of your phonebill if you're making a non-local phonecall for dialling in.

Connecting to the outside world

nn --- allows you to read news. It will first let you read the news local to turing, and then the remote news. If you want to read only the local or remote news, you can use nnl or nnr, respectively. To learn more about nn type nn, then \tty{:man}, then \tty{=.*}, then \tty{Z}, then hit the space bar to step through the manual. Or look at the man page. Or check out the hypertext nn FAQ - probably the easiest and most fun way to go.

rlogin hostname --- lets you connect to a remote host telnet hostname --- also lets you connect to a remote host. Use rlogin whenever possible.

ftp hostname --- lets you download files from a remote host which is set up as an ftp-server. This is a common method for exchanging academic papers and drafts. If you need to make a paper of yours available in this way, you can (temporarily) put a copy in /user/ftp/pub/TMP. For more permanent solutions, ask Emma. The most important commands within ftp are get for getting files from the remote machine, and put for putting them there (mget and mput let you specify more than one file at once). Sounds straightforward, but be sure not to confuse the two, especially when your

physical location doesn't correspond to the direction of the ftp connection you're making. ftp just overwrites files with the same filename. If you're transferring anything other than ASCII text, use binary mode.

lynx --- lets you browse the web from an ordinary terminal. Of course you can see only the text, not the pictures. You can type any URL as an argument to the G command. When you're doing this from any Stanford host you can leave out the .stanford.edu part of the URL when connecting to Stanford URLs. Type H at any time to learn more about lynx, and Q to exit.

Unix Command Dictionary (Hanson)


Table of Contents

UNIX Log In and Out Commands. UNIX Information Commands. UNIX C Language Commands. UNIX makefile Commands. UNIX Directory Commands. UNIX File Commands. UNIX Pipe and Redirection Commands. UNIX Mail Commands. UNIX Control-Key Commands. UNIX Terminal Environment Commands. UNIX Process Commands. UNIX Editor Commands. The ex Editor. The vi Editor.

UNIX Command Dictionaries


The UNIX manual is mostly on line and the UNIX `man' command is used to display parts of the manual. Typing man [command] (CR) will yield information in an almost readable format during a IBM Telnet session. The problem is that you have both UNIX and CMS paging the output. You respond to the UNIX paging prompt `:' with a `(CR)' return for a new page, `d (CR)' for a short new page, u (CR)' for a short page up (back), or `q (CR)' to quit. For the CMS paging prompt `holding', respond with the designated `Clear-key'. If you are using IBM Telnet, then `man [command]' usually produces poor output for the head of the display. The version `man -blou [command] (CR)' should remove underscoring and other backspacing for printing at UIC, but does not work completely. For a quick overview of a command try the `-q' quick option: man -q command] (CR) Alternatively,

man [command] > [file] (CR) is useful for redirecting the output to a file that can later be transfer back to CMS for printing (e.g. by `printdoc'). The UNIX no paging `-r' option does not work in a CMS session, so the CMS user has to press both the `Return-key' for a new UNIX `man' page or the `Clear-key' for a new CMS page depending on the odd UNIX prompt or the CMS ``HOLDING'' prompt, respectively. This abridged UNIX dictionary is only intended to be a short enough list to get you started without being bewildered by the enormous UNIX manuals, but with enough commands to be able to do something useful. For more information use the `man' command or refer to some of the UNIX texts. UNIX is a trademark of Bell Laboratories. The format is [command] [generic operand] : [Definition.] along with a carriage return `(CR)' for each command. DO NOT FORGET that almost all UNIX commands must be in lower case. Do not attempt to learn all of this at once, but read some of it and try it out at an actual computer session. Return to TABLE OF CONTENTS?

UNIX Log In and Out Commands:


login (CR) : Logon command. logout (CR) : Logoff command. Return to TABLE OF CONTENTS?

UNIX Information Commands


man [-option] [command] (CR) : Manual or UNIX help command. The usual quit sequence `q (CR)' can be used to quit long UNIX `man' listings, `(CR)' is used for new `man' pages. During a IBM Telnet session the `Clear-key' is needed for new CMS pages that are not the same as the `man' pages. Otherwise `d', `q' or `Ctrl-c' should work for UNIX like access. finger [user] (CR) : Displays system biography on user `[user]'.

whereis [name] (CR) : Locates source for program or command; e.g. `whereis kermit'. which [name] (CR) : Tell which version of a program or command will be used in your session in case of multiple copies; e.g. `which cc'. whatis [command] (CR) : Describes the command [command]. who am i (CR) : Displays current user id and access. who (CR) : Displays currently logged in users. Return to TABLE OF CONTENTS?

UNIX C Language Commands


cc -o run [file].c (CR) : Compiles source [file].c, using the standard C compiler `scc2.0' and producing an executable named run. In place of `cc', use `scc3.0' or `scc' for the latest version of standard C or `pcc' for portable C. cc -c [file].c (CR) : Compiles source [file].c, using the standard C compiler `scc2.0' and producing an object file named [file].o. cc -hnoopt -o run [file].c (CR) : Compiles source [file].c, using the standard C compiler `scc3.0' and producing an executable file named run without scalar optimization or vector optimization while `hopt' enables scalar and vector optimization, Some other optimization related options are `-hinline' for inlining while `-hnone' is the default no inlining, `-hnovector' for no vector (vector is the default), and `-h listing' for a pseudo-assembler (CAL) listing. Some standard C options are `-htask3' for automatic parallelization (autotasking in crayese) and `-hvector3' for more powerful vector restructuring. Other `-h' suboptions are `ivdep' for ignore vector dependence, `-hreport=isvf' generates messages about inlining (i), scalar optimization (s) and vector optimization (v), and `-hreport=isvf' writes same messages to `[file].v'. A commonly used form will be cc -o run -h report=isvf [file].c (CR) See `man cc' or `docview' for more information. #define fortran : Form of C header statement to permit the call to a fortran subroutine from a C program. For example:

#include <stdio.h> #include <fortran.h> #define fortran main() { fortran void SUB(); float x = 3.14, y; SUB(&x, &y); printf("SUB answer: y = %f for x = %f\n", x, y); }

#pragma _CRI [directive] : Form of C compiler directive placed within the C code, where some example directives are `ivdep' for ignoring vector dependence, `novector' for turning off the default vectorization, `vector' for turning it back on, `inline' for procedure inline optimization, `shortloop', `noreduction', `getcpus [p]', `relcpus', `parallel ........', and `end parallel'. See `vector directives' for instance in `docview' for more information and examples. Return to TABLE OF CONTENTS?

UNIX makefile Commands


make [-options] [step-name] (CR) : Makes the files [files] according to the template in the `makefile'. See the examples `makefile *' on the `getdisk hanson' disk in CMS, e.g., the file `makefile.unicos_2':
# Use ``make -f make.unicos_2 mrun>& pgm.l &; run<data>out''. SOURCES = pgm.f OBJECTS = pgm.o FLAGS = -em mrun : $(OBJECTS) segldr -o run $(OBJECTS) .f.o : cft77 $(FLAGS) $*.f

{CAUTION: The commands, like `segldr' or `cft77', must be preceded by a `Tab-key' tab as a delimiter, but the tab will not be visible in the UNIX listing.} fmgen -m [make-name] -c cft77 -f [-flag] -o [executable] [source].f (CR) : Automatically generates a makefile for compiling under the `cft77' compiler and loading up the executable file named `[executable]'. Invoke with `make -f [make-name] [executable](CR)' and the execute `[executable]'. Also produces steps for profiling, flow-traces, performance

traces, and clean-up, in the heavily documented makefile. For example, `make -c cft77 -f -em -o run pgm.f (CR)' produces a makefile named `makefile', executable named `run', an information listing named `[name in program statement].l' with loops marked by optimization type, etc.; the making is done with `make run (CR)'. Caution: the makefile only uses the source name only when that coincides with the name used in the Fortran `program' statement and only one type of `cft77' flag can be used. These flaws can be corrected by editing the resulting makefile `[make-name]'. Return to TABLE OF CONTENTS?

UNIX Directory Commands


mkdir [name] (CR) : Makes a directory or file group name [name]; e.g. `mkdir dirpgm (CR)' make the directory called `dirpgm'. pushd [name] (CR) : Pushes from the working directory to the directory [name] keeping the sequence of directories in a buffer for `popd'. popd (CR) Pops back up to the prior directory, if `pushd' was used before. For this reason, `pushd' and `popd' are more useful than the regular change directory command `cd'. cd [directory] (CR) : Changes the working directory to the directory [directory]; you can change it back with `cd(CR)' using your own login id; `cd $HOME (CR)' returns the shell back to your home directory. `.' denotes the current directory and `..' denotes the root or parent directory. cd ~[user] (CR) : Changes working directory to that of login id `[user]'. cd $TMP (CR) : changes to your temporary directory; same as `cd $TMP (CR)'. pwd (CR) : Displays working directory; `echo $HOME (CR)' displays the home directory. ls [directory] (CR) : displays the contents of the directory `[directory]'. mv [file1] ... [fileN] [directory] (CR) : moves `[file1]', ..., `[fileN]' to directory `[directory]'; e.g. `mv addtwo.* diradd' moves all files with prefix `addtwo.' to the directory `diradd' which must already exist from a prior 'mkdir diradd' command. This format works for `cp' also.

cp [file1] [directory]/[file2] (CR) : copies [file1] into [file2] in directory [directory]. `cp [file] . (CR)' copies a file to the current directory using the original name. This format works for `mv' also. rmdir (CR) : Removes or erases empty directory. You must first use `rm *' to empty the file. Return to TABLE OF CONTENTS?

UNIX File Commands


ls (CR) : Lists sets or files of current user id or current directory. ls ~[user] (CR) : Lists files or directories under user/account id `[user]'. Also `ls ~/[directory] (CR)' will list the contents of the directory `[directory]' on the same account. ls [string].* (CR) : Lists all current files with prefix [name]. Examples of other forms are `ls *[string] (CR)' or `ls *[string]* (CR)' or `ls *[string1]*[string2]*'. cat [file1] ... [fileN] (CR) : Lists content of N (N .le. 1) argument files catenated. Use `cat [file1] ... [fileN] > [fileM] (CR),' to catenate and store the N files in `[fileM]'. more [file] (CR) : Displays file in half pages of 11 lines; use `q (CR)' for quitting; use `d' for 11 more lines or `u' to go back up 11 more lines; similarly, `f' and `b' produce full pages forward and backwards, respectively; while `/[string]?[string] Caution: works poorly with TELNET from CMS. Use `cat [file] (CR)' with the CMS Clear-key instead. cp [file1] [file2] (CR) : Copies file `[file1]' into file `[file2]'. rm [file1] (CR) : Erases file `[file1]'; can take several file arguments, with the system asking if you really want to do it, `y' for yes and `n' for no target file `[file2]' already exists to avoid unintentional. {The query can be removed in any session by the command `unalias rm (CR)' or permanently by editing the C-shell resource configuration file `.cshrc'.} mv [file1] [file2] (CR) : Renames file `[file1'] as file `[file2]', i.e., moves one file to another.

grep `[str]' [file1] (CR) : Searches for string [str] in file [file1]. ``cat [file1] [file2] | grep `[string]' (CR)'' searches for the pattern `[string]' in the catenated files. Note the different string pattern, with the standard single quote used within the command to enclose the target string when it is more than one word. diff [file1] [file2] (CR) : Displays the difference between files `[file1]' and `[file2]'. chmod [mode] [file] (CR) : Changes the read, write and execute permissions for the file (or files) `[file]' according to the `[mode]' which has form `[[who] [operator] [permission]]'; `[who]' is `u' for the user, `g' for the defined group', `o' for others and `a' = `ugo' for all; `[operator]' is `+' to add and `-' for remove; `[permission]' is `r' for read, `w' for write and `x' for execute; current permissions are displayed with the default long list command `ls [file] (CR)' in the first field or the sample forms `drwxrwxr-x' or `-rwxr--r--' with the first character denoting a directory if `d' is present, a `--' denotes no permission, with each remaining subfield of three denoting the user, group and others, respectively; for example `chmod go-wx *' removes write and execute permissions in the current directory for all but the user, `chmod u+w [file]' adds write permission to only the user; the user may be queried about removing protection for his own files. Return to TABLE OF CONTENTS?

UNIX Pipe and Redirection Commands


The commands in this subsection embody some of the powerful advantages of UNIX. alias [command nickname] `[command definition]' (CR) : Makes alias for commands to save typing. The quotes around the definition are not required for single words, but only when the definition contains delimiters like blanks. If used a lot, put the `alias' in the group account `.cshrc' file and execute by `source .cshrc}. {`csh' is the UNIX C-shell, one of the UNIX operating sub-systems, and `rc' stands for resource configuration.} [command] > [file] (CR) : Redirects standard output of command [command] to file [file]. E.g., `cat [fn1] [fn2] > [fn3] (CR)', catenating two files into a third file.

[command] > & [file] (CR) : Redirects standard and diagnostic or error output of [command] to file [file]. E.g., `run > & [output] (CR)', puts compiled listing and errors into the file pgm.l when pgm.f is compiled. [command] >> [file] (CR) : Redirects standard output of `[command]' and appends it to `[file]'. E.g., `run < [data] >> [output] (CR)', catenates the new output with the current file `[output]'. [cmd1] | [cmd2] (CR) : Pipes output of command `[cmd1]' to input of command `[cmd2]'. E.g., `ls -l | grep `Jan 31' (CR)' lists only those files last changed on January 31. Caution: the string `Jan 31' must be enclosed in single quotes, but the quotes are optional for single words without delimiters. [command] & (CR) : Executes `[command]' in the background, so you can work at something else in your session. E.g., `run < [data] > [output] & (CR)', execute `run' and stores results into the file `[output]'. history (CR) : Lists the history of the most recent commands entered. ![number] (CR) : Repeats execution of the command numbered `[number]' in the `history' listing. ![string] (CR) : Repeats execution of the last command beginning with the pattern [string] in the `history' listing. ![string]:p (CR) : Repeats listing of the last command beginning with the pattern `[string]' in the `history' listing, but does not execute it. You can return (CR) to execute or you can modify it by the command that follows immediately below. ^[str1]^[str2] (CR) : Replaces string `[str1]' with `[str2]' in the previous command and executes the modified command. Return to TABLE OF CONTENTS?

UNIX Mail Commands


mail (CR) : Shows user`s mail; use the subcommand `t [N](CR)' to list message number `[N]' , `s [N] mbox (CR)' to append message `[N]' to your mailbox `mbox' file or `s [N] [file](CR)' to append `[N]' to another file; `e [N] (CR)' to edit number [N] or look at a long file with `ex' {see Section on `EX' below}; `v [N] (CR)' to edit number [N] or look at a long file with `vi';

`d [N] (CR)' deletes {your own mail!} `[N]'; `m [user] (CR)' permits you to send mail to another account `[user]'; a `~m [N] (CR)' inside the message after entering a subject, permits you to forward message `[N]' to `[user]', `\d (CR)' to end the new message {see the send form below;`x' quits `mail' without deleting {use this when you run into problems}; and `q (CR)' to quit. mail [user] (CR) : Sends mail to user `[user]'; the text is entered immediately in the current blank space; carriage return to enter each line; enter a file with a `~r[filename] (CR)'; route a copy to user `[userid]' by `~c[userid] (CR)'; enter the `ex' line editor with `~e (CR)' or `vi' visual editor with `~v (CR)' (see Sections on EX and on VI) to make changes on entered lines, exiting `ex' with a `wq (CR)' or `vi' with a `:wq' (CR)'; exit `mail' by entering `\d (CR)'. {A bug in the current version of Telnet does not allow you to send a copy using the `cc:' entry. However, ending with the ``hack'' `\d [user_cc] (CR)' should get a copy to user `[user_cc]'.} UNIX users should not encounter IBM Telnet problems. mail [userid]@uicvm.cc.uic.edu < [filename] (CR) : Sends the UNIX file `[filename]' to user `[userid]' at UICVM, i.e., to `[userid]'`s CMS, as with CMS SENDFILE. mail [name]@[machine].[dept].uic.edu < [filename] (CR) : Sends the UNIX file `[filename]' to user `[name]' on some UNIX or other machine. from (CR) : Tells who the mail is from. Return to TABLE OF CONTENTS?

UNIX Control-Key Commands


Ctrl-h : Erase or backspace over character; note the CTRL-key and h-key must be simultaneously pressed. Ctrl-c : Interrupt or break character; stops printing and returns to UNIX. {Caution: for a IBM TELNET session, should use \c (CR), but this masked interrupt will not work during long listings due to interference of the CMS `Clear-key' in IBM Telnet sessions.} Ctrl-s : Stop character {else or IBM Telnet use ` \s (CR)'}. Ctrl-q : Quiet character {else for IBM Telnet use `\q (CR)'}.

Ctrl-u : Kill character {else for IBM Telnet use `\u (CR)'}. Ctrl-w : Word erase character {else for IBM Telnet use `\w (CR)'}. Return to TABLE OF CONTENTS?

UNIX Terminal Environment Commands


printenv (CR) : Print out environment meta parameters such as defaults, terminal types and key assignments, eg., SHELL, PATH, TERM, NCPUS, HOME, TMP, AFS, and AFSTMP. setenv TERM vt100 (CR) : Sets `TERM' variable to type `vt100', which should be the default and can be checked by using `printenv', else use `h19b' or your correct terminal emulation if recognizable by the remote host. The recognizable terminal type are in the alphabetized subdirectories of `/usr/lib/terminfo', e.g., `v' directory contains vt100 listings. Caution: `YTERM' is ideal for PC to CMS communication, but does not have a terminal type that is recognizable by UNIX systems ('vt100' may sometimes work as a substitute, but `unknown' type means a poor line edit session). setenv TERMCAP vt100 (CR) : Sets `TERMCAP' variable to type `vt100', else use `h19b' etc. You can put customized terminal configuration in the file `.termcap' and enable it with the command `setenv TERMCAP $HOME.termcap' either in your shell or in your '.login' file. tset -m :h19b (CR) : Sets terminal type to Heathkit or Zenith type `h19b'. WARNING: Several terminal commands are given here, because you might have to try several before you find one that works. Note that one of the biggest problems in working with advanced, remote computers is COMMUNICATION and that much of this local guide is intended to solve communication problems. stty erase \[key](CR) : Set or reset the terminal (`tty') erase key to `[key]'. stty all (CR) : Display usual Control characters; with arguments can be use to set terminal communication variables; also try `stty everything'. Return to TABLE OF CONTENTS?

UNIX Process Commands


jobs - l (CR) : Display a simple single line with currently active job status.

ps (CR) : Display current process ids (``pid'') needed for killing. ps t[N] (CR) : Displays ``pid'' for terminal or tty [N]. kill -9 [pid] (CR) : Means a ``sure kill'' of ``pid'' [pid]; this becomes necessary when you lose control of a process or have a session aborted. CAUTION: Aborted sessions are not uncommon so it is helpful to develop skills of a super process (program) killer. Return to TABLE OF CONTENTS?

UNIX Editor Commands


ex [file] (CR) : `EX' line editor. This is the preferred editor for LINE EDIT MODE with TELNET. `:' is the `ex' prompt. `ex [file1] ... [fileN] (CR)' is the form used for multiple files with the `n' command used to go to the next file, rather than `q' to quit. Ex can also be used in vi with ':' as a prefix, when vi works. `ed' is another line editor with less availability. More details on `ex' are given in the next section. vi [file] (CR) : Invokes the UNIX full screen editor `vi' to edit file [file]; this visual editor has a large set of subcommands. Warning: the `vi' command will NOT work properly with the LINE MODE of CMS TELNET and YOU WILL LIKELY GET IN A STUCK SESSION IF YOU TRY IT. (Try to get access to a UNIX system or PC Telnet systems, such as those in the 2249f SEL PC Lab.) vi -r [file] (CR) : Form of `vi' used to recover `[file]' after aborted session. Similarly, `ex -r [file] (CR)' is for an aborted `ex' session. view [file] (CR) : This is the read only form of `vi'. Return to TABLE OF CONTENTS?

ex Editor
`Ex' is the UNIX line editor (`ed' is another UNIX line editor) and `vi' is the full screen editor that is disabled by IBM TELNET. The prompt is `:', but the user enters input at the bottom of the screen with IBM TELNET line mode. In `ex' `.' means the current line, `$' means the last line, and `%' means the whole range of lines `1,$'. `[L1],[L2]' denotes the range from line `[L1]' to line `[L2]'. The user may want to do major editing on the CMS multi-line editor XEDIT and send the file using the FTP file transfer protocol. Some students may have had experience

with this editor (or the similar `ed' editor) from EECS courses. These `ex' commands can be used within the `vi' editor by typing a colon `:' in front of the `ex' command, which is another reason for learning `ex' with `vi' when you have an account where `vi' can be used. 0a (CR) : This form of the append subcommand puts you in input mode starting with line 1, new lines are entered following a `(CR)', and input mode is ended with a solitary or sole `.' on a line with an immediate `(CR)', i.e., `.(CR)'. This is not the usual method for opening a new file, but the usual way does not work correctly with the IBM Telnet and CMS pass through. q! (CR) : Quit or abort `ex' without saving. Use, especially, in an emergency when your edit session seems hopeless, and you want to start over at the beginning. w [file] (CR) : Save (write) or resave into the new file [file], but do not end. If no [file] is specified, then the current file is resaved. w! [file] (CR) : Resave (rewrite) into an old file [file], but do not end. `Ex' will not write over an existing non-current file with the `w' command without the `!'. wq (CR) : Save and quit ex. w|n (CR) : When `ex' is used on more than one file, writes the current file and makes `ex' go to the next file. `|' puts two `ex' commands together. nu (CR) : Number current line. set number (CR) : Number all lines; line numbers are needed for effective use or `ex'; by putting this and other commands in your `.exrc' Ex Resource Configuration file, the command will be operative until it is changed. set list (CR) : Show carriage control characters, such as End-Of-Line ($ = EOL). /[string] (CR) : Search forward for pattern [string]. ?[string] (CR) : Search backward for pattern [string]. [L1],[L2] p (CR) or [L1],[L2] l (CR) : Prints or lists (listing control characters) lines [L1] to [L2]. `% (CR)' lists the whole range of lines, and `., $ (CR)' lists the current line to the last line.

$ (CR) : Prints last line. \d (CR) : Scrolls lines {In UNIX, use `Ctrl-d'}. [L1],[L1]+[N] p (CR) : Prints lines [L1] to [L1]+[N]. [L1],[L2] d (CR) : Deletes lines [L1] to [L2]. [L1] i (CR) : Insert at line [L1]. End with a lone `.(CR)' after the last input line. Does not work on an empty file. [L1] a (CR) : Append after line [L1]. End with a lone `.(CR)' after the last input line. Does not work on an empty file. [L1] o (CR) : The UNIX open command does not work correctly with IBM TELNET because the usual end commands do not work properly. End with a line `.(CR)'. [L1] c (CR) : Change line [L1]; end with `.(CR) alone. [L1],[L2] co [L3] (CR) : Copy lines [L1] to [L2] to after line [L3]. [L1],[L2] m [L3] (CR) : Move lines [L1] to [L2] to after line [L3]. [L1],[L2] t [L3] (CR) : Take {copy} lines [L1] to [L2] to [L3]; destination [L3] can not be in ([L1] to [L2]-1). [L1],[L2] g/[string]/[commands] (CR) : Globally search for all occurrences of pattern [string] in lines [L1] to [L2] (or current line only if no lines are given), and execute commands [commands] on matching lines. [L1],[L2] s/[string1]/[string2]/g (CR) : Substitute [string2] for all [string1] in lines [L1] to [L2] (or current line only if no lines are given). If `gp' is used in place of `g' then print change(s). [L1],[L2] & (CR) : Repeat prior substitution command. g/[string1]/s/{/}[string2]/gp (CR) : Globally substitute [string2] for each [string1] in all lines and print changes; works globally; use `?' in place of `/' if [string*] contains a `/'. [L] r [file] (CR) : Read in or append file [file] at line [L]. u (CR) : Undo most recent substitution.

[L1],[L2] ya [buffer] (CR) : Yank lines [L1] to [L2] to named buffer [buffer]. See `pu'. [L1],[L2] d [buffer] (CR) : Delete and yank lines [L1] to [L2] to named buffer [buffer]. See `pu'. [L3] pu [buffer] (CR) : Put lines from named buffer [buffer] after line [L3]. See `ya'. g/^$/d (CR) : Delete all null lines. s/A\/B/A\/C/g (CR) : Illustrates the use of `\' to change a string containing the `/' delimiter to change `A/B' to `A/C' globally. Return to TABLE OF CONTENTS?

vi Editor
The UNIX full screen editor `vi' is a tightly designed editing system in which almost every letter has a function and the function is stronger for upper than lower case. However, a letter and its actual function are usually closely related. It is important to remember that the `(Esc)' escape key ends most functions and a `(Esc), (Esc)' double application certainly ends the function with the ring of a bell. The subcommand `u' undoes the last function (presumably an error). Use `:q! (CR)' to end with out saving, especially in hopeless situations. Use `:wq (CR)' to resave and end {`ZZ' also resaves and ends, but will not resave if the file has been saved in another file and no further changes have been made}, or `:w (CR)' to only resave. The character `:' prompts the UNIX line editor `ex' which you can think of as being embedded in `vi'. Some of the above critical `vi' subcommands are repeated below with others. Most `vi' subcommands are not displayed when used and do not take a carriage return `(CR)'. The fact that most keys have a meaning both as single characters and as concatenations of several characters has many benefits, but has disadvantages in that mistakes can turn out to be catastrophic. {Remember that `(Esc), (Esc), u' key sequence!} {WARNING: `VI' is disabled during an IBM Telnet session.} (Esc) : End a command; especially used with insert `i', append `a' or replace 'R'. (Esc), (Esc) : Ensured end of a command with bell; press the Escape-key twice; use it.

u : Undoes last command; usually used after `(Esc)' or `(Esc), (Esc)'; if undoing is worse then repeat `u' again to undo the undoing. :set all (CR) : Display all vi options. Use this ex command when your initial vi session is poor. Customized options are placed in the `.exrc' ex resource configuration profile. :w (CR) : Save or resave the default file being edited, but do not end. :w [file] (CR) : Save into a new file [file], but do not end. :w! [file] (CR) : Save or resave into an existing file [file], but do not end. :q (CR) : Quit vi without saving, provided no changes have been made since the last save. :q! (CR) : Quit vi without saving, living the file as it was in the last save. :wq (CR) : Save the default file being edited, and quit. ZZ : Save the edited file, provided not changes have been made since the last save of the edited file to any file, and quit `vi'. {Warning: if you just saved the edited file into any other file, the file will NOT be resaved. `:wq (CR) is much safer to use.} h or j or k or l : The arrow keys, such that
k = up ^ | h = left <-- --> right = l | v j = down

each take a number prefix that moves the cursor that many times. (CR) : moves cursor a line forward; `+' also does. -- : Moves cursor a line backward. [N] (CR) : Moves cursor [N] lines forwards. [N]-- : Moves cursor [N] lines backwards.

Ctrl-f : Moves cursor a page forward. Ctrl-b : Moves cursor a page backward. Ctrl-d : Moves cursor a half page down. Ctrl-u : Moves cursor a half page up. [L]G : Go to line [L]. `1G' moves the cursor to the beginning of the file (BOF). G : Go to the last line just before the end of file (EOF) mark. `$G' does the same thing. 0 : Go to beginning of the line (BOL). ^ : Go to beginning of the nonblank part of the line (BOL). ~ : Got to first nonblank character on a line. $ : Go to end of the line (EOL). [N]| : Go to column [N] of the current line. % : Find the matching parenthesis. /[string] (CR) : Find the next occurrence of `[string]' forwards. Use `n' to repeat, or `N' to search backwards. ?[string] (CR) : Find the next occurrence of` [string]' backwards. n : Repeat last `/[string] (CR)' or `?[string] (CR)'; think of the file as being wrapped around from end to beginning, so that when you return to the start you know that you have found all occurrences. N : Repeat last `/[string] (CR)' or `?[string] (CR)', but in reverse. . : Repeat last change. This is best used along with the repeat search `n' or `N'. i[string](Esc) : Insert a string `[string]' before current character at the cursor; the subcommand `i' itself and other subcommands are not displayed; a `(CR)' in the string during the insert is used to continue input on additional lines; end with the escape key `(Esc)' or `(Esc), (Esc)'.

o[string](Esc) : Opens a new line below the current line for insertion of string `[string]'; end with `(Esc)' or `(Esc), (Esc)'; use for POWER TYPING input for an old or new file; `O[string](Esc)' opens a new line above the current line for insertion. I[string](Esc) : Insert a string at the beginning of the current line (BOL), else is like insert `i';a `(CR)' in the string during the insert is used to continue input on additional lines; end with `(Esc)' or `(Esc), (Esc)'. J : Joins next line to current line. a[string](Esc) : Appends a string `[string]' following the current character at the cursor, else it works like insert `i'; use `(CR)' in the string to continue input onto new lines; end with `(Esc)'; also use for POWER TYPING. A[string](Esc) : Appends a string `[string]' at the end of a line (EOL), works like `i' or `a'; use `(CR)' in the string to continue input onto new lines; end with `(Esc)'; also use for POWER TYPING. r[C](SPACE) : Replace a single character over the cursor by the single character [C]; finalize with the Space-bar. R[string](Esc) : Replace a string of characters by `[string]' in until `(Esc)' is typed to end. s[string](Esc) : Substitutes the string `[string]' for the single character at the cursor. The multiple form `[N]s[string](Esc)' substitutes `[string]' for the `[N]' characters starting at the cursor. x : Delete the current character at the cursor. d(SPACE) : Deletes a single character. `[N]d(SPACE)' deletes `[N]' characters. dd : Deletes the current line. `[N]dd' deletes `[N]' lines. D : Deletes from the cursor to the end of line (EOL). dw : Deletes the current word; `[N]dw' deletes `[N]' words. w : Move cursor to the beginning of the next word. `[N]w' moves the cursor `[N]' words forward. `[N]b' moves it `[N]' words backward. `[N]e' moves it to the end of the word.

[N]y(SPACE) : Yanks `[N]' characters starting at the cursor and puts them into the default buffer. `[N]yy' yanks `[N]' lines. p : Puts the current contents of the default buffer after the cursor if characters or after the current line if lines. Helpful to use right after a character yank `y' or a character delete `d' or a line yank `yy' or a line delete `dd', along with a search `/[string](CR)' or repeat search `n'. and a repeat change `.'. `P' puts the contents of the default buffer before the current line. "b[N]Y : Yank [N] lines starting with the current line to the buffer labeled b; the double quote {"} is used to avoid an id conflict with subcommand names; any letter other than `x' can be used to name the buffer; safer than the line yank `yy' because it is very easy to accidentally change the default buffer. "b[N]dd : Deletes [N] lines starting with the current line to the buffer labeled `b'. "bp : Put back lines from the buffer labeled `b' after or below the cursor; use after a yank or delete to a labeled buffer to move groups of lines from one location to another. "bP : Put back lines from the buffer labeled `b' before or above the cursor; use after a yank or delete to a labeled buffer to move groups of lines from one location to another. Some `ex' editor commands that are useful in `vi' follow the `:' prompt. See the previous section on `ex' for more commands. :nu (CR) : Number current line. :[L1],[L2] d (CR) : Deletes lines `[L1]' to `[L2]'. :[L1],[L2] m [L3] (CR) : Move lines `[L1]' to `[L2]' to after line `[L3]'. :[L1],[L2] t [L3] (CR) : Take [copy] lines `[L1]' to `[L2]` to `[L3]'; destination `[L3]' can not be in `[L1]' to `[L2]-1'. :[L1],[L2]s/[string1]/[string2]/g (CR) : Substitute `[string2]' for all `[string1]' in lines `[L1]' to `[L2]' only. :s/[string1]/[string2]/gp (CR) : Substitute `[string2]' for all `[string1]' in current line only and print change(s).

:g/[string1]/s/{/}[string2]/gp (CR) : Globally substitute `[string2]' for each `[string1]' in all lines and print changes; works globally; use `?' in place of `/' if `[string*]' contains a `/'. :[L]r [file] (CR) : Append file [file] at line `[L]'. Return to TABLE OF CONTENTS?
Web Source: http://www.math.uic.edu/~hanson/UNIX/UnixDictionary.html Email Comments or Questions to hanson@uic.edu

S-ar putea să vă placă și