What is Unix?
• A multi-user networked operating system
– “Operating System”
• Handles files, running other programs, input/output
• Just like DOS or Windows
– “Networked”
• Designed for server use
• Networking is an intrinsic part of the system
– “Multi-user”
• Every user has different settings and permissions
• Multiple users can be logged in simultaneously
• Tons of fun!!! ☺
This tutorial provided by UW ACM
http://www.cs.washington.edu/orgs/acm/
Questions to hctang@cs, zanfur@cs, awong@cs
IWS (Instructional Work Servers)
• Accessing the server (i.e., green):
– Terminal Programs:
• telnet (insecure; cannot be used)
• ssh (via the TeraTerm or Putty programs)
– Start -> Program Files -> Desktop Tools -> TeraTerm
– File Transfer Programs
• ftp (insercure; cannot be used)
• \\<server name>\<username>
– Start -> Run
– e.g -- \\fiji\zanfur
• Secure file transfer (from C&C)
– Xwindows
• Come to the ACM tutorial!
1
Logging In
• Which server you use (almost) doesn’t matter – all four
allows access to your files
• Although your Windows and Unix usernames (and
passwords) are the same, they are two separate
accounts
– Your z: drive is not your Unix account
• Connecting:
– We’ll connect to the Unix machines via ssh
– After connection, you are presented with a login prompt
– After logging in, you’re placed in your home directory
(where your personal files are located)
The Command Prompt
• Commands are the way to “do things” in Unix
• A command consists of a command name and options called
“flags”
• Commands are typed at the command prompt
• In Unix, everything (including commands) is case-sensitive
[prompt]$ <command> <flags> <args>
fiji:/u15/awong$ ls –l -a unix-tutorial
Command (Optional) arguments
Command Prompt
(Optional) flags
Note: In Unix, you’re expected to know what you’re doing. Many
commands will print a message only if something went wrong.
2
Two Basic Commands
• The most useful commands you’ll ever learn:
– man (short for “manual”)
– info
• They help you find information about other commands
– man <cmd> or info <cmd> retrieves detailed information
about <cmd>
– man –k <keyword> searches the man page summaries
(faster, and will probably give better results)
– man –K <keyword> searches the full text of the man pages
fiji:/u15/awong$ man –k password
passwd (5) - password file
xlock (1) - Locks the local X display
until a password is entered
fiji:/u15/awong$ passwd
Directories
• In Unix, files are grouped together in other files called
directories, which are analogous to folders in Windows
• Directory paths are separated by a forward slash: /
– Example: /u10/hctang/classes/cse326
• The hierarchical structure of directories (the directory
tree) begins at a special directory called the root, or /
– Absolute paths start at /
• Example: /u10/hctang/classes/cse326
– Relative paths start in the current directory
• Example: classes/cse326 (if you’re currently in /u10/hctang)
• Your home directory is where your personal files are
located, and where you start when you log in.
– Example: /u10/hctang
3
Directories (cont’d)
• Handy directories to know
~ Your home directory
.. The parent directory
. The current directory
• ls
– LiSts the contents of a specified files or directories
(or the current directory if no files are specified)
– Syntax: ls [<file> … ]
– Example: ls backups
• pwd
– Print Working Directory
Directories (cont’d further)
• cd
– Change Directory (or your home directory if unspecified)
– Syntax: cd <directory>
– Examples:
• cd backups/unix-tutorial
• cd ../class-notes
• mkdir
– MaKe DIRectory
– Syntax: mkdir <directories>
– Example: mkdir backups class-notes
• rmdir
– ReMove DIRectory, which must be empty
– Syntax: rmdir <directories>
– Example: rmdir backups class-notes
4
Files
• In Unix, unlike Windows,, file types (e.g. “executable
files, ” “data files,” “text files”) are not determined by
file extension (e.g. “foo.exe”, “foo.dat”, “foo.txt”)
• Thus, the file-manipulation commands are few and
simple …
• rm
– ReMoves a file, without a possibility of “undelete!”
– Syntax: rm <file(s)>
– Example: rm tutorial.txt backups/old.txt
Files (cont’d)
• cp
– CoPies a file, preserving the original
– Syntax: cp <sources> <destination>
– Example: cp tutorial.txt tutorial.txt.bak
• mv
– MoVes or renames a file, destroying the original
– Syntax: mv <sources> <destination>
– Examples:
• mv tutorial.txt tutorial.txt.bak
• mv tutorial.txt tutorial-slides.ppt backups/
Note: Both of these commands will over-write existing files
without warning you!
5
Shell Shortcuts
• Tab completion
– Type part of a file/directory name, hit <tab>, and the shell will finish as
much of the name as it can
– Works if you’re running tcsh or bash
• Command history
– Don’t re-type previous commands – use the up-arrow to access them
• Wildcards
– Special character(s) which can be expanded to match other file/directory
names
* Zero or more characters
? Zero or one character
– Examples:
• ls *.txt
• rm may-?-notes.txt
Editing Text
• Which text editor is “the best” is a holy war. Pick one and
get comfortable with it.
• Three text editors you should be aware of:
– pico – Comes with pine (Dante’s email program)
– emacs/xemacs – A heavily-featured editor commonly
used in programming
– vim/vi – A lighter editor, also used in programming
6
Printing
• Printing:
– Use lpr to print
• Use –h (no header) and –Zduplex (double-sided) to save paper
– Check the print queue (including Windows print jobs!) with lpq
– lprm to remove print jobs (including Windows print jobs)
– For the above commands, you’ll need to specify the printer with
–P<printer name>
• Check out enscript (quizlet: how do you find information about
commands?) to print text files nicely!
– WARNING: Do NOT use enscript with postscript files!
Programs and Compilation
• To compile a program:
– g++ <options> <source files>
– Recommended: g++ -Wall –ansi –o <executable_name> *.cpp
• -Wall – Warnings: ALL
• -ansi – Strict ANSI compliance
• Quizlet: what does *.cpp mean?
• What’s an “executable”?
– In Windows, double-clicking on an icon runs a program
• E.g. double-click on C:\Windows\notepad.exe
– In Unix, you can run your executable from the command line!
• Type the executable name at the prompt, just like a command
– In fact, commands are actually executables
• However, you may need to specify the path to your executables
– ./<program> runs <program> in the current directory
• Example:
ceylon:ehsu% g++ -Wall –ansi –o hello hello.cpp
ceylon:ehsu% ./hello