UNIX and LinuxUnix resources and basic instructionselflord@panix.com |
Useful information mostly written by me, the conspicuous exception being the bash manpage ...
Intro to Unix
If you're interested in installing Unix on your PC, check out the
Linux homepage, or the
freeBSD page.
Both of these are inexpensive PC versions of the Unix operating system, in fact
they're sometimes used on University Network systems as well.
mail |
read mail using the primitive and clumsy basic mail program. |
elm |
read mail using a slightly more sophisticated program |
pine |
read mail using pine. Pine is the email program I recommend for beginners, it's user friendly and reasonably powerful. For more advanced users, I recommend mh. (try "man mh" for details... actually, if you couldnt figure that out for yourself, just use pine...) |
who |
tells you who else is on the system |
pico file_name |
Starts up the pico editor, if file_name i specified, it opens up file_name with the pico editor. pico is the editor that is ued by the pine program. It is not a very powerful text editor, but very user friendly, probably the best to use if you're a beginner with no unix knowledge (unless you have XWindows on your system, if so, see emacs.....) |
& |
When you finish a command with &, the shell does not wait for the process to finish before giving you your command prompt back. This command is useful when you're in X-Windows. For example, if you type netscape& then netscape starts, but you can still type more commands in the window. This is useful when you're running programs like Netscape, Ghostview and Xdvi. |
emacs | Emacs is another text editor. It is more powerful than pico. If you have X-windows, emacs comes with a nice user interface. So if you have xWindows on your ystem, emacs is probably better to use than pico. |
man command_name | prints out the "online documentation " for command_name. a better way of using this (though it might not work on all machines) is man command_name|less. The reason for this is that most machines have the annoying habit of using the more command to display a man page. The more command only allows you to scroll forward, while less allows you to scroll forward or back. |
talk user_name@domain.name.edu | talk to the specified user. If you don't know how this command works, try it and see what happens. It only works if the person you're trying to talk to is logged on. |
finger user@domain.name |
Great for all you nosey people. Tells you how long since user read their mail, when they last logged in... sometimes, you need to use finger -l to get it to give you enough info. Note that this doesn't allways work, some servers don't like being "fingered" (: One useful application of this command is to check if some-one's "home" before you try to "talk" with them. |
whoami |
tells you who you are ( in case you forget (: ) |
pwd |
Tells you which directory you are in |
cd |
moves you to a directory, ie cd public_html moves you to the public_html directory. You can use a number of conventions for describing path names. For example, cd / puts you in the top directory, and cd ~ puts you in your home directory. |
ls |
Lists contents of your directory.You can attach some options to ls,
for example, ls -a lists all files (ls
does NOT list files beginning with a
. like .netscape, etc). ls -l
gives you "long" output, ie lists file details,
including permissions.
ls -al |
mkdir |
makes a directory with a given name, ie mkdir blah makes a directory (a subdirectory of the current directory) called blah. |
rmdir |
removes an empty directory. Not really a very useful command. To remove a nonempty directory, you use rm -r directory_name (this deletes all files inside the directory and it's subdirectories). |
cp | copies the contents of a file to another file, eg cp file_1 file_2 copies the file named file_1 to a new file named file_2 If you want to copy a directory to another directory, you use cp -R dir_1 dir_2 |
mv | mv file_1 file_2 moves file_1 to file_2, ie renames it. you can also use mv dir_1 dir_2 to rename dir_1 |
rm |
removes a file, ie rm blah removes the file called blah. This can also be used to delete a directory and its contents. rm -r deletes a directory and all of the files in it and its subdirectories. One thing a little annoying about this command is that it prompts you for each file- at least it's annoying if you're deleting a directory containing 100 or more files, like a Netscape cache. So you can also use rm -Rf which does not prompt you to confirm every single delete. Well it usually will not. If this doesn't work (it depends on which type of UNIX you're using), try yes|rm -r. The yes command just answers all the questions for you. If you do this yes thing, you get a "broken pipe" message. Don't worry- it just happens because the yes command keeps talking after the rm -r has stopped listening. |
du |
disk usage- tells you how much space in kilobytes is in both the directory and all of its subdirectories. Some options are du -s which just tells you the total space used by the current directory and du -a which includes files in the summary. |
Permissons as you've probably guessed are those things that determine who
is allowed to do what to your files.
Whether you are aware or not, the default setting is (usually) that
your files are readable by anyone (except your email files- the email programs
are smart enough to 'know' that you probably don't want your email to be
'world readable').
So here's the answer to a frequently asked question:
How do I change the default permission settings
The answer: put the following line in your profile
file:
umask 077
Also, typically, all files default to being strictly non-executable.
This makes it difficult for viruses to corrupt your system.
Each file has a permissions field which is 10 letters long.
The permissions field looks something like this:
drwxrwxrwx or -rw-rw----, you get the idea. The first space contains either
d if it's a directory, or a dash if it's a file.
What do those letters mean? Letters two, three and four represent the permissions
that the user (ie you) have. r means the file is read permitted,
w is write permitted, and x is executable. Letters five six and seven
represent the permissions that the group ( type ls -l file_name
the name in the second column is the group name.) If the group name
is your user name, then the permissions for your user name over-ride the
group setting.
Letters eight to ten represent the permissions that some one accessing from
any location has.
I would recommend that you use the following permissions:
For files that you want to keep private, use 600 as your permission field.
For executables, use 700 (or 744 if you don't mind others reading it.
For files that you are willing to share with the world, use 644
To protect the contents of an entire directory, use 744, 711 or 700
I'll say more about what these numbers mean...
-rw-------
|
This file may be read or written to by the user only (ie an email file) |
-rw-r--r-- |
This file may be read by ANYONE but only written to by you. This tends to be a default setting on some systems. So be careful. As a note, this is the recommended setting for a webpage file in a unix account (if you don't set all of the read permissions, some people will not be able to access your page). |
-r-xr-xr-x |
This is say, some precious application, and you don't care who uses it, but you want to make sure no-one (including you...) deletes it! Note that security-wise, it's probably best not to allow anyone else to execute your files. In other words, I do not endorse that permission setting, it's just an example. |
drwx--x--x |
This is a directory with execute permissions, ie it's "searchable" but not readable. What does that mean? A searchable directory is a directory that permits you to view the contents , but not 'read' it, ie you can't run ls on it. So anyone can view files in the directory, PROVIDED THEY KNOW THE NAME OF THE FILE THEY WANT TO SEE. They have no way of listing the file. This is a convenient way of protecting access to a file that you're working on with a friend, you can allow read permissions on the file but put it in a read protected directory, so that no-one else can find the file. Another advantage of this is that if you maintain a web page, this setting will not interfere with access to your page, because the browser is free to look for a file called public_html/index.html, and (and you have the permissions on the file set correctly) the browser may read the file. |
drwxr--r-- |
This directory i read permitted, but not searchable. That is, while anyone can run ls on it and get a list of the files it contains, no-one (except the user) can read, execute, or otherwise access the files inside. |
Permissions are changed with the chmod command. The basic formats are chmod _+_, chmod _-_ where the first blank space contains u, g, o, or a, and the second blank space contains any subset of the letters w,r and x. The first letter refers to either the user (u), the group (g), other, or everyone else (o) or every one (a). Note that a includes g,u and o. The second letter refers to the permission being modified. Lets have some more examples:
Command permissions before permissions after chmod g+x file1 -rwxr--r-- -rwxr-xr-- chmod g-x file1 -rwxr-xr-- -rwxr--r-- chmod a+rx file1 -rw-r--r-- -rwxr-xr-x
Command before after chmod 777 filename (RU nuts?) Anything -rwxrwxrwx chmod 755 dirname Anything drwxr-xr-x
.profile .shell_name_profile where shell_name is usually either bash, sh, csh, tcsh or zsh (I think that's about it...) .shell_name_rc where shellname as described above .loginIf you don't have any such files, you can always make your own. Best to call it .login, this should work regardless of which shell your system uses. You can do some nice things with these files to customize your operating environment, for example, you can use the alias command which works as follows:
alias ll='ls -l' | this tells the system to execute ls -l when you type ll at the command line. |
alias dir='ls' | For dos-users who miss dos so badly that they have to re-write unix to work like dos. |
alias man='man $*|less'
|
This is a useful alias which modifies the man command so that
you can scroll backwards as well as forwards when viewing man pages.
The $* is replaced by the command line argument, o for example,
if you type man procmail the shell executes man procmail|less
|
alias logout="echo 'goodbye';sleep 1;logout" | This makes the system say goodbye to you when you log out. The semi-colons are a way of putting multiple commands on one line. The sleep 1command tells the system to pause for 1 second. |