NETVAMPIRI'NIN ILERI UNIX KURSU
(KUZEY CAROLINE UNIV.'NIN OZEL IZNI ILE)

UNIX'I DAHA AYRINTILI OGRENMEK  ISTEYENLER ICIN,
 "KUZEY CAROLINE UNIVERSITESI" TARAFINDAN HAZIRLANAN BU KURSU ONERIRIM...
UNIX:CONCEPTS AND PROGRAMS

~reeves/prog/geoe314/unix01.html"UNIX: Getting Started
~reeves/prog/geoe314/unix02.html"UNIX: Data Tools
~reeves/prog/geoe314/unix03.html"UNIX: Customizing Your Environment
~reeves/prog/geoe314/unix04.html"UNIX: Vi Editor
~reeves/prog/geoe314/unix05.html"UNIX: Pico Editor
~reeves/prog/geoe314/unix06.html"UNIX: C-Shell Scripts
~reeves/prog/geoe314/unix07.html"UNIX: Csh/ksh Comparison
~reeves/prog/geoe314/unix08.html"UNIX: Perl Scripts
~reeves/prog/geoe314/unix09.html"UNIX: FAQ
1) UNIX: Getting Started

UNIX
Logging In
Using UNIX Commands
Getting Help (the Unix manual pages)
Managing Files and Directories
How Secure Are You?
Changing Group Membership
About Other Users - Using who, finger and talk
Using Pico to Edit the .plan & .project Files
Stopping and Restarting a Process (Multi-tasking)
Logging Out
Summary of Basic UNIX Commands
 UNIX
