320 likes | 393 Views
UNIX BOOT CAMP Intermediate. Department of Computer Science University of Saskatchewan Autumn 2007. Why are we here?. Intended Audience UNIX beginners Command-line beginners Those with some, but limited experience. Desired outcomes Take the edge off of something new.
E N D
UNIX BOOT CAMPIntermediate Department of Computer Science University of Saskatchewan Autumn 2007
Why are we here? • Intended Audience • UNIX beginners • Command-line beginners • Those with some, but limited experience. • Desired outcomes • Take the edge off of something new. • Make your computer time more productive. • Understand more about under-the-covers stuff that goes on when using a computer • Extra confidence in 214, 332 and other courses.
Why are the others here? • There's always someone who knows more than you. • Share in community knowledge building • Teamwork • No one knows everything. • Discover what's worth knowing and what will help you succeed. • Read the rest on a need to know basis. • Know where to look.
Introduction • UNIX, Linux, *BSD form a family of Operating Systems that conform to an interface known as POSIX. • Now, instead of writing for 4 different systems a person can write for POSIX. • Can be assured that ls on BSD has the same functionality as ls on Linux, improving portability. • Sometimes people add extra functionality. • Most modern operating systems use ideas from UNIX. • OSX uses many BSD tools. • Windows uses the BSD TCP/IP stack.
Some bits of UNIX Philosophy • Programs should be small and specific. • A well written program will do one or two things and do them very well. It’s common to connect many programs together at once to get complex behaviour. • Everything is a file. • Files, sockets, pipes and hardware devices can all be accessed in a similar way. • Keep It Simple • Binary file formats are avoided because they require tools to modify. Text files are preferred.
Logging In/Bash Shell • Prompt screen • Username (NSID) and password • Starts a Window manager or shell • KDE is the default window manager • Has all of the nice GUI things people like. • bash is the default shell for Linux. • Sometimes csh ( C-Shell ) is installed. • Interprets commands, executes them, and returns to the prompt. • Has all sorts of nice features. Job control, support for piping, I/O redirection, etc.
Commands • Should look something like this. • [abc123@stealth10:~] • General Format of Commands • ssh stealth10.usask.ca • ssh is the command name. This program is used for getting a shell on remote hosts. • stealth10.usask.ca is the destination host. • cp foo newfoo • cp is the command name. • foo is the source file. • newfoo is the destination file.
More on Commands • Options • Some command options have arguments associated with them, but not always. • ssh -l abc123 -C stealth10.usask.ca • ssh is the command name. • -l specifies a username that’s used to log in. • The argument to -l is “abc123” • The -C option compresses network traffic. It has no argument associated with it. • Which commands have which options? • No rhyme or reason. • This is why the man pages are so important.
File Systems and File System Interaction • Contents of the disk are files. Files are stored in directories. • Files are named sequences of bytes, often (but not always) stored on a disk device • Directory structure has a root and forms a hierarchical structure (tree) • Children nodes off the root can be files or other directories (sometimes called folders) • System files, device directories, user files • /usr, /var, /home, /student, /faculty, /dev • cd - moves between directories
Manipulating Files • Listing contents of a directory • ls • Copying • cp • Moving • mv • Deleting • rm • Linking • ln
Links and More • Symbolic links • More than one way to get to a file • Pathnames • Absolute path '/' • Relative path './' • Parent directory '..', current '.' • Making directories • mkdir • Removing directories • rmdir, rm -rf
Patterns in Files and Automatic Completion • Wildcards in file names • ? matches a single character • * matches 0 or more characters • [ch] matches a 'c' or and 'h' • Completion • many shells allow the use of a command-completion character to complete the remaining unique part of a command or filename. • Saves typing
Everything is a File • File operation metaphor for the entire system • File descriptors • A directory is a file • A disk is a file • A console window/terminal is a file • Standard file descriptors for regular programs • stdin, stdout, stderr (more about this later)
Permissions and Groups • User Groups • User, group, other • Allows a specific set of users access to a specific set of files/directories • Access permissions • Access granted according to type of access • Read, write, execute (for directory, execute is traverse) (Octal number) • ls -l(-rw-rw-r-- 1 abc123 222 Sep 3 8:18 file.c) • permissions for that file are 664 • Super user • not subject to access restrictions
Other things in Filesystem • These are by convention and can vary widely. • /dev - Devices • /etc - Configuration Files • /bin - System binary files. • /sbin - Superuser binary files • /tmp - Temporary files • /proc - Kernel information files. • /lib - Standard programming libraries.
Where to find Files • /usr - User added files. • /usr/bin/ - User added commands. • /usr/include - Standard system header files • /usr/lib/ - User added libraries.
Help and Details for commands • man, apropos • All commands under unix have a “man” page that details what the command does and what its command line options are. • info • An alternative to man pages that have links to related commands. • --help • A common command line option to get more information. It could be also -? or -h. • Google • There are excellent pages available on the web. UNIX gurus love to write.
Locating commands • which • Used to find which version of a command will be used when run. Very useful for figuring out path problems. • locate • Searches for files locally using a database that’s updated nightly.
The VI text editor • Two modes, insert and command. • Very lightweight, but powerful. • Good for editing remotely. • Available on almost all UNIX systems. • Extensible and customizable. • Insert mode • Used for entering text, like you would in most editors. • Enter insert mode (i, a, I, A, Insert) • Exit insert mode (ESC)
VI again • Command mode • Used for doing powerful text modifications. • Look for a pattern in the file. • /pattern • Do a global search and replace. • :%s/search/replace/g • To delete a line, hit “dd” • To yank (copy) a line, hit “yy” • To paste, hit “p” or “P” • Save and Exit • :wq, :q! (quit without save), :w filename
The VIM text editor • Syntax highlighting • Code completion • Visual selection mode • Split Window Editing using -o or -O • Vimdiff advanced diff viewer/editor • Many neat time saving features • Edit compressed files in place • vim file.gz file.bz2
The Emacs text editor • Modeless editor • Always in insert mode • Commands are combinations of ctrl, alt, or esc (Meta) plus series of keys • e.g. save is Ctrl-x Ctrl-s ( ^x^s in shorthand) • quit ^x^c • M->x goto-line • Has a command window version and a GUI version
Emacs, continued • A GUI Modeless editor • Keeps multiple files open at one time via multiple buffers, multiple menus • Has a command window for running commands within the editor • search for pattern in files • automatic compile • Works from menus, can learn keystrokes from the menu
Emacs, one more time • Programmable set of keys • .emacs defines personalized keystroke bindings • examples (ask a guru, a.k.a. Greg Oster) • (define-key ctl-x-map "\^E" 'compile) • (define-key ctl-x-map "\^N" 'next-error) • (define-key ctl-x-map "\^I" 'isearch-forward) • (define-key ctl-x-map "\^L" 'goto-line) • (define-key esc-map "s" 'shell) • (define-key esc-map "t" 'auto-fill-mode) • (define-key esc-map "q" 'query-replace) • (define-key esc-map "r" 'replace-string)
Remote Access • ssh (ssh -X) • Used for remotely logging in to another UNIX box. The -X flag lets you run graphical programs on the remote machine and have them show up on the local machine. • scp provides secure copying over a network. • sftp is a secure ftp implementation using ssh. • rdesktop • Linux program that accesses Windows machines that are accepting remote logins. • The discworld.usask.ca server is available for student use.
Job Control • Foreground • When a command that is running in the foreground control will be returned to the user when it finishes. • Background • When a command is running the background, the user has control and command rolls along by itself. • ^Z (CTRL-Z) • If a command is running, and you hit ^Z, the command will be stopped. From here, you can use fg to bring it to the foreground again.
Job Control II • fg • Brings the command last put in the background into the foreground. • bg • When a command is stopped, you may use bg to put it in the background. • jobs • Shows a list of all of the jobs currently running. Each job has a number associated with it that you can supply as an argument to bg and fg.
Job Control III • How to do this in bash. • cmd • Runs the command cmd in the foreground. • cmd1; cmd2 • Runs cmd1 in the foreground and then starts cmd2 in the foreground when cmd1 is finished. • cmd1 & cmd2 & • Runs cmd1 and cmd2 in the background.
Pipes and Redirection • The really elegant part of UNIX. • stdin defaults to the keyboard, but if redirection is used, we can read stdin from elsewhere. • cmd1 | cmd2 • Runs cmd1 and supplies the output of cmd1 as input to cmd2. • This is very useful for chaining commands. • cmd1 > file • Writes the output of cmd1 to a file. It will overwrite the original contents of the file. • cmd1 >> file • Appends the output of cmd1 to a file. • cmd1 < file • Runs cmd1, the input will be read from a file.
Java • Object Oriented programming language • Very popular • Universal compiler: javac • Run using: java • e.g. • javac myProgram.java • java myProgram
HelloWorld.java • Try it.
Eclipse • What is an IDE? • Integrated Development Environment • Text Editor and much, much more • Why use one? • Good for larger projects • Saves time on programming tasks • Isn’t VI/eMacs easier/simpler/faster? • Sometimes, but not for larger projects • Depends on your point of view...