Navigating Unix UCR Technical Seminar Series Fall ’03 Dan Berger dberger@cs Outline Unix History/Philosophy File System Basics Utilities You Shouldn’t Leave ~/ Without Web, Mail, Office, Windows Printing Looking for Help Asking for Help Learning More Slides online at http://www.cs.ucr.edu/~dberger A Brief History of Time^wUnix Born in the late 60’s at AT&T/Bell Labs out of the MULTICS project. Ran on a PDP-11. Thompson, Ritchie, Kernighan, among others. In the 70’s AT&T was prohibited from selling Unix, so they gave it to universities. The contributions from some of those universities (such as Berkeley), and later from MIT, evolved Unix into the basic form it still holds today. Unix Philosophy Small tools, each of which does one job well. Build pipelines of these tools to accomplish loftier goals. Users interact with the system through the “shell” – a command-line interface. It’s all about user choice – why have one when you can have three? “Here’s the rope, there’s the tree – help yourself.” File System Basics: / There’s no “C:\”, or “Macintosh HD” – the file system is a tree, rooted at “/” Additional volumes can be “mounted” at (fairly) arbitrary spots in the tree. Some key portions of the tree: /bin /etc /dev /home /lib /proc /usr /mnt /tmp /var . and .. Every directory has two special entries: “.” and “..” “.” is the current directory “..” is one level up toward the root (/) Confusing them can be unpleasant… Trick Question: what directory does “/..” refer to? Home Directories Unix is inherently multi-user – and in a multi-user system, users can’t scribble their files around at random. Each user on a Unix system has a “home directory” – it’s contents, organization (or lack thereof) are completely up to you. When you log in, you are placed in your home directory (abbreviated ~/). Manipulating Files from the Shell Task Change Directory Copy Display disk Usage List Files Move Make Directory Print Working Directory Remove Remove Directory Command cd target cp src dst du target ls (ls –a, ls –l) mv src dst mkdir target pwd rm target rmdir target File Permissions Recall: unix is multi-user – the file system keeps track of who’s allowed to read, write, and execute a given file. The world is divided into three: the user that owns the file, other users in the group that owns the file, and everyone else (other). Changing the mode of the file is done with the chmod command. Permissions are octal bit vectors – one byte for each of the three groups and a prefacing special byte. Permissions (Cont.) Directories have permissions too: read: read the contents of the directory (not necessarily the contents of the files themselves) write: remove and rename (but not create) files in the directory (not necessarily write to existing files) execute: access the directory (cd into it) Newly created files (and directories) have their default permissions set to (7777 && umask). umask will report your umask. Utilities Not to Leave ~/ Without ssh – secure shell – execute commands (or get an interactive shell) on a remote machine over an encrypted network connection. It’s so cool and versatile, it’s getting it’s own seminar! scp – secure copy – copy files between two hosts over an encrypted network connection. (mostly replaces FTP) rsync – keep directory trees on different machines synchronized. Browsing the Web Mozilla – it’s cross platform and standard and buzz-word compliant. Galeon – part of the GNOME desktop – it’s built on (and embeds) mozilla. Reading Mail Remember “it’s all about choice?” There are many possible mail readers – the department recommends (i.e. the systems group supports): Evolution – something of a MS Outlook “work-alike,” but without the propensity for worms and other unpleasantness. Other clients include mozilla (gui), mutt (curses). imaps://imap.cs.ucr.edu smtp://mail.cs.ucr.edu Handling Windows Documents Office documents (Word, Excel, Powerpoint) can be opened using Open Office (ooffice). Try gnumeric on your Excel documents, and abiword on your Word documents. Printing from Unix PostScript is the lingua franca of Unix printing. That means if what you want to print isn’t PostScript, something has to do the conversion. It also means that if your printer doesn’t understand PostScript, something has to do that conversion as well. Fortunately, all the department printers understand PostScript enscript If you have an ASCII file (e.g. source code) that you want printed – enscript is your friend. It will turn ASCII into PostScript – and even print two pages to a page. Add the following to your .bashrc: export ENSCRIPT=“—landscape –columns=2 – borders –line-numbers –pass-through” enscript –P printername source.cc Printing PostScript Files If you already have a PostScript file, your life is easier: lp –P printername file [file…] Note that PDF’s are not PostScript – don’t send them to lp unless you want to waste a ream of paper. Also note that printing a postscript file through enscript (or a2ps) will likely result in similar waste. Checking Your Print Job lpq –P printername - shows the print queue for the given printer. If your job doesn’t appear on the printer – check lpq before you submit it again – make sure it’s not just stuck behind another job. lprm –P printername – removes your job from the specified queue. Running Windows If you absolutely must run windows – just type “windows.” It launches a Windows Terminal Server client. You won’t remember this when you need to – but press Control-Alt-Enter to toggle full screen mode. Finding Help (man, info, google) man man man subject man –k subject info subject info –apropos=subject http://www.google.com google://your+question+here Asking for Help If you’ve looked in all the places mentioned in the previous slide, and you still can’t figure it out – there are some simple rules that will improve your chances of getting a good answer from a human: http://www.catb.org/~esr/faqs/smart-questions.html Who To Ask? Lab mates, friends, strangers, and finally: systems@cs.ucr.edu Learning More Teach Yourself Unix in 24 Hours by Dave Taylor Unix Fundamentals course (undergrad, upper division). If you’re interested, drop me an email and I’ll try to get the course offered once we have sufficient interest. Install Linux on your home machine (or notebook) Linux Administration: A Beginners Guide by Steve Shah (a UCR alum). Shell “Scriptlett’s” shell is also a powerful system scripting language – supporting conditionals, loops, variables, etc. for file in *; do echo $file; done x=0 while [ $x –lt 10 ]; do let x=x+1 echo $x done if [ -f somefile ]; then echo “it exists”; else echo “doesn’t exist”; fi