UNIX is an operating system that was designed at AT&T's Bell Laboratories in 1969. While that makes UNIX very old by computer standards, it is still popular today because of its power, flexibility, and portability. UNIX can run on platforms ranging from PCs and Macs to Cray supercomputers.
Kernel
Today you'll find several flavors of the UNIX operating system (also known as the "kernel"). AT&T's original version evolved into System V (pronounced "system five"). The version that AT&T licensed to the University of California at Berkeley is called BSD (Berkeley Software Distribution). It is now the de facto standard in the academic community, (i.e., it's free). Other versions are also available from commercial vendors: Sun's Solaris, SCO and Microsoft's XENIX, IBM's AIX, DEC's ULTRIX, Apple's A/UX, and the free Intel-based Linux.
Shell
Users rarely use UNIX directly, however. The utility software that interprets a user's commands for the kernel is called the shell. Here too, there are several flavors. The original and most common shell is the Bourne shell (its prompt is the "$"). The C shell ("%" or ">") is newer and provides an extensive command language similar to the C programming language. The Korn shell (also "$") attempts to combine the best of both earlier shells. More than one shell is often available to users on a UNIX system. This UNIX document assumes you are using the C shell. (Note: we are running the tcsh, which has several improvements over the original C shell).
 Logging In
You may use UNIX locally from a hard-wired terminal or remotely from a microcomputer running terminal emulation software, (such as telnet). Once you are connected, UNIX will prompt you for your login name. Type your unique userid assigned to you. At the password prompt, type your password. (Your password will not be printed on the screen.) If you are using a terminal or terminal emulator, you will see a % prompt. If you logged into a workstation you will see the CDE desktop. Open a terminal window to see the % prompt (Right click the mouse and select ``Terminal or Xterm'' from the ``Programs'' menu.)
Setting Passwords
If you are using a temporary password, you should change it immediately. It is also a good idea to change your password periodically. Unlike your login name which may be known by many people, only you should know your password. Make your password 6 to 8 characters long. Make it hard to break by combining capital letters, lowercase letters, and punctuation. Avoid using family names, pet names, words found in dictionaries, birth dates, anniversary dates, and obvious numbers (drivers license, license plate, phone). Do not use common words, even if you add a number to the password (e.g., Gandalf, red3, scottX, etc.). Instead, make up a word by using the first letters from a favorite line of poetry or verse. For example, "this is the way the world ends" would yield the password "Titwtwe". DO NOT WRITE THE PASSWORD DOWN! But do make it memorable. If you forget your password, contact the departmental system administrator.
Changing Your Password
To change your password, either type: passwd at the UNIX prompt. UNIX will prompt you for your old password, then your new password. UNIX will then ask you to retype the new password to confirm it. Once you've confirmed it, your new password will be in effect. Use it the next time you log in.
 Using UNIX Commands
UNIX commands follow the format:
     command  -flags  arguments.
The commands are one-word, lower case. Optional flags are one-letter switches that modify the way the command works. They follow the dash, are case-sensitive, and can be combined. The optional argument usually specifies the file or directory that is the target of the command's action. Hit RETURN after entering a command.
 Getting Help (the Unix manual pages)
UNIX provides an online manual. To use it, enter man followed by the command for which you need help. For example, type man passwd to get help on the passwd command. If you are unsure of the name of a command, you can use the -k flag to search the man pages for a string. For instance, man -k print will get you a list of commands relating to printing.
 Managing Files and Directories
UNIX files are organized in a hierarchy structured like an upside down tree. The top is the root (written "/"). Beneath the root are files and directories. Files are of two types: data files (e.g., a letter to your mother) and program files (e.g., the text editor you used to create a letter to your mother). Directories are just like subdirectories on the PC or folders on the Mac, and may contain files and other directories.
Names
File and directory names can be up to 256 characters long! They may contain upper and lower case letters, numbers, and punctuation. Avoid using spaces, "/", ">" or "!" (these symbols make files difficult to manipulate). Remember that case does make a difference, i.e., the name "Memo" refers to a different file than "memo". You can use the underscore (_) or the period (.) to separate words in a file name, for example: vacation_memo. The full name for any file is the complete path to it, starting at the root, which means you must include directory names. The path name for the file "memo" in the directory "john" that is within the directory "users" which is under the root would be: /users/john/memo, (remember, the first "/" is the directory root). While "." is a valid character, placing it as the first character in a name is not recommended. Any file name that begins with a '.' is considered an "invisible" file, and will not show up when you run the standard list files command (ls). Methods of seeing these files are discussed later on.
Change Directory
When you log on to UNIX, your present working directory is automatically set to your home directory. To move to another directory, use the cd command followed by the name of that directory. For example, to move to the subdirectory "projects", type: cd projects. You can also use shortcuts for a directory name, i.e., type cd .. to move to the directory above your current one. (Note: UNIX, unlike DOS, requires a space between the cd and the ..). You can jump back to your home directory from anywhere in the directory tree by typing cd and hitting RETURN.
Present Directory
Use the pwd command to list the name of your present working directory. You may refer to any files in your present directory without using their full path names. Unlike your home computer, you will not have a UNIX account that begins at the root directory. Most UNIX platforms have many users, and each user has a small slice of the available hard drive space. Thus, instead of starting out at the root of the drive, most user accounts will be somewhere down in the directory tree, (usually off of a /home or /usr directory).
List Directory Contents
To list the normal files and subdirectories within your current working directory, use the ls command. To list the files in another directory, such as "/usrs", include the directory name in the command: ls /users. This command will list all files and subdirectories (except "invisible files"--see below) in the directory you specify.
Adding Flags
As mentioned earlier, adding flags to a UNIX command allows you to alter the commands actions. Adding flags to the ls command alters how the directory is listed. The command ls -a lists all files and subdirectories in the directory, including "invisible files" (any file whose name begins with a period ".").
Typing ls -F puts a "/" at the end of directories in the listing and an "*" at the end of a program (executable) file. This allows you to tell at a glance whether the item is a file, a program, or another directory.
Typing ls -l displays a long list of directory contents that includes: file type, security permissions, owner, size, creation date, and file name. You may combine flags. For example, ls -al displays all files in the long format.

drwxr-xr-x     1     instruct     425     Oct      9      12:28     dir1/
-rw-rw-rw-     1     instruct     1365     Oct      12     15:07     myfile1
-rw-rw-rw-     1     instruct     714     Oct     27     08:30     myfile2
-rw-rw-rw-     1     instruct     566     Oct     28     17:50     myfile3

Checking Your Disk Space
Disk space is limited and there is a restriction on the size of each users account has been established.. If you receive any message/error that seems to indicate that you have reached or exceeded this limit, we suggest you use the following commands to correct the situation. In your home directory, enter:
     %du | sort -rn | more
This command lists your files, from largest to smallest, one page at a time. (Note: use the space bar to scroll to the next page, type q to quit the listing).
WARNING!! Several of these files are extremely important, and removal, (or tinkering), with them can destroy your ability to login and/or read your mail! Never remove your .login, .cshrc, .addressbook, or .pinerc files. Use the rm command to delete your files, (For example: rm filename). The most likely culprit is Netscape. For your convenience, a script file will zap the netscape cache directory - just type nszap and the script will do the necessary.
Viewing Files With the More Command
To display the contents of a text file, use the more command followed by the file name. more displays your file one screen at a time, and then pauses. Hit RETURN to advance one line or the SPACEBAR to display the next screen. To exit more, enter the letter q.
Create/Delete File
Files are created as a by-product of running a program, exporting a mail message, or using an editor. They can be deleted with the rm command, (for instance, typing rm old_memo deletes the file "old_memo").
Create/Delete Directory
To create a new directory, just use the mkdir command with the new directory's name. To create "my_new_dir", type mkdir my_new_dir. To remove the directory you just created, type rmdir my_new_dir. (Directories must be empty before you can delete them with the rmdir command.)
Move/Copy A File
Use the mv command to move a file from one directory to another. The mv command takes two arguments; the name of the file you want to move followed by a destination directory. For example, to move "old_file" into the "archive" directory, type: mv old_file archive. (Note: if the directory archive did not exist, the mv command merely renames your file, keeping it in the current directory). When you move a file into a new directory, it retains the name it had in the original directory.
The cp (that's UNIX-speak for copy) command works similarly to the mv command, however, it retains the original version.
 How Secure Are You?
New users on a UNIX system are often unaware of file security. Without knowing it, they leave sensitive information unprotected. Other users on their machine (or from the rest of the world) access and sometimes even change their files. To combat this problem, consider the following advice. It is useful to know how secure your files are. To find out, use the ls -al command. The security information is contained in the collection of d's, r's, w's, and x's to the left of the output. These ten spaces, containing either letters or dashes, tell you what kind of file is shown and how secure it is. Let's start with the first column. If you see a 'd' here, it means the object you are looking at is a subdirectory. If you see a '-', the object is a file of some sort (either program or data). The next nine letters detail how secure your files are. The first group of three letters describes your own privileges. An 'r' means you can read a file, a 'w' means you can write to a file (write means you can edit and delete it), an 'x' means you can run the file (if it is a program -- an 'x' setting for a data file will only cause problems), and a '-' means that you are restricted from using a file. Almost always, you want to have 'rw-' for your data files, and 'rwx' for your programs.
The next set of three letters describes what members of your group can do. Groups are special constructs you can make which allow members of a team to share files with their own set of access restrictions. Usually, you won't belong to any groups so you should set these permissions to '---'. Finally, the last three letters are by far the most important, as they represent what anyone on the system can do to your files. By default, many machines set permissions like those of 'myfile1' shown above -- everyone can read the file, even though they cannot edit / delete it or run it as a program. For sensitive information, this is obviously undesirable. You can change any of these permission with the chmod command. The command has three parts: whose permissions you want to change, what you want to change them to, and which files to change. Here are three examples:

chmod u+rw  filenames     sets your own permissions to both read and write
chmod g+r   filenames     allows a group to read these files, but not write to them
chmod o-rwx filenames     denies all access to other people on the system

Note: do not remove the `x' from your own permissions for your directories. Think of directories in UNIX as little programs which move you from place to place. Removing the 'x' will shut you out of a directory.
 Changing Group Membership
We read above how it is possible in UNIX to specify one set of permissions for other users who do not belong to the same group as you and one set for those who do. In UNIX, though, it is entirely possible to belong to multiple groups. Only one of these groups, however, is your current group - you are only an "active" member of one group at a time. Any new files you create will be owned by your userid, but they also have a group ownership, which will be whichever group was your current group at the time of creation. To change your current group membership, use the newgrp command. The basic syntax for this command is as follows:
    newgrp groupname
You must be listed as a member of the group to which you attempt to change. To check whether you belong to a given group, type the following:
    % groups
This command will list all the groups of which you are a member.
 Learning About Other Users - Using who, finger and talk
The who command displays information about all users currently on the local system. The following information is displayed: login name, workstation name, date and time of login. Entering who am i or who am I displays your login name, workstation name, date and time you logged in.
If you see a userid which you recognize, you might try and initiate a talk session. The talk command allows two users on the same host or on different hosts to have an interactive conversation. The talk command opens both a send window and a receive window on each user's display. Each user is then able to type into the send window while the talk command displays what the other user is typing. To initiate a conversation, a local user executes the talk command and specifies a remote user's login ID. (For example: talk johndoe@moho.usask.ca, ). To have the conversation, the remote user also has to execute the talk command from any terminal and specify the local user's account name and host name, if appropriate.
It's probably a good idea to first check the identity of whichever userid you wish to initiate a talk connection with. The finger command displays information about user accounts on a host. By entering finger userid at a UNIX prompt, you will receive information about that userid's full user name, home directory and default shell. In addition, if the user has a .plan or .project file, these too will be displayed. As with talk, one can finger a userid on a different computer (i.e., finger johndoe@pangea.usask.ca).
 Using Pico to Edit the .plan & .project Files
You can tailor the information which the finger command returns by editing your .plan and .project files. To edit either of these files, enter the pico command at the UNIX prompt. Once inside the pico editor, enter your information, in a manner similar to below:
something wise and/or droll to share with the world!
office : Geology 146          phone: 966-xxxx
When finished, enter ^X. pico will prompt you with "Save modified buffer?" Enter yes. Pico will next respond with "File name to write" Enter .plan to exit and preserve your file. Similarly, you can edit the .project file, which traditionally includes the various projects and activities you are working on.
 Stopping and Restarting a Process (aka Multi-tasking)
A <CNTL>-c is often used to abort a command or program execution. Another approach is to shift the program or command to the background (this simply means the process moves out of your way, is saved where you left off, and leaves the account free to do other things -- often called multi-tasking in PC environments). To do this, hit a <CNTL>-z. This will stop the process and allow you to execute another process (i.e., a program or command). To retrieve the halted process, type in the command ps. This will show you a list of your processes, as well as the Process Identification Number associated with them. To bring a particular process back to life, type in this command: fg processID#. (Note: if there is only one backgrounded process, you do not have to include the processID#).
 Logging Out
Different UNIX machines use different words to log out of an account. Among the most popular are exit, logout or <CNTL>-d.In UNIX, a <CNTL>-d (or EOF) is often used to end an activity normally.
If you are using CDE, you do not need to exit your terminal window. Simply click the exit button with the mouse. The CDE default is to ask if you really want to exit.... to avoid this turn off ``Logout Confirmation Dialog'' in the ``Style Manager Startup Menu''.

 Summary of Basic UNIX Commands
Below is a reference list of the UNIX commands you will use most often and that are necessary for a basic use of UNIX. You may wish to print out a hard copy of this section and keep it in a handy place near your computer. Keep in mind that command syntax is
command -flag(s) argument(s)
ls (list) Lists file and directory names.
ls                  lists a directory in columns
ls -l              gives a fuller listing including file perms, size, date etc
ls -al             similar to the above but includes "dot"/hidden files
cd (change directory)
cd                   returns you to the home directory
cd ..                moves up one directory level
cd ../..             moves up two directory levels
cd subdir            moves to named subdirectory
cp (copy)
cp file1 file2       copies file1 to file 2
cp file1 dir         copies file 1 to named directory
cp file1 file2 dir   copies file1 and file2 to named directory
mv (move) Moves or renames one or more files.
mv file1 newname     renames file1
mv dir newname       renames directory
mv file1 dir         moves file to named directory
mv file1 dir/newname moves file1 to named directory and renames
rm (remove) Deletes files*
rm filename          deletes the named file
rm -i filename       deletes named file after prompting to make sure

*BE EXTREMELY CAREFUL with rm - there is no undelete command!
mkdir (make directory)
mkdir subdir         creates a directory within the current directory
rmdir (remove directory)
rmdir subdir         deletes directory within the current directory
                     (if the directory is empty)
chmod (change mode) Changes file permissions
chmod u+w file1     adds write permission for the user to file1
chmod g+x file1     adds execute permission for the group to file1
chmod o-r file1     removes read permission for the world (other) from file1
man (manual) Displays help or manual documentation.
man command        displays manual information for the specified command
man -k keyword     displays 1 line synopsis of each reference to the keyword
more Lists files one screen at a time.
more filename     scrolls forward through file one screen at a time.
                  Press spacebar to go forward one screen or q to quit.
pwd (print working directory) Displays path name of current directory.
pwd               displays your current directory