You are on page 1of 127

Introduction

Welcome to Linux Online's Getting Started with Linux beginner level course. If you're
new to Linux and want to find out how to use the fastest growing operating system today,
all you have to do is follow these lessons and you'll be using Linux

efficiently in no time.

Getting Started with Linux is designed as a self-study course. We're afraid that due to the
numbers of people who follow this course, we cannot answer any specific questions or
clear up any doubts you may have about the material. In short, there is no extra help
available. You are on your own.

If you're ready to start learning about Linux, you may start at our Table of Contents or
you may want to jump right to Lesson One

We do, however, invite comments, suggestions, error reports and well intentioned
criticism. Before you do fire off an email about anything related to the course, you may
want to visit the author's notes page. It may help to clear up the issue that you were going
to write us about and save some wear and tear on our email server!

Getting Started with Linux - Course Material

Lesson One
Objectives
What is Linux?
Installing Linux
An actual install
About Debian GNU/Linux

Lesson Two
Installing Debian GNU/Linux
Partitioning
Plunk that CD in the drive
Sundry installation tasks
Reboot and basic configuration
Completing the install process
Lesson Three
Working with Linux - First Things First
Working as another user

Lesson Four
Creating your 'routine' in Linux
The Linux file system
The basic directory structure in Linux
Some more cool short cuts
In Linux, everything is a file
What's left

Lesson Five
Day to Day with Linux
Virtual Terminals
Text editors in Linux
Text editors in Linux - Cont'd

Lesson Six
Shells in Linux
Frequently Used Shell Commands
The 'cp' command
The 'mv' command
The 'mkdir' command
The 'rm' command

Lesson Seven
Plumbing with "pipes" in Linux

Lesson Eight
How to get more information with Linux

Lesson Nine
Other interesting and useful commands
The 'grep' command

Lesson Ten
Power user commands
'tee', '>', '2>'
'whoami', 'whereis' and 'which
'echo' and 'wc'

Lesson Eleven
Miscellaneous commands

Lesson Twelve
Becoming a super user

Lesson Thirteen
Commands to control your system
kill'
File systems in Linux
Mounting file systems
Umount command - unmounting file systems

Lesson Fourteen
File permissions in Linux
'chmod' explained
Using 'chown'

Lesson Fifteen
Backing up your files
Untarring and unzipping files

Lesson Sixteen
Installing New Programs
Debian Updates
Installing new programs on Slackware

Lesson Seventeen
Printing under Linux
Using Linux to access the Internet
ADSL with Linux
Dial-up connections with Linux
Getting in touch with your ISP

Lesson Eighteen
Getting Linux to make sounds
Recording Sound
MP3 format
Ogg format
Compact Disks

Lesson Nineteen
Graphic User Interfaces with Linux
The GUI family tree
X-Window configuration
To boot or not to boot (in graphics mode), that is the question.
Choosing the look that's right for you
Protecting the environment
Internet Browsers
Email clients
Office suites, word processors and spreadsheets
Little goodies to improve your quality of life
Tips and Tricks for X-Window
More X-Window Tips and Tricks
A final word about X-window

Lesson Twenty
The end of the beginning

Getting Started with Linux - Lesson 1


Getting Started with Linux
We have developed this course for one basic reason: To bring the newcomer to Linux to
the point where you can, using Linux, do everything that you do with MS Windows and
much more. Due to the fact that Microsoft, enjoying an illegal monopoly, has its
operating system
installed on 90% of the world's computers, this course is mainly aimed at people who
want to migrate to Linux from Microsoft products.

The simple fact that you are getting this course off the Internet presupposes that you
know how to use a PC. The course should be oriented towards people migrating from
other OSes and in particular, MS Windows 9x, ME, 2000 and XP.

Our objectives are:

1. To explain the differences between working with Linux and working with other
popular OSes.
2. To stress that the somewhat steeper learning curve in Linux will pay back in the
amount of stability and flexibility.
3. To show that using Linux opens up a whole new world of computing. This means
that a Linux user is not just a passive subject reacting to what the OS allows
him/her to do but he/she is an active "developer" with complete control over the
operating system.
Preparation
What is Linux?
Linux is an operating system that evolved from a kernel created by Linus Torvalds when
he was a student at the University of Helsinki. Generally, it is obvious to most people
what Linux is. However, both for political and practical reasons, it needs to be explained
further. To say that Linux is an operating system means that it's meant to be used as an
alternative to other operating systems like MS-DOS, the various versions of MS
Windows, Mac OS, Solaris and others. Linux is not a program like a word processor and
is not a set of programs like an office suite.

A brief history of Linux

When Linus Torvalds was studying at the University of Helsinki, he was using a version
of the UNIX operating system called 'Minix'. Linus and other users sent requests for
modifications and improvements to Minix's creator, Andrew Tanenbaum, but he felt that
they weren't necessary. That's when Linus decided to create his own operating system
that would take into account users' comments and suggestions for improvements.

Free Software pre-Linux


This philosophy of asking for users' comments and suggestions and using them to
improve computer programs was not new. Richard Stallman, who worked at the
Massachusetts Institute of Technology, had been advocating just such an approach to
computer programming and use since the early 1970's. He was a pioneer in the concept of
'free software', always pointing out that 'free' means 'freedom', not zero cost. Finding it
difficult to continue working under conditions that he felt went against his concept of
'free software' he left MIT in 1984 and founded GNU. The goal of GNU was to produce
software that was free to use, distribute and modify. Linus Torvalds' goal 6 years later
was basically the same: to produce an operating system that took into account user
feedback.

The kernel

We should point out here that the focal point of any operating system is its 'kernel'.
Without going into great detail, the kernel is what tells the big chip that controls your
computer to do what you want the program that you're using to do. To use a metaphor, if
you go to your favorite Italian restaurant and order 'Spaghetti alla Bolognese', this dish is
like your operating system. There are a lot of things that go into making that dish like
pasta, tomato sauce, meatballs and cheese. Well, the kernel is like the pasta. Without
pasta, that dish doesn't exist. You might as well find some bread and make a sandwich. A
plate of just pasta is fairly unappetizing. Without a kernel, an operating system doesn't
exist. Without programs, a kernel is useless.
1991, a fateful year

In 1991, ideal conditions existed that would create Linux. In essence, Linus Torvalds had
a kernel but no programs of his own, Richard Stallman and GNU had programs but no
working kernel. Read the two men's own words about this:

Linus: "Sadly, a kernel by itself gets you nowhere. To get a working system you need a
shell, compilers, a library etc."
RMS: The GNU Hurd is not ready for production use. Fortunately, another kernel is
available. [It is called] Linux.

So combining the necessary programs provided by GNU in Cambridge, Massachusetts


and a kernel, developed by Linus Torvalds in Helsinki, Finland, Linux was born. Due to
the physical distances involved, the means used to get Linus' kernel together with the
GNU programs was the Internet, then in its infancy. We can say then that Linux is an
operating system that came to life on the Internet. The Internet would also be crucial in
Linux's subsequent development as the means of coordinating the work of all the
developers that have made Linux into what it is today.

Linux is introduced
Late in 1991, Linus Torvalds had his kernel and a few GNU programs wrapped around it
so it would work well enough to show other people what he had done. And that's what he
did. The first people to see Linux knew that Linus was on to something. At this point,
though, he needed more people to help him. Here's what Linus had to say back in 1991.
"Are you without a nice project and dying to cut your teeth on an OS you can try to
modify for your needs?... This post might just be for you."

People all over the world decided to take him up on it. At first, only people with
extensive computer programming knowledge would be able to do anything with that
early public version of Linux. These people started to offer their help. The version
numbers of Linux were getting higher and higher. People began writing programs
specifically to be run under Linux. Developers began writing drivers so different video
cards, sound cards and other gadgets inside and outside your computer could use Linux.
Nevertheless, throughout most of first part of the 1990's Linux did not get out of the
'GURU' stage. GURU is a term that has evolved to mean anyone who has special
expertise in a particular subject. That is, you had to have special expertise in how
computers worked to be able to install Linux in those days.

Linux, at first, not for everybody

Other popular software companies sold you a CD or a set of floppies and a brief
instruction booklet and in probably less than a half an hour, you could install a fully
working operating system on your PC. The only ability you needed was knowing how to
read. Those companies had that intention when they actually sat down and developed
their operating systems. Linus Torvalds didn't have that in mind when he developed
Linux. It was just a hobby for him. Later on, companies like Red Hat made it their goal to
bring Linux to the point where it could be installed just like any other operating system;
by anyone who can follow a set of simple instructions, and they have succeeded. For
some reason, though, Linux hasn't completely lost its 'Gurus only' image. This is largely
because of the popular tech press' inability to explain in a meaningful way what Linux is.
The truth is that few tech reporters have real life experience with Linux and it is reflected
in their writing.

Linux Today

Today, Linux is enjoying a favorable press for the most part. This comes from the fact
that Linux has proven to be a tremendously stable and versatile operating system,
particularly as a network server. When Linux is deployed as a web server or in corporate
networks, its down-time is almost negligible. There have been cases when Linux servers
have been running for more than a year without re-booting and then only taken down for
a brief period for routine maintenance. Its cost effectiveness has sold it more than
anything else. Linux can be installed on a home PC as well as a network server for a
fraction of the cost of other companies' software packages. More reliability and less cost -
it's ideal.

If you're reading this, you're obviously here to learn how to use Linux. Any learning
experience means opening up to new ideas and new ways of doing things. As mentioned
before, Linux is in the UNIX family of operating systems. UNIX is primarily designed to
be used by professionals. You will have to learn some UNIX concepts in this lesson, but
that doesn't mean that Linux is a professionals-only operating system. In fact, most major
versions of Linux are designed to be as user-friendly and as easy to install as any other
operating system on the market today.

Now that you know what Linux is and how good it is, there's one more thing we have to
do - install Linux!

Installing Linux
Some preliminary considerations.
There are many different versions of Linux. Unlike other commercial operating systems
that are controlled by one company, Linux
is free to distribute and use. So, in the Linux world, there is a situation unlike what occurs
in the proprietary operating system world: a number of companies, organizations and
individuals have developed their own "versions" of the Linux operating system, known as
distributions. There are versions of Linux that were developed to be installed on
computers that receive heavy traffic, so to speak, like webpage servers. Some were
developed to be used in networks where security is a priority; where sensitive
information should only be accessed by a privileged few. There are versions of Linux that
are meant to be installed on top of an existing operating system like Windows so people
can try out Linux under familiar conditions. There are versions of Linux that are designed
to be installed on platforms like Macintosh. There are versions of Linux with funny
names like "Chainsaw Linux" (no kidding) and "Tutti-Frutti Linux" (yes, it's a joke)

What Linux is right for me?

This is a very difficult question to answer. To use an analogy, if I were going mountain
climbing, I would need specific clothes to protect me from scrapes, the cold, wind, rain
and other adverse climactic conditions. If I were going to a formal dinner, I would need a
tuxedo. If I were going about my daily routine, I would wear "normal" clothes. There are
computer world

equivalents of mountain climbing and formal dinners as well as just sitting around the
house. Linux has been fit into all those environments and more. There is even the
equivalent of a swimsuit in Linux - a very scaled down version - just to cover the
essentials.

Most PC users probably just need the everyday version. This kind of Linux has been
widely available for some time now. Since Microsoft makes its living selling people
"ordinary" operating systems, they have a lot to lose if Linux ever gets popular with the
masses. For this reason they have done everything in their power to "warn" the public
that Linux is something that you probably don't want and don't need. But in reality, Linux
is just as easily installed and supports just as wide a range of hardware as Microsoft
Windows does. The PR department at Microsoft is coming up with fewer and fewer
reasons not to use Linux.

Linux on PCs containing Intel-based CPUs


It would be impossible to cover all of the different types of Linux so this lesson will only
deal with standard versions of Linux that are meant to be installed on PCs with Intel-
based CPUs. You may have heard of some of the companies and organizations that have
created distributions for this platform, like Debian, Mandrake, Red Hat and SuSE . There
are others as well. There are even versions of Linux that offer documentation and install
programs in languages other than English. We should say here that it is not our intention
to endorse the products of the companies we have mentioned here nor do we want to
slight those companies that we haven't mentioned.

Linux Online maintains a list of all kinds of distributions. We invite you to consult that
list before deciding on installing any version of Linux.

Prepare your manuals


As we mentioned before, the major versions of Linux have perfected their products to
such a degree that they are very easy to install. Well designed programs will take you
through the process of installation step by step so that you will be able to get Linux up
and running in a relatively short period of time without any headaches. But even
commercial operating systems that are billed as being the most user-friendly in the world
can't guarantee a 100% problem-free installation.
The best thing to do before attempting to install Linux is to get the manuals that came
with your PC out of the closet and dust them off. Major distributions of Linux have taken
into account most standard hardware such as video cards, modems and sound cards, but
as we said before, nobody can guarantee a problem-free installation for any operating
system. Though you probably won't need them, they may help to track down a problem
or prevent a future one. Now, go get those manuals, and we'll meet you in the next
lesson!

An actual install
Most reputable PC resellers will hand you a stack of manuals when you buy your
machine. But let's imagine that you got a hand-me-down PC from your big brother or
sister or you picked up your PC at a garage sale or you got the PC from some other
source that we really don't want to know about. You may be luckier than you thought.
Linux will actually install more easily on older PCs than on some newer ones. Then
again, it depends on how old it is. Don't try to install Linux on one of those old PCs with
a monochrome monitor where everything comes out a yucky green color. That's TOO
old!

Do you want a 'Dual-boot' system?

OK, with or without manuals, now it's time to install Linux. You've got your version of
Linux and you just can't wait to use it. But there are a couple of questions you need to ask
yourself.

1. Do you have another operating system installed?


2. Do you want to continue to use it?

If you want to keep an existing operating system, and install Linux as well, you will have
what is known as a "dual-boot" system. That means that you have a PC that can use two
different operating systems. I think that I should pause here and say that everything that
you can do with your garden variety operating system, you can do with Linux. That
means word processing, databases, spreadsheets, Internet browsers, e-mail, photo touch-
ups, MP3, CD Players, cameras and then there are a lot of things that Linux has to offer
on top of all that that other operating systems don't. The important thing is that you have
the option to have both. Now, back to the install.

Downloading Linux

One of the most misunderstood concepts of Linux is that it is widely spoken of not so
much as a "free" operating system but as a "freebie" operating system. 'What's the
difference?' you may ask. The "free" ideally refers to the source code of Linux. Microsoft
won't give you the source code to their products so you can make improvements (and we
all know how much they need them), but the majority of Linux distributions come with
the source code - or at least for the programs that aren't proprietary.
The "free" that most people think of is the free of "freebie" or "handout". This is
somewhat fictitious. The truth is that there is nothing in this world that comes at zero
cost. If you happen to have a fast Internet connection and a CD burner, you may
download ISO images of the Linux distribution you have chosen (and that lets you have
them free of charge), but it has cost you money for the CDs and your time (the costliest
thing of all). Linux really should never be touted as a zero cost option, but better as an
operating system that can be obtained and maintained at a very low cost.

If you don't happen to have a fast connection and a CD burner, you can still get Linux,
though, at very little cost. You can pick up a nice boxed set from the makers of
commercial distributions. Personal PC users can pick up a nice operating system for
home use for around 30-50 US dollars. These usually come with 90 days of tech support,
via email, in most cases. You can also get Linux from PC magazines that will often
provide CDs of the major Linux distributions and some basic installation instructions for
just the cost of the magazine.

Our pick for an example walk-through installation and setup with be Debian GNU/Linux.

Debian GNU/Linux

As it would be impossible in this course to talk about and give installation instructions for
all of the Linux distributions, we have chosen Debian GNU/Linux for an example install.
Why have we chosen this distribution?

It is:

1. A solid, quality Linux distribution with a long history (in Linux terms)
2. Non-profit and non-commercial (which lets us off the hook on a lot of issues!)
3. Applicable to a wide range of uses and users, from newcomer to seasoned IT
professional.
4. Easily obtained and updated.

About Debian

The Debian project was founded by Ian Murdock in 1993. Debian gets its name from the
combination of Ian Murdoch and his wife Debra's name (Deb-Ian) One of the Linux
community's most illustrious people has been a primary developer of Debian. I'm talking
about Bruce Perens. He was one of the founders of Pixar, the company that created the
Toy Story films, Monsters Inc. and Finding Nemo.

Debian has no company behind it. The Debian project is sponsored by Software in the
Public Interest, a non-profit organization dedicated to helping produce open-source
software and hardware. Despite its not-for-profit status, Debian is an extremely versatile
distribution. It forms the base of many user-friendly distributions like Ubuntu, Linspire
and Xandros. It can also be found running on thousands of mission critical servers that
have to be up 24/7.
Though the installation procedure is not as easy as some commercial distributions, it
cannot be described as difficult either. We will go over this in more detail shortly. The
major advantage to Debian is that it can be updated easily via their much lauded apt-get
system.

Getting Debian GNU/Linux

If you have a broadband connection (cable, xDSL or better), you can easily obtain this
distribution and install it. There are two major ways to do this. The most popular is to
burn the Debian ISO images to CDs and install. If you have a CD burner, this is an ideal
option. The second is to obtain a minimal ISO image especially designed for an install
over the Internet

. With this option, the files are downloaded as the installer needs them. This can also be
done by downloading floppy disk image files instead of CD images. More information on
these methods can be found at http://www.debian.org/distrib/

If you don't happen to have a broadband connection, downloading Debian would be an


extremely frustrating experience. You may want to consider contacting a local distributor
of Debian CDs. Consult this page for further information about distributors in your area:
http://www.debian.org/CD/vendors/

Installation from CD

This is probably going to be the most common way of installing Debian, so we go over
installation using this method.

Preliminary considerations

You may be wondering if you can keep another operation system (ie. MS Windows -
which other one is there?) on your computer. You can.

Are we going to explain how to do it? Not in great detail. Why? There are a couple of
reasons:

• Lack of experience with the newer Microsoft products.


The author must admit that he's installed a great number of Linux distributions
side by side with Windows 9.x products. He hasn't done it with any of the more
recent ones, so advice on doing it would be of dubious quality.
• There's very little you can do with Microsoft products that Linux won't let
you do as well.
Enough said there.
• We don't work for Microsoft
We advocate alternatives to Microsoft products and not the continued use of
them, even in a "second fiddle" role.
What we can say about dual-booting

If you happen to have MS Windows 9.x you must repartition your hard drive to make
room for Linux. You can either erase the drive and repartition a blank drive or you can
attempt to repartition a working hard drive. Ideally, what was done in the "old" days was
to install Windows in C: and D: partitions. This is relatively easy to deal with. As a
matter of fact, my first install of Slackware Linux was on the D: partition of my Windows
workstation.

If you've got one partition with Windows on it, there are some supposedly non-
destructive re-sizing tools. They always tell you to back up your data before proceeding,
so I always figure - what's the use in re-sizing when you can start clean from scratch. You
may decide you want to throw away Windows all together!

Summing up, I recommend Linux-only installations. Linux has become quite "mature" as
an end-user operating system, so I find these stories about being "weaned" off Windows
to be ridiculous (the exception, supposedly, being those who run the financial software
'Quicken'). If you've bought a new car, you don't have to be "weaned" off that. You just
trade in the old one and start driving the new one. The graphic user interfaces available
plus the ever-growing numbers of productivity applications (office suites, browsers,
email applications, etc.) make it such that a MS Windows user could have his/her
workstation switched with a Linux machine overnight and they would barely break a
sweat getting used to it. Everything works very much in the same way.

Installation of Debian GNU/Linux


Booting from a CD
Chances are, if your PC is less than 5 years old, you can start a Linux installation right
from the CD-ROM drive. The way to find out is to look at your computer's BIOS. There's
really no need here to go into what your BIOS is or what it does. Let's just say that it's
there and you need it for your computer to work. When you turn on your computer,
there's a little message that says 'Press DEL to enter setup'. Anything that mentions the
word DEL usually scares people. It shouldn't. Pressing DEL when your computer boots
up will just get you into the BIOS setup tools. It won't get you into trouble, unless of
course you start pressing buttons randomly. You'll see a blue screen pop up with some
menu items. What you need to select is the item 'BIOS FEATURES SETUP' You'll see
some more menu items. There's one that says 'Boot sequence'. That's the one you want. If
you use the page up/ page down keys, you can set this item so that it says CD-ROM first.
That just means that it will look for the disk in your CD-ROM drive first when the
computer boots. Press ESC and then choose the item 'SAVE AND EXIT SETUP'. Don't
forget to set it back to 'C' when you're finished installing Linux. We'll remind you later.

If you can't boot from your CD there's an option to create a boot floppy. In your
machine's BIOS, you might just see A,C - C,A and there's no CD-ROM mentioned there.
Don't panic. You can make a boot floppy. They often come with boxed sets, but if you
yours didn't come with one, we'll cover how to create one further along.

Partitioning

Your hard disk is like a pie. You can divide it into sections. Unlike a pie, after you've
divided it, you can't give a piece to the dog. My dog did try to eat my hard disk once and
he really relishes the floppies I leave lying around, but alas, I digress. For example, if you
had two partitions, popular operating systems would generally call them C and D. You
can call them Ginger and Fred, or Ginger and Marianne or even the Professor and
Marianne if you like. I just use these bad jokes as a way of saying that C and D are
naming conventions that belong to other operating systems. Linux doesn't use them.
Linux may call them /hda3 and /hda5 for example. We'll get to that in a minute. Then you
will need another partition known as a 'swap' partition. This 'swap' partition is just a way
that Linux uses to get more memory so that you don't run out of it.

The classic way of partitioning your hard disk is with a program called 'fdisk' The
program comes with a lot of whistles and buzzers and flashing messages that say
"Danger, Will Robinson". There's a version for Linux but it doesn't mention Will
Robinson. We want to say here that this is the SWAT team method of doing it - the
scorched-earth policy of partitioning. If you have that important term paper on your hard
disk, or pictures of that dream vacation to Hawaii that you haven't shown to your Aunt
Betty yet or your best DOOM scores, you'll need to make back-up copies of them. The
re-partioning using this method will get rid of them - forever! [cue ominous organ
music].

But installing Linux isn't dangerous and if you choose to install you may not need such a
drastic solution to your partition problem. As we mentioned before, If you're fortunate
enough to have a hard drive with more than one partition (the old C: and D: routine), then
it may be just a question of moving some files around. Unfortunately this lesson can't
take into account everybody's individual circumstances.

There's a tool called FIPS that comes with major Linux versions. This will re-arrange
your hard drive so you can install Linux. There are also other commercial products that
will do the same. That may be an option for you, unless you've got a hard drive that's
bursting at the seams. You should know that any decent working Linux system - and by
decent, I mean, having the programs that will let you do anything you did with your
Windows system- will take at least 2 gigabytes. Please keep that in mind. And if you
want those photos of Hawaii on there, I'd plan for a bit more

To talk about where Linux and other operating systems should go. In any situation where
you've got two things sharing the same space, like two people sharing the same
apartment, one person will always exert his rights over the other. Other operating systems
usually want to be the only ones in the computer, so even though it's really not going to
be this way, you have to install them in the first 'primary' partition, and that way it thinks
it's the only one there. That means installing it in /hda1 in Linux speak. So remember, if
you've chosen to go the fdisk route, the other operating system should be re-installed
first. When you've got that re-installed, you are free to install Linux in what's left. Once
you've installed Linux, you can actually see the other system's partition, sort of like those
phony mirrors at the supermarket. We'll talk more about that in another lesson.

Plunk that CD in the drive

Okay. Now is the moment of truth. We've got the CD in the drive, and we're ready to go.
Restart the computer. This should now boot the Linux kernel located on your CD ROM.

What you'll have to do first is partition the hard drive. There is an easy way to do this.
You can dedicate the whole hard disk or non-Windows partition (depending on the type
of install you're doing). There is a better alternative. That is to partition your hard disk
even further and put "parts" of Linux on separate partitions. For example, this is the
scheme that works for me:

Let's take a 10 gigabyte hard drive as an example. First, you should see how much RAM
you have. From this figure, you create what's known as a SWAP partition. This is simply
a way that Linux uses to get an extra memory boost. Custom dictates that your swap
partition be double your ram memory. So if you've got 256 megabytes of RAM, the feel
free to make a 500 megabyte swap partition. Then my partition scheme ends up looking
like this:

Partition Location Size


swap /dev/hda2 500 mb
/ (boot) /dev/hda1 1.2 gb
/usr /dev/hda3 3.5 gb
/home /dev/hda4 5 gb

Assign partitions to look like this. Don't worry about the /usr and /home parts. That will
come after. You must indicate here that you want / to be the bootable partition. /usr will
contain most of the programs that will run on your machine. /home will contain your
personal files. This kind of a partition scheme may come in handy if you have problems
with your hard disk. You may be able to save information if it's located in different
partitions easier than if it were only one big partition.

Before we actually assign the other partitions their places and functions, we need to
initialize and activate a the swap partition. Do this now.

Now you should initialize the / partition - the one that will boot the Linux kernel.

Now, there is what I consider a little glitch in the Debian install. It doesn't really take into
account that you want to initialize /usr and /home partitions. Don't go to the next step yet.
You should go back and initialize these partitions now before proceeding.
Sundry installation tasks

At this point you should have your hard drive partitioned and these partitions assigned to
what areas they'll be housing.

Now, comes the point in the process to install the Linux kernel. You can choose
additional parts to add to the kernel, known as modules, to better use your hardware.
Debian does a pretty good job of auto-detecting what you have, so there shouldn't be any
need to touch anything here. People who know that they're going to have to use foreign
character fonts may want to add additional support for font sets.

At this point, you'll have to choose a 'hostname' or name for your computer. Use
whatever naming scheme is comfortable for you. After, you should choose a 'domain'
name. Even if you're not running an Internet server and even if you don't have a network
you should choose a name as if you had one. Normally if you were in fact a server
providing Internet services, you would choose a name and append .com, .net etc on the
end. I would, of course, be a name registered with an official domain name registry. In
the case of a single machine or a network that's connected to the outside only by way of a
dial-up connection, you should choose a single name without the dot extension.

Now you should enter your ISP's domain name server IPs. Each block (the four
numbered set separated by periods) should be separated by a space.

Now, as we're installing from a CD, you should choose 'CD-Rom' for the installation
procedure. You should also choose the settings 'make system bootable'.

Your hard disk is basically a piece of metal with a metal disk flying around in it at
incredible speeds. It essentially does nothing unless you tell it to do. At this point, we're
going to tell it to boot up the Linux operating system. If you're contemplating a dual-boot

system, you can also tell it to ask you to choose from different operating systems at boot.
Debian uses a program called 'LILO' to do this. Later, you can actually make alternative
versions of the Linux kernel and have LILO boot them. Right now, your safest bet is to
install LILO in the 'master boot record' when the install program asks you. The "MBR" is
a little slice of the hard disk pie reserved for moments like this!

The program will now ask you to create a rescue floppy. These will come in handy. For
example, I have often made the fatal mistake of *not* correctly configuring LILO when I
have made a new Linux kernel (yes, you can make them from scratch!) and my system
has become unbootable. You can always rely on a rescue floppy to get you out of this
situation.

OK, now's the time to reboot the basic system that Debian has installed. You need to
remove the floppy and the CD from the drives. It might be a good idea now, as your
machine reboots, to go back into the BIOS and set it back for the machine to boot from
your hard drive first (instead of from your CD drive). But at least make sure to remove
the CD or else it will boot the CD again and start the install process again.

Reboot and basic configuration


Your new Debian GNU/Linux system is now rebooting. When that's finished, you'll have
to answer a few questions about configuration.

You'll now be asked if you want to use Md5 passwords. Without getting into a lot of
technical jargon, Md5 passwords are protected with an extra layer of security. You
should choose this if you think you'll be needing extra security. You'll have to evaluate
this on your own. If you don't choose this, you'll be asked if you want a 'shadow'
password system. Once again, without going into any technical jargon, this is another
Unix scheme for extra security. You should always answer 'yes' to this one because
without it, your password, especially if it's some dictionary word, would become very
easy to crack. By the way, you should never use a dictionary word as a password.

As we're on the subject of passwords, now it's time to enter the password for the famous
'root' account. 'root' is the administrator of the system. It's also known as the superuser
account. We'll get into more detail on the duties and privileges of root later on. Suffice it
to say, you should now type in a password for the 'root' account. Please choose one that's
easy for you to remember but would be difficult to guess or "crack". For example, if I
were a Star Trek fan, I might be tempted to use Spock as a password. Spock probably
isn't in the dictionary, but it might be so well known now that it would be found in any
program that crackers use to get into systems. Therefore, I would choose something a
little less well-known in Trek lore and modify it somewhat. Trek fans will remember that
mutant brat who once tried to take over the Enterprise, Charlie X. Well, 'ch4rl13X' might
be a good password. Taking some letters and replacing them with similar looking
numbers is an acceptable password procedure. The most secure method is, of course,
creating a random string of lower case and capital letters and numbers and just
remembering it. 'C2jl7y2B' is an excellent password. It is, however, difficult to
remember. In the end, everybody comes up with his/own own scheme that works.

Now you should create an account to work with normally. What I mean by "normally" is
that Linux is a true multi-user system, so one machine can be used by hundreds of users.
When each logs in, he/she is restricted to modifying only the files owned by him/her.
This insures a lot of security and removes a lot of headaches. You should never do
routine work as root. This account should be only used to perform important
administrative tasks. Feel free to use your first name or the first letter of your name and
your last name as the login for this account. Follow the password convention you're
comfortable with.

Now, you'll be asked to remove PCMCIA from the system if yours doesn't use it. Feel
free to do so.
You will now be asked if you want to configure your system to use your ISP. If you have
a dial-up connection, this is a good time to use it. If you connect by way of broadband or
better, you can skip this part.

At this point, we're ready to choose the rest of the packages that will make up our Debian
system.

Completing the install process


Now it's time to begin inserting each one of the CDs you have. They will be scanned for
available packages for install. There is a maximum of 8 in the set. Insert each one and
wait until you are asked for another.

When you have completed the scanning process, you will be asked to choose another 'apt'
source. With Debian, you can download and update packages automatically right off this
Internet with the 'apt' system. We will configure this later, right now it's best not to
choose another apt source besides the CDs.

At this point, if you are connected to the Internet by way of broadband for example and
the install program can make a connection to Debian's security site, it will now start
searching that site for security updates. From the time the ISO images are released to the
point where you are installing, security flaws may have been found in certain programs
included with Debian. For this reason a check is made and any programs with flaws are
marked and updated copies downloaded and installed.

After the security updates are finished, you will be presented with the possibility of doing
a simple install with The Debian Task Installer. This will install programs after you have
indicated your general preferences from a menu.

If you are more adventurous, you may choose the more advanced install process by way
of dselect. Here you will choose packages "by hand" from a list of hundreds. Though the
dselect interface is not visually appealing and may appear daunting to newcomers, it is
fairly straight forward and is actually quite user friendly in the sense that it is almost
impossible to run into trouble with the packages you want to install. If you were to
choose a package that conflicted with something else, you are notified. That way, you can
either choose to keep the package that Debian recommends or "un-select" the package so
your own choice can be installed.

At the fork(s) in the road

Here we reach the end of the install section. You will have to do some more work in this
department, but due to the fact that the packages each person might choose and the
hardware in his/her machine, we can't really document accurately what's going to go on
from here. Our install road has reached a plethora of forks in it. Some simple advice: just
answer the questions as accurately as you can and you should be fine.
Post Install

We'll assume that you've got a working Debian system now. If you've got a broadband or
better connection to the Internet, you should now configure the apt-get system which will
allow you to update your system quickly and painlessly. It will also allow you to get new
programs by downloading and installing them automatically.

If you have a basic knowledge of Unix commands already, You should go to the
directory /etc/apt/ and do the following (as root). (Even if you don't, you may want to try
it!)

mv sources.list sources.list.old

This renames the file sources.list to sources.list.old. sources.list is what told the 'dselect'
and 'apt' programs where to get the packages to be installed. Now we're going to change
things a bit. We'll tell them to get packages off the Internet directly. We need to create a
new sources.list file and add our new package sources to it. Do this first:

vi sources.list

This brings up the text editor 'vi'. There are people who love this program so much, they
will challenge you to a pistol duel at 20 paces if you tell them you think it's lousy. If you
have zero experience with Linux or Unix, 'vi' is probably *not* the text editor for you at
this point, but with a few simple strokes of the keyboard, we can do what we want for
now.

Hit the escape (ESC) key and the letter 'i' and your ready to insert the following.

deb http://http.us.debian.org/debian stable main contrib non-free


deb http://non-us.debian.org/debian-non-US stable/non-US main contrib
non-free
deb http://security.debian.org stable/updates main contrib non-free

You may want to go to Debian's homepage and look up suitable mirror sites nearer to
you. I'm sure the people who maintain the Debian website would appreciate it too!

Now, to save the file, hit ESC again and ':' the type 'wq' (meaning write-quit) and your
file is saved.

Now you're ready to keep your Debian system in shape. We'll give you a refresher later
on in the course, but you will probably be making use of these commands while you use
Debian.

apt-get update - will update your system with the latest security enhances packages.
Use: apt-get upgrade --show-upgraded to get a little more verbose report of what's going
on.
apt-get --purge remove [program/package name] removes any trace of a program
from your system.

apt-get install [program/package name] - installs a new program.

Now, let's see what we can do with that Debian system!

Working with Linux - First Things First


When you work as root

You have now installed Linux and the first thing you did was login as 'root'. Then you
provided a password so that you and ONLY you could login to the system as 'root'. When
you decide to work as root, you had better go into a phone booth first and change into a
blue suit with a big 'S' on the front because 'root' is known as the 'superuser' (you can skip
the red tights if you want).

That's really not meant to be just a witty reference to the Man of Steel. Actually, it is
much more glamorous to be 'Superman' but root is actually more like the 'janitor' of the
Linux system. Root has the keys to everything. He can shut off the lights, shut off the
heat, lock you out of the building; he has to clean up the system and in the end make sure
everything runs. And the most important thing about being a janitor - he sees everything.

'root' is not for routine work


As I mentioned, Linux makes your computer a true multi-user system, which means that
besides root, you can and should work as another person. I say 'should' because doing
routine work as 'root' could be hazardous to your health. When I first started using Linux
myself, information was not all that readily available and I still had that 'one computer-
one user' concept in my brain. It was after I had trashed all of the files and programs that
make Linux run that I realized that working regularly as root wasn't a good idea.

Working as another user


Well, then how do you do your day to day work with Linux? That's easy. You do it by
working as a user other than root. You may pick the name you like. Try your name. If
your name is "Bob" then you could create a user account for 'bob'. By the way, if Prince
Charles is reading this, Charles Philip Arthur George is a bit too long and has spaces,
which Linux doesn't like - he should try 'charlie'. One thing I find EXTREMELY helpful
is that with Linux, I can work as different people. It should not be inferred here that I
have split-personality disorder. I am just a guy with a couple of different jobs. This way I
can organize my work a lot better and backups are easier this way too.

Adding a new user

Well, Bob, now it's time to create your account. If your name is Hrothgar, use 'Hrothgar'
or 'Hrothie' instead of 'bob' for the remainder of the lesson.
Now 'root' has to do this stuff. Yes, I know I just warned you about working as root, but
this is where you have to exert your authority. Most major distributions have tools to do
this. SuSE, for example, has a nice tool called YAST which lets you add users painlessly.
You just fill in the correct information. Consult your Linux version for information on
their tools. There is also the get-your-hands-dirty way of doing this. Actually you won't
get your hands dirty unless you're eating barbecued ribs at the same time.

Using 'useradd' and 'passwd'


To add a new user, you can also use the command 'useradd'. Kind of a logical name, isn't
it?

Try this: useradd bob. You probably won't see any fireworks go off. You might not see
anything. That doesn't matter. Linux has been told that there's a new user and his name's
'bob'.

Now you should give yourself a password.

Do this: passwd bob

Linux will ask you for your password. Follow the same advice I gave previously about
passwords. Also, don't use your 'root' password. Like 'one man, one vote' it's 'one user -
one password'. You will be asked to repeat it.

Getting Started with Linux - Lesson 4


Creating your 'routine' in Linux
What's in your user directory

When you create a new user, there is a directory created for that user in /home. To see
what's in this new directory, you have to do the following.

Go to the /home directory. - typing: cd /home

you can make sure you're in the /home directory by typing 'pwd'. You'll see this: /home.

Now you need to type: cd bob.

MS-DOS users will be familiar with that one.

You can type: ls -a to see what's in the directory. We'll go into more detail with the ls
command later. With the -a option, you'll see some files that begin with a '.' (period/dot).
Those would normally be hidden from you if you didn't use the -a.
Now you can go to work as 'bob', 'hrothgar' or whoever you happen to be.

The Linux file system


Now's the time to learn a little bit about the Linux file system. We'll learn about where
Linux puts it stuff, where to find stuff and a little bit about what that stuff is.

The Linux shell

When you're running Linux and start to type things on that black screen, you are using a
shell. Any operating system uses a shell to get commands from the keyboard to the
computer. It's a lot easier than punching holes in cards like they used to do in the old
days. There are actually programs for Linux where you talk through a microphone and
Linux will carry out commands that you've programmed in advance. It's really cool. For
now, though, we'll concentrate on the keyboard. The most popular shell used for Linux is
the bash shell. bash means "Bourne Again Shell". It is a free version of the Bourne shell
and uses a little play on words, as you can see.

Getting in and out of directories with 'cd'

We saw a few commands in the last lesson, but we didn't go into them much. We will
handle a lot of commands in more detail in later lessons. This lesson will cover those
commands which you will need to see what's under Linux's hood.

The first one we should look at is 'cd'. Again MS-DOS users will be familiar with this. cd
will get you in and out of directories.

Try this one: cd /

This will get you into the 'root' or main directory. It's the directory of directories, the king
of kings, your show of shows. The root directory shouldn't be confused with root's
directory. That is /root.

The basic directory structure in Linux

Now type this: ls

You will probably see something like this:

cdrom home opt tmp


dev lib proc usr
bin etc lost+found root var
boot floppy mnt sbin

They will be blue in color. Those are directories.


The /bin directory
Now type this: cd bin

Type ls again.

This is the famous bin/ directory. You know, I have always felt this one was misnamed.
For example, when people say, 'That's no good, throw it in the bin'. Actually, bin/ is one
of the most important directories in Linux. You'll find all of the most used commands
there. Right now you should be seeing a lot of red (or green, depending on your version
of Linux). Those are programs.

The /etc directory

Now let's look at another directory. There's a long way and a short cut. First the long
way.

'cd ..' will get you out of bin/.

'cd etc' will get you into the etc/ directory.

or you can just type 'cd /etc' in the bin/ directory and it will bring you to the etc/ directory
.

Anyway, you are now in the etc/ directory. This houses most of the configuration files for
Linux. lilo.conf, the file that tells you which OS to boot is in there.

you'll see: lilo.conf

And you don't even have to type the whole thing. You could just type 'ls li' and push the
tab key. Linux will type the rest for you. Isn't that cool!

Some more cool short cuts

Try this one: type ls m push the tab key. Linux is going to beep a couple of times, but
you keep pushing. You will now see every file in the directory that begins with the letter
'm'

Now add an 'o' on to ls m so you get ls mo - now push the tab key. You should see
'motd'. This is a file that contains your startup message. SuSE has a famous one that says
'Have a lot of fun!'. I like that one so I haven't changed it, but you can change it so that
Linux says anything you want when you log in.

Do you want to make sure that lilo.conf is still in there? You don't have to type 'lilo.conf'
or even part of it and press the tab key anymore. You just have to press the up arrow.
Your last commands will appear when you do that.
Your commands are saved in a history file located in your home directory. The more
times you press the up button, the farther back in time you go. Pressing the down button
gets you back to your most recent commands. Just stop on the command you want and
press 'enter'. You can even type the command history and all of the last 400 or so
commands you've typed will be presented. As you get more proficient in Linux, you'll
find that this really comes in handy. You can often find out the answer to the question:
How did I do that? by consulting your shell history.

The /usr directory

Let's talk about using some options with commands.

For example, typing: ls -l will give you more detailed information about the contents
of a directory.

Try this: First let's go to the usr/ directory by doing cd /usr then type: ls -l . You
will see more information, like dates, some numbers, letter combinations. It will say 'root'
a lot. We'll get into more detail about what all of that means later in the course. You'll see
mainly sub-directories here. The usr/ directory contains files and programs meant to be
used by all of the users on the system.

In Linux, everything is a file


Yes, not only is that digital photo of The Eiffel Tower a file but your monitor is a file too!
How can that be? Let's try to explain it.

The /dev directory

If you do cd /dev and then ls, you'll see a lot of yellow outlined in black. These are the
devices that your system uses or can use. Everything is considered a file in Linux, so your
hard disk is kept track of as a file that sits there. If you're using an IDE hard drive (as
opposed to SCSI), your hard drive will be known as /dev/hda. Don't delete that, because
your hard disk will spin around, come jumping out of your computer, land on the floor
and spill out ooze all over the place. No, not really. You will probably not have to look in
/dev very much, so don't worry about that.

The /boot directory

Doing: cd /boot will get you into the /boot directory. You will not find any boots or
shoes or footwear of any kind there. That's where the Linux kernel usually is. Power
users may change the location of the kernel for reasons of their own (they may prefer
/shoe), but it is normally placed there on most systems. You will eventually have to use
this directory, because you may need to use two or more different types of kernels in the
future. That will be taken up in a more advanced lesson.
root's directory - /root

If you are not working as 'root' and you type cd /root, you will be taken to the
directory /root. However, you won't be able to do anything while you're there. Root's
home directory is a restricted area for everybody else. Linux response is sort of like, 'You
don't have to know that'. Users' home directories are under certain restrictions for other
users as well.

The /sbin directory

/sbin is another one of those off-limits directories. You may look, but you can't touch.
This directory is like /bin in that it has frequently used programs in it, but they're only
meant to be used by root. 'Shutdown' is in there. Only root can shutdown the system. If a
user other than root tried to shutdown the system, he or she would get a message saying
that only root can do that. Then that person would be followed by the secret police for
three months.

The /tmp directory


/tmp is a directory that is used to store temporary files, as the name may suggest. You
will find later on that when you use a Windows-style system with Linux like KDE, this
window manager will create files there for temporary use. When you double click on an
icon of a photo, the photo comes up for you to see but a temporary file is created while
you're looking at the photo. The temporary file is deleted when you close the KDE image
program. It's mainly the programs that work under a windows manager that take
advantage of this directory.

The /var directory


/var is a directory for certain files that may change their size (i.e. variable size) For
example, there are a few excellent databases for Linux. One is called MySQL. Normally,
MySQL keeps its data in a subdirectory of /var called /var/mysql/. If I had an e-
commerce website, I would have a database to register purchases. That database would
obviously grow in size. And if it didn't then I'd be in trouble. It is also the normal place
where email servers store their incoming mail. Again, email varies in size as well.

The /lib directory


/lib is for library files. That's where the name /lib comes from. Programs may use
libraries to carry out their functions. Different programs use the same libraries, so Linux
will store them here so that every program knows where to find them. You will probably
not have to worry about this directory much unless you start getting messages like 'can't
find shared library...'. That will sometimes happen when you've downloaded a program
and had to compile it yourself from source. Even then, getting what are known as
"dependency" problems are quite rare. Most programs, even when compiled from source,
usually have a pre-configuration program that makes sure that they can find what
libraries they "depend" on to run. If they don't, they'll tell you that you can't install the
program.
Home Sweet Home

We talked about /home before. This is a directory for storing users' personal files. All of
us have certain preferences for using programs. These preferences are usually included in
configuration files which are also stored in users' home directories. Most of these files
start with a '.' (period/dot).

If you go to your home directory, 'cd /home/[username]' and type:

ls -a

you will see these files.

What's left
The /floppy /cdrom and /mnt directories
Most installations of Linux will also provide these directories:

/mnt
/cdrom
/floppy

These shouldn't contain anything. Later on, we'll explain in more detail what these are
for. Let's just say that in Linux, if you want to see what's on a floppy disk or a CD, you're
not going to be able to just click on an 'a:' icon or a 'd:' icon. You're going to do

cd /floppy or cd /cdrom

If you try that now you probably won't see anything. As I said, more about these
directories later in the course.

Well, we've looked under Linux's hood, so to speak. In the next lesson, we'll take her for
a little spin.

Day to day with Linux


Shutting down Linux
At this point you should have installed Linux, and you've looked around at what you
have. And then when you're finished you'll have to shut off your computer.

Actually, there are computers that are never shut off. Imagine if your ISP shut off the
computer every night! The Internet is a 24/7 business so that wouldn't be practical. There
are also people who probably just shut off their monitor. As you probably get some sleep
occasionally, so we should maybe let our machine have a rest too once and a while. For
this, we'll use the shutdown command
The importance of the 'shutdown' command
As anyone who's used a computer knows, if you shut off you're computer before you've
finished saving work, or if there's a power outage that shuts it off for you, data will be
lost. At first, if you shut off Linux incorrectly or there was an inopportune thunder storm
and you lost electrical power, you could do severe damage to your Linux file system.
That will very rarely happen these days, but you should always use the shutdown
command when you want to shut off your computer. Linux will tell you about it if you
don't - it will run a check on your hard disk automatically when you use it again. If you
have a big hard disk, you might as well go and make yourself a sandwich because it's
going to take a while. Linux will also run a routine check every once and a while
automatically. You also have our permission to fix yourself a sandwich in these cases too.

Shutdown for a single computer


The most common way of shutting down a single user Linux system is for you as root to
issue the command:
shutdown -h now

You use this when you plan on shutting your computer off at that moment, as opposed to
some later time.

You'll see a message like:

Linux is going for system halt NOW

It will start to shut off programs that you're computer is using and you'll see it all
happening. That's because Linux is a transparent system. It lets you see everything it's
doing. It won't give you a simple message telling you to wait and then another one telling
you you can shut it off now. If something is causing a problem, it will tell you about it
when it starts up and when it shuts down. That way, if you are having a problem, you
may be able to track it down. If you don't know how to solve it, you can tell another
person what you saw and he or she may be able to help you.

With the shutdown -h now command, you must wait until you see the message:

System halted

or

Power down

before you shut off the computer.

Re-booting the computer

The other command that you will probably use is:


shutdown -r now

If you have installed a dual-boot system and you want to use the other operating system,
(why would you want to do that?) you would use this command. You will get a similar
message as with the -h (halt) option that will say something like:

System going for reboot NOW

The basic reason behind all of these messages is that Linux was conceived to be a
networked operating system. You have people at workstations on the network busily
doing their work. The last part of the shutdown command now is fine for a single-user
home PC, but on a network system this would be changed to indicate a time. That way
people would have a chance to finish what they were doing before the system went down
for maintenence. Using 'now', in a network, would probably be hazardous to the health of
the person who sent that command.

The next time you shutdown your system, you may want to try using some time options
instead of just now. For example, you may want to try shutting down the computer at a
given time.

shutdown -h 20:01

Which will shutdown the computer at 8:01 PM. You could also try:

shutdown -h +5

That shuts down the computer in 5 minutes time.

Now you know the correct way to shutdown your Linux system. In the next lesson we'll
talk using the system again.

Getting Started with Linux - Lesson 5


Virtual Terminals

One of the coolest things that Linux has to offer is the concept of virtual terminals. Back
in the days of MS-DOS, one program could only be run by one user at a time. Linux in
non-graphics mode may resemble MS-DOS somewhat, but that's where the similarities
end. Linux is a true multi-tasking, multi-user system. Unlike MS-DOS, you can work as
more than one user with more than one program at a time

The ALT-F keys

Let's say, if you were working as a user, 'bob' for example, and you found that you
needed to do something as 'root'. You wouldn't have to shutdown the program you were
working with. You could just press ALT-F2 and Linux will prompt you to login as a
different user, in this case, 'root'. You'd just type the root password and then you can do
stuff as 'root'. Pretty cool, wouldn't you say?

The combination of ALT, plus the F keys will allow you to login as a different user, or as
the same user, but to run a different program. All you then need to do is type: 'exit' when
your finished, and then press ALT-F1 again to get back to your original terminal .

A preview of virtual terminals in X-window


It's true that the 1990's brought us the era of the graphic user interface, popularized by
Macintosh OSes and Microsoft Windows. This gave us the opportunity to have various
programs running at the same time. The X-window system of Linux will let you do this
as well, but then we can add the concept of multi-user to it.

If you've been experimenting with your windows manager already, you might want to try
one more thing. The combination CRL-ALT-F6 will get you out of your windows
manager momentarily so you can login as a different user. Pressing ALT-F7 will get you
back to your windows manager again. We'll mention this again in the lesson on X-
window.

Getting Started with Linux - Lesson 5


Text editors in Linux

If I were to choose one of the main reason why people use PCs, I would definitely say for
writing. With a computer and a word processing program, cross outs, white out and
crumpled up paper has disappeared forever. All those old Smith-Coronas got put away.

Linux is just as well suited for word processing as any other operating system.There are
several excellent word processing programs for Linux like AbiWord, KWord, part of the
KOffice suite and the OpenOffice.org suite's word processor. We'll talk about these kinds
of programs in a later lesson. First, we should talk about the terminal mode text editors
that are available for Linux.

Why use a text editor?

A text editor is just like a word processor without a lot of features. All operating systems
come with a basic text editor. Linux comes with several. The main use of a text editor is
for writing something in plain text with no formatting so that another program can read it.
Based on the information it gets from that file, the program will run one way or another.

The text editor "vi"

The most popular text editor for Linux is called 'vi'. This is a program that comes from
UNIX. There is a more recent version called 'vim' which means 'vi improved'. The
problem with 'vi' or 'vim' is that a lot of people don't like it. You have to remember a lot
of key combinations to do stuff that other text editors will do for you more easily.

We should go through some basic 'vi' commands, because I have found that 'vi' is good if
I want to get into a text file quickly and change something or I want to write a short note
to myself. I generally do not use "vi" for anything that requires more than about 30
seconds of work, but there are people who swear by 'vi' and do all kinds of things with it
like designing entire websites.

Working with 'vi'

Let's make a text file. Type:

vi tryvi

You'll see a line of tildes down the left side and the name 'tryvi' at the bottom and [new
file].

To write something, you have to press ESC and the 'i' key (i for insert). Even if you don't
press 'ESC-i' it usually gets the idea that you want to type something and lets you do it
after a few keystrokes. You should get used to the 'ESC-i' keys so you don't end up
writing 'ar John' instead of 'Dear John'.

Press ESC + 'i' then type: hello vi

If you wrote jello vi or jello bi or something I don't want to know about, you can
always erase your mistakes with the backspace key.

To save this file, you would press ESC then the colon key ':' then 'w' (write)

To save the file and quit vi, you would press ESC, ESC the colon key ':' then wq
(write, quit)

To quit without saving, press ESC, ':' then 'q'. Vi may protest if you've written
something and you don't want to save it. If you press ESC ':' 'q!' with an exclamation
point, vi will accept it and not save your changes.

That's vi in a nutshell, or more like a sesame seed. There are a lot of commands in vi -
and you may explore those on your own at a later date, on your own terms and in the
privacy of your own home.

'pico' and 'joe'

pico' and 'joe'- sounds like a comic strip. Actually, they are two other text editors that I
like and I think are a little easier to manage. They're like 'vi' in that you use them to create
and edit non-formatted text, but they're a little more user-friendly. Using 'joe' 'joe' was
created by Joseph Allen, so that's why it's called Joe. I suppose if his name had been
Hrothgar Allen, it would have been called 'hroth'.

To use 'joe', you could type: joe tryjoe'.

You won't see the tildes like vi. It looks a little friendlier. The majority of joe's
commands are based on the CTRL-K keys and a third key. The most important of these
is CTRL-K-H which gets you 'help'. Help shows you the key combinations to use with
'joe'.

The most important thing about 'joe' is the logical concept that you can just start writing
if you want. Try writing anything you want.

To save it, press CTRL-K-D. To save and quit, CTRL-K-X.

To quit without saving, CTRL-C, (without the K).

If you want to see the other features of 'joe', press CTRL-K-H, as I mentioned before.

My favorite little added feature of 'joe' is that if you edit a file again, it will save the
previous file with a tilde on the end, like 'tryjoe~' That little tilde file has saved my life a
couple of times. (well, maybe not my life) But it has saved me a lot of work. I've made
some changes to a file and then found out that wasn't a good idea. I could always fall
back on the tilde file, which is a copy of your previous edit.

'joe' is a very good option for writing those short text files that you'll need.

Using 'pico'
'pico' is another friendly text editor. If you type:
'pico trypico'

You'll see the commands you need in 'pico' specified at the bottom. You can just start
writing anything you want.

To save the file, press CTRL-o. To save and quit or to just quit, press CTRL-x

Pico will always ask you if you want to do what you're doing. That's good. Questions like
that will keep you from sending a file into non-existence without wanting to. All the other
commands you'll need are at the bottom of the page.

Well, this is our little overview of the main text editors available for Linux. In our next
lesson, we're going to need to use one in order to make our work in Linux a little bit safer
and easier.

Shells in Linux
Sea shells by the seashore, Can you say that ten times fast? How about 'Shells in Linux'?
That's not as difficult. Learning to use shells in Linux isn't going to be difficult either.

Why you need to use a shell

As I mentioned in a previous lesson, a shell is just a way for your computer to receive
commands. The most common shell used for working in Linux is the 'bash' shell. Our
lesson will deal with that one.

The most common commands a computer receives are ones to copy files, move files
around, list files and delete files. Popular operating systems have perfected this to such a
degree that they have graphic interface programs to do all this for you just by moving the
mouse around and clicking on a few buttons. Linux has these programs too, but anybody
who's seriously thinking of using Linux on a day-to-day basic should be familiar with the
commands that you type in by hand. Some people see this as a throw back to the old
days. I see it as a way to have more power over your computer because even those
operating systems that are billed as more 'user friendly' have provided you with a shell,
just in case you need it. And sometimes you do!

The '.bashrc' file

Before you start using the 'bash' shell you should be aware of a file that sits in your home
directory called '.bashrc'. You'll find a lot of files on the system that end in 'rc'. Those
files allow you to configure a certain program to run just the way you like it. The best
way to find it is to type.

'ls .bashrc'
(ls lists files)

You can open that file with vi, joe or pico, as we talked about in the last lesson.

For example, in your home directory you would type 'pico .bashrc'

An introduction to aliases

In that file, you can add something called an 'alias'. Everybody knows what 'alias' means-
'an assumed name'. An 'alias' in this file are some lines that you write so that your bash
shell assumes that one command is really a variation of it. As you already know, you can
modify a command with a dash '-' and a letter To see where the .bashrc file was, you
could have typed 'ls -a' and that would have shown you every file in the directory,
including those that start with '.' If you find yourself using these '-letter' combinations a
lot, you can modify your .bashrc file so that even though you type the simple command,
like 'ls', you actually get 'ls -a'.
Some of these aliases may be very important to keep you from sending that novel you
just wrote into non-existence by accident. I have a couple of entries in my .bashrc file to
keep me from getting into trouble. They are:

alias cp='cp -v -i'


alias rm='rm -i'
alias mv='mv -i'

Let me explain them.

'cp' is the command to copy a file to another place or to make a copy of a file under a
different name. In order not to copy a file to a place where there's already a file by the
same name, you could type cp -v -i, (-v for verbose, -i for interactive) and it would ask
you if you really want to do it in case there's another file by the same name. Then the -v
would show you where it went. This is probably a good idea all the time, so you could
create an alias for it in your '.bashrc' file.

'rm' is the remove/delete command. In Linux, this means gone forever [cue ominous
organ music] You obviously have to be very careful with this one, because in the bash
shell there is really no 'trash' bucket to pick it out of if you delete it. That's why I've added
the -i (interactive) command to my alias, so that it asks me if I really want to delete that
novel I just wrote.

'mv' is for moving files to a different place or renaming a file. I have an alias for it for the
same reasons as the 'cp' command.

Adding aliases to the .bashrc file

Well, you now have '.bashrc' open in 'pico' or your new, favorite text editor. It would be a
good idea to add this line first, so you know what you've done.

# my personal aliases

The pound sign (#) tells the shell not to read that line. It's known as a 'comment'. Then
you would add:

cp='cp -v -i'

on the next line write:

rm='rm -i'

so we don't send anything into byte heaven without a warning. And finally

mv='mv -i'
So you're aliases will look like this

# my personal aliases
alias cp='cp -v -i'
alias rm='rm -i'
alias mv='mv -i'

Save that file and logout and login again. Now you have a safer, easier shell environment.
As you get more proficient at Linux, you can add more aliases as you see fit.

Now your shell's ready to go. If you type logout and then login again, your aliases will
work. There is also a short-cut. If you type:

source .bashrc

your aliases will be ready to go.

Getting Started with Linux - Lesson 6


Frequently Used Shell Commands
If you install a window manager like KDE, you can copy, delete, move and rename files
by way of a graphic user interface like Konqueror. But as I mentioned before, shell
commands are pretty standard in Linux, so we're going to teach you the ones that you're
most likely to use. You can use them both in text mode or in your x-terminal when you're
in graphics mode.

'cd' command

To show the student the basic uses of the 'cd' command The first command you'll use is
'cd'. We talked about this in a previous lesson, so let's review the basics.

'cd' means 'change directory'.

Typing: cd /[directory name] will get you into one of the main directories in Linux.

Typing cd .. will get you out of it.

Typing cd without the / and a sub-directory name will get into that subdirectory.

Remember, you don't have to type the whole name

Typing: 'cd' and the first letter or letters of a directory and the TAB key will complete it
for you. Then all you have to do is press enter.
If you type just: cd

you'll go back to your home directory

The 'ls' command

To show the student the various variations of the 'ls' command 'ls' is another command
that we've discussed a bit before. Let's go into some more detail.

Typing 'ls' will list the contents of a directory with just information about file names.

You can use 'ls a*' to list the names of all the files that begin with the letter 'a' and so on
down through the alphabet. Please do not use the cuneiform alphabet unless you're from
ancient Mesopotamia.

Normally we'll want to add on some parameters (those -[letter] combinations) so that
we'll get some more detail

Using 'ls -l'

To show the student how to get some more detail with 'ls -l' 'ls -l' will get you a detailed
listing of the directory like this.

-rw-r--r-- 1 bob users 103824 Jul 10 12:01 waikiki.jpg

The first part, those letter, are file permissions. We'll go into that in a later lesson. That
basically shows what you and others are allowed to do with the file, like read it, modify it
or make nasty comments about it.

The next one shows that you've got 1 file. The next one that it belongs to you, 'bob'. The
next one represents that Linux, not only recognizes users, but also groups of users. We'll
go into that in the next course. The numbers are the size of the file in bytes. You have the
date and when it was created or modified or copied there. Lastly, you have the name of
the file, waikiki.jpg, which is obviously your important tax records.

'ls -l' will give you a detailed listing in alphabetical order, starting with any file that
begins with a number, then any file that begins with a capital letter and then any normal
file that begins with a lowercase letter. So if you have a file '007_secrets.txt' that'll be the
first one you see.

Other parameters with 'ls'

Now let's add some more parameters on


'ls -l -t' will give you a listing according to the time with the newest ones appearing first
in the list. You don't need to separate the parameters either. 'ls -l -t' and 'ls -lt' are the
same thing. If you want the oldest to appear first, try:

'ls -ltr'

The 'r' is for reverse order.

There are a couple of parameters in capitals that you may want to use. 'ls -lS' will list
your files from biggest to smallest. 'ls -lSr' will reverse this order.

'ls -lX' will list files according to type in alphabetical order. If you have any that end in
*.zip, then those will be last. If you want those to be first, now you know: 'ls -lXr'

There is also a parameter that will help you if you want to find out more about these
commands or any others. 'ls --help' will give you details of all the possible variations for
this command.

The 'file' command


File is an interesting little command. MS-DOS got us all used to the idea that a file had to
have an extension (file.extension- like 'novel.txt') that told us what kind of a file it was. In
Linux, it's 50/50. You don't have to do that if you don't want. In MS-DOS, programs end
in '.exe', in Linux, they don't have to and probably won't.

Linux is also color coded, as you know, so once you get used to the colors, you'll know
what the file is about. Let's say your friend Tony, the one with the magic markers, sends
you a file he says is really neat. It's attached to an e-mail message and it says 'stuff'. You
can see what type of file it is by typing:

'file stuff'

You may see something like this:

'stuff: ASCII text'

This means that the file contains plain text. It's probably some jokes or his favorite chili
recipe.

If you don't know what some particular file contains and you're curious about it, you can
use this command to get some information about the file.

'more' and 'less'

To introduce the student to these commands 'more' is a command that you can use to
read, for example, what's written in that 'stuff' file that Tony sent you.
You would type 'more stuff' to see the jokes.

Press the 'q' key to stop viewing the file

It's useful for this, but not really ideal. We'll talk more about 'more' in this lesson when
we use it in combination with other commands

'less' is better for viewing files. You can scroll back up to see the whole text if you want.
You can't do that with 'more'. 'less' is more than 'more', if you get my meaning.

type

'less stuff'

to see Tony's jokes again

Again, press the 'q' key to stop viewing the file

The 'cp' command

To show you how to copy files with Linux We talked about 'cp' in the lesson on aliases.
'cp' is for copying files from one place to another, or for making a duplicate of one file
under a different name.

Let's go back to Tony's 'stuff' file For example, if you saved Tony's e-mail attachment to
your main /home directory, /home/[your name], you may want to create a directory to
keep Tony's files You could make the directory for Tony tonyd (Tony's last name is
Dweebweiler)

mkdir tonyd

then you can do: cp stuff tonyd Remember use your TAB key to save time.

Now you're going to have TWO files named 'stuff' because you copied that file to the
directory 'tonyd/' - you didn't move it there. You'll have the original 'stuff' in your home
directory and then the copy in /home/[your name]/tonyd/.

You'll be able to tell the difference between the two files because the copy of 'stuff' in the
directory 'tonyd' will show a different time. If you use the command ls -l stuff on both
files, you'll see this.

If you had used the command cp -p instead of just cp you would end up with two
identical files in two different places. If you don't want that, there's a better way of doing
it so that 'stuff' is only in the directory 'tonyd'. That's the mv command. We'll talk about
that shortly.
More uses of the 'cp' command

To show you how to copy directories and create duplicates of files. Now let's talk about
two more basic uses of the cp command and some short cuts.

You can also copy entire directories to another place. As I mentioned in a previous
lesson, you may want to work as two different users for two different jobs. You may be
working as 'fred' and your directory 'tonyd' is in the directory /home/bob, where you work
as 'bob'

As 'fred', you can use the command:

cp -r /home/bob/tonyd/ /home/fred/

If you're in your home directory you can use this command

cp -r /home/bob/tonyd/ ./

to copy the directory 'tonyd' to your home directory.

You may also use the command

cp -r /home/bob/tonyd/ ~

with the tilde wherever you happen to be and that will automatically copy the directory
'tonyd' to your other home directory.

The other use of 'cp' we talked about was to get a copy of a file with a different name. For
example, Tony's file 'stuff' is loaded with jokes. You may want to add some more jokes
and then pass it along to another person You could do this:

cp stuff stuff2

or choose a name that's meaningful for you other than 'stuff2'

Now you have another file that you can add jokes to while you preserve the original file.
You can open it in 'pico' and start writing: "Why did the chicken cross the road..."

Always remember to use that TAB key and the up and down arrows to save yourself
some time.

Now we'll look at the command 'mv'.


The 'mv' command

'mv' is a command that we're going to use to move files around or to rename them. 'mv'
sort of has a split-personality because it serves these two functions at the same time.

'mv' command for renaming files

Let's go back yet again to Tony's file, 'stuff' again. 'stuff' is not a good name for a file just
as 'book' isn't a good name for a book. Just imagine: "The number one bestselling book
this week is 'Book' by John Author.

You should probably re-name this file to something meaningful. I would suggest doing
something like this:

mv stuff tonys_jokes

You may have noticed the underscore '_' in the title. It's there because Linux doesn't
really like spaces in the file names. You can do it and Linux will accept it but it will put a
\\ between the different words. Spaces are sort of 'faux pas' in Linux but not 'verboten'. It
would be to your advantage to use '_' between words though.

Moving files with the 'mv' command

Now you can use the 'mv' command to move Tony's jokes into the directory you made to
keep his files.

mv tonys_jokes tonyd/

If you do cd tonyd and then ls to* you will see his file there along with 'toms_jokes' and
'tomato_soup_recipe'. (if you have another friend named Tom and you like to cook)

You can also move entire directories with this command. You do not have to use the '-r'
option as you did with 'cp'. You would just substitute the file name for a directory name

mv tonyd/ my_friends/

would move the directory 'tonyd' to the directory 'my_friends'.

What? You don't have the directory 'my_friends'? Well, let's create it with another
command.

The 'mkdir' command


'mkdir' is the command for making directories. 'mkdir' may be familiar to MS-DOS users
out there. As you have noticed, the people who wrote these programs tried to give them
names that described what they do more or less, not as long as 'makemeadirectoryplease'
and not too cryptic like 'xr77b'.
Using the 'mkdir' command
To create the directory 'my_friends' that we talked about in the last lesson, you would
type:
mkdir my_friends

There are no whistles or buzzers. If you'd like some sort of acknowledgment, you could
type

mkdir --verbose my_friends

and it will tell you that you created the directory.

If you type ls -l You'll see it there along with information about it.

Now you know how to use 'mkdir'. You can even use it to create a directory called
'my_enemies' if you're into that sort of thing.

The 'rmdir' command


'rmdir' is the opposite of 'mkdir'- it gets rid of directories. It should be pointed out that in
order to use it, the directory has to be empty. If you copied or moved anything to
'my_friends' and you typed
rmdir my_friends/

Linux would politely tell you that you can't do that.

So, you have to use your 'rm' command on the files first to remove them or use 'mv' to get
them into another directory. Then you're free to use 'rmdir'

So, next we'll deal with the 'rm' command.

The 'rm' command

'rm' is for removing or deleting files. That means, sending them into non-existence,
oblivion, bye-bye.

The correct use of 'rm'

So you have to be careful with 'rm'. That's why we put an entry into our '.bashrc' file:
alias rm='rm -i' so that it asks you if that's what you really want to do.

If you created a file called 'bad_jokes' and you wanted to get rid of the file, you would
type rm bad_jokes, and because you made an alias, it will ask you.

rm: remove `bad_jokes'?:


You would press the the 'y' key unless of course you remembered that you have a real
good one in there and then you would answer: with the 'n' key. Actually, any key other
than 'y' is the same as responding with the 'n' key, so if you accidentally type 'w', don't
worry.

'rm' - some words of caution

You can also do stuff like rm b* with the asterisk, but I would use my best judgment
with that. You may get 'y-itis' and just keep pressing the 'y' key. I have done that before.

Occasionally, when I've used the text editor 'joe' a lot I end up with a lot of files that end
in a tilde (~). You get files like 'note_to_myself1' and if you've modified it, another one
'note_to_myself1~' Then I decide that I don't want all of those ~ files littering up my
directory and I innocently type: 'rm note_to_myself*' and then 'y' 'y' 'y' and then I realize
too late and my brain types: 'Y did you do that!!' The problem is that 'note_to_myself2'
contained my important plans for taking over the world and 'note_to_myself3' contained
a note about how much money I owe at the dry cleaners. Maybe taking over the world
can wait, but my dry cleaner's not going to give me my suits the next time unless I pay
him.

There's another case of 'rm' that's potentially more dangerous than the 'rm *' case. That's
adding the '-f' option on the end. If you do this, it will override the '-i' option and won't
ask you anything. It just goes ahead and deletes the files in question. For example, if you
were in a directory and typed 'rm * -f' you would delete everything, no questions asked. I
generally use the '-f' option very sparingly, like when Valentine's day falls on Friday
during leap year and coincides with a full moon.

Also, please be very careful when you're using the 'rm' command as 'root'. You could do
some very serious system damage if you delete the wrong files. Wait until you have some
experience before you start removing files 'by hand' as 'root'. Use the configuration tools
provided in your version of Linux to un-install programs that you don't want.

Getting Started with Linux - Lesson 7


Plumbing with "pipes" in Linux

In this lesson, we're going to do a little plumbing. Plumbing with a computer? Well,
Linux is so flexible that it even allows you to do plumbing with it. Well.... actually, it's
just a little witticism of mine because the command we're going to learn in this lesson is
called 'pipe', and plumbers work with pipes. To use the pipe command, you don't type:
pipe. You press the '|' key. The location will vary on keyboards from country to country.
This symbol is like two vertical slashes, one on top of the other.

This is the first time that we're going to see a command that's meant to be used with other
commands. That means that the pipe will separate two commands so that they will be
done one after the other. Let's try some plumbing.
For example, if you looked at the contents of your /proc directory with:

ls -l /proc

it would be too big to fit in one screen. So if we typed

ls -l /proc | more

you could scroll down with the ENTER key and see it all.

Actually, ls -l /proc | less is a better solution because you can scroll up and down with the
arrow keys. Remember that in a previous lesson we said: "Less is more than more".

You're probably going to end up using this a lot. You're personal directory in /home will
fill up and pretty soon 'ls -l' will overflow in your terminal or x-terminal window.

There's a little short cut if you've forgotten to use the pipe. You can also scroll up and
down in a terminal with the SHIFT-PAGE UP / SHIFT-PAGE DOWN keys.

Getting Started with Linux - Lesson 8


How to get more information with Linux
Now we'll talk about some other commands that you will probably need in your day to
day work with Linux. They make your work a little easier and give you added
information about your system.

'man' - manual pages in Linux

The first command is 'man'. This command will show the manual for a command or
program. The manual is a file that shows you how to use the command and list the
different options for the command in question. You would type:

man [the command]

For example, if you type

man mkdir

The manual file for 'mkdir' will come up and give you a detailed explanation of this
command.
Managing documention in Linux

The manual file for 'mkdir' is actually one of the more straight-forward ones. There are a
lot that I think we're written by Harry Bigbrains and they were meant to be seen only by
Richard Biggerbrain who's sitting in the cubicle next to him.

For example, this appears in the 'man' file for 'cp'

By default, sparse SOURCE files are detected by a crude heuristic and the corresponding DEST file is
made sparse as well. That is the behavior selected by --sparse=auto. Specify --sparse=always to create a
sparse DEST file whenever the SOURCE file contains a long enough sequence of zero bytes. Use
--sparse=never to inhibit creation of sparse files.

I don't know about you, but I'm going to call my lawyer. I've been assaulted by "a crude
heuristic".

If you use the command cp --help, you'll get a nutshell version of the 'cp' command.

If you use your pipe cp --help | less, it'll be a little easier to manage.

The 'info' format

Typing info [command name] will get you more information on a command and is more
current than most man files and perhaps a little more readable. In fact, some 'man' files
will actually tell you to consult the 'info' file. The 'info' files are not always installed
automatically. so you may want to consult your own version of Linux about these files.

Apropos
The word 'apropos' means pertinent to something else. There is a command that will
show you all of the man page that may shed some light on a certain command. For
example, if I typed:
apropos xterm

I would get something like this:

resize (1x) - set TERMCAP and terminal settings to current xterm window
size
xterm (1x) - terminal emulator for X
terms (5) - database of blessed terminals for xtermset.
xtermset (1) - change settings of an xterm

These are all man pages related to xterm. You would then just choose one of these and
type man terms for example.

Some versions of Linux that are made for languages other than English will give you this
documentation in its particular language. There are also websites that specialize in
documentation in other languages. You can use your favorite Internet search engine to
find Linux documentation in your own language.

Getting Started with Linux - Lesson 9


Other interesting and useful commands
The command 'touch'
Now we're going to talk about a touchy subject. The command 'touch' which is used to
change the time and/or date of a file.

You can use 'touch' if your boss yells at you about not having a report ready at lunchtime.
You should quickly finish the report, then type:

touch -t 05070915 my_report.txt

and it makes it look like you did it at 9:15. The first four digits stand for May 7 (0507)
and the last four (0915) the time, 9:15 in the morning. Make sure your digits match your
story. You don't want to have it look like you did it in February. Of course, if you
punched in at 9:40, then you're in trouble.

'touch' can be used also to create an empty file. You would just enter touch [a file name].
There may be times in the future when you need an empty file that will be filled up later
automatically by the workings of some program. We'll deal with the uses of 'touch' in our
later courses.

Finding things with the command 'find'


There's so much on a computer's hard drive, nobody could ever know from memory
where everything is. Perhaps the smart lad who won the spelling bee by spelling
'prestidigitator' might be able to, but most of us are going to have to find things now and
then.

If you use a windows manager like KDE, you can use the find tool. It's very useful
because it has a lot of options and you can use them to modify your searches.

How to use the 'find' command


But if you're getting used to using command line stuff, just type in:
find -name *hawaii*

and find out where you put you pictures of you Hawaiian vacation. If you're in your
/home directory, it will go through every directory and find every file that has the name
'hawaii' in it. The two asterisks make sure it does that. If they started with 'hawaii' you
wouldn't need the first asterisk but you can leave it there if you want.
You may have created some file recently. For example, you may want to find some file
that you were working on, let's say from now up to 10 minutes ago, you could type.

find -mmin +0 -mmin -10

This will list the files that you created or modified within the last ten minutes. If you
choose to use a higher number for -mmin -? you should probably use a pipe, for example:

find -mmin +0 -mmin -120 | less

will find things that you created or modified up to 2 hours ago and the '| less' part will
make it easier to read.

The 'grep' command


In the last section we talked about the 'find' command which finds files. Now we'll talk
about the 'grep' command which finds words in files. Your windows manager may have
this incorporated into its find tool but then again, the beauty of Linux is having
alternatives.

What does 'grep' mean?

'grep' is a Vulcan word that means "find". Actually it isn't, but it sort of looks like it,
doesn't it?

Kirk: "Find the solar system L10J, Mr. Spock."


Spock: "Grepping now, Captain." *
* Star Trek stuff copyright Paramount Pictures

Let's have a little practice session with 'grep'. The best way is learning by doing, so let's
do it.

A 'grep' mini-tutorial

With 'pico' or any Linux text editor, create a file called 'mary1.txt'

pico mary1.txt

Then type:

Mary had a little lamb

Press CTRL-X in 'pico' (if you're using that) and it will prompt you to save.

Then create: mary2.txt and enter the text Mary had a little cow.
Save that and create the file: mary3.txt and type: Mary had a little too much to drink.
Now we know what Mary was doing when she wasn't watching her lambs! Now save that
file.

OK, now we're ready to try out 'grep', so phasers on stun and let's go.

Type the following command:

grep Mary mary*.txt

Let's explain this a little. 'grep' looks for the word "Mary" in any text file that is called
"mary(something).txt". You've created three files that start with 'mary', so the asterisk
makes sure that 'grep' will look for the word 'Mary' in all three.

You should get this output:

mary1.txt Mary had a little lamb


mary2.txt Mary had a little cow
mary3.txt Mary had a little too much to drink

The word 'Mary' is in all of those files, so you'll get this output.

If you type grep little mary*.txt you'll get the same output because the word "little" is
also in each of those files. But if you type the word "cow", you'll get this output:

mary2.txt: Mary had a little cow

because the word "cow" is only in mary2.txt.

Typing grep drink mary*.txt will get us more or less the same, only that mary3.txt will
show up instead of mary2.txt.

Well, there's 'grep' in a nutshell. It's been a pleasure 'grepping' with you!

Power user commands


Here is a brief overview of some other commands that you may find interesting at some
point as you use Linux. They will help you to get all of the power out of Linux.

'who'

'who' is a command to find out who's working on your system. As you now know, Linux
is a multi-user system. Even if you're using one computer at your home, you may be
working as more than one person. For example, if you logged in as 'root' but are working
as 'bob'. You may see something like this:
root tty1 May 20 09:48
bob tty2 May 20 10:05

This is just Linux's way of saying that 'root' started working on terminal 1 on May 20 at
9:48 in the morning and bob started working on terminal 2 at 10:05. This is mainly used
in networked situations so the system administrator knows who's working. It can be used
by your boss to find out that you've come in late too. You may use it to find out if you've
opened more that one terminal so that you remember to log out.

Getting Started with Linux - Lesson 10


'tee', '>', '2>'
In the lesson on the pipe command, I mentioned plumbing with Linux. I think I'm going
to resist the temptation to make some sort of golf reference here in the lesson on the
command 'tee'.

'tee' is used to write out what appears on your screen into a file. You will be using this
with the after a pipe '|' .

You might do this:

ls -l | tee directory_listing

to get a file with the listing of a directory. If you've placed files in a directory to be
backed up, you could use this command to create a listing of that directory. You could
print out the file on a label and stick it to the disk, tape, zip cartridge or whatever you
used to make the backups.

If you're using the 'tee' command for the backups I described before, you may want to put
a date on the file. You can use this command:

date | tee -a directory_listing

The command 'date' will enter the date and time in the file at the end. Remember to use
the -a option if you're going to write to that file a second time. If you don't you will erase
everything on the file in favor of whatever the second command was.

The '>' command


The "greater than" symbol '>' will do the same as 'tee'. You don't need the pipe command
(|) with this one.
ls -l > directory_listing
will give you the same result. If you want to add the date at the end, use the command:
date >> directory_listing
with two "greater than" symbols (>>)

The two symbols will add to the file without erasing its contents

The '2>' command

This command, the number two (2) with the "greater than" symbol >, is used for creating
a file for an error message that you may get.

You will probably not be using it a lot because we all know how perfect Linux is and
how few errors there are when you're using it. But every once and a while you may want
to download some software from the Internet You install it and - whoops! - there's some
error. You may not have something installed that the program needs to run. You could
just do something like this:

[program X that doesn't work] 2> program_X_error

You create a file with the error message. You could show it to someone who might know
what's missing or you could send it to the author of the program. He or she would also
like to know about it and will probably help you fix it.

'whoami'
whoami is a nice little program that tells you who you are, just in case you didn't know
already. You amnesia victims are in luck! Actually it tells you who you are in terms of
how Linux understands who you are, that is to say, your user name. So if your user name
is bob and you type whoami you'll get: bob This comes in handy if you switch terminals a
lot and work as a different user. You may, in terms of computer use anyway, forget who
you are!

'whatis'
To show you how to use the 'whatis' command 'whatis' is a command so you can find out
what a program does. If you explore your Linux system, you will find a lot of programs
and you may not know what they do. You would simply type: whatis grep for example,
and you would get this:
grep (1) - print lines matching a pattern

Linux is good, but it's not all-knowing, so if you type: whatis orange juice You will get
this message:

orange: nothing appropriate.


juice: nothing appropriate.

basically telling you that Linux has no idea what orange juice is
'whereis'

whereis is a nice command for finding other commands or programs. If you decide to
download any program from the internet, that program may need other programs in order
to work. If you want to know whether or not you have it, you can type: whereis
[program name] and find out.

If you wanted to find out if you have the 'pico' editor and where it is, you would type:

whereis pico

and you may get this:

pico: /usr/bin/pico /usr/man/man1/pico.1.gz

It shows you where the command is as well as the location of its manual file.

whereis isn't designed to find people, so if you type

whereis Harry

Linux is just going to say Harry:

'which'
To show you another tool for locating programs 'which' is similar to 'whereis'. It will give
you the location of a program. At times, a program may not find another program it needs
to make it run. It will need to know its location or "path". For example, a program may
need Java to run it but thinks its in another place. You would simply type:
which java

and Linux will inform you of its location

/usr/lib/java/bin/java

This is a handy command because some locations of programs vary from one version of
Linux to the next. A software developer may have designed his/her program to access
Java, for example, from a different location. As Open Source software will always let you
modify configuration files to get your program working according to your needs, you can
get the program to work for your system.

'echo'
To show you some uses of the 'echo' command 'echo' is a little command that repeats
anything you type. For example if you type echo hello Linux will display the word 'hello'
.
There is really no need to do that under normal conditions. You may find 'echo' useful in
the future if you start writing "shell scripts" which are like little programs that you could
use to do a few commands at one time. You could use 'echo' in those scripts to tell you
what the script is doing at any given time, or to prompt you to do something, like enter
text. Shell scripts will be taken up in a later course.

There is a practical use for 'echo' in everyday life. I sometimes use it to write short notes.
If we use 'echo' along with 'pipe' (|) and 'tee', you've got a poor-man's post-it-note. For
example:

echo remember to tell Bill Gates he owes me 5 bucks | tee -a bill_gates.note

Will make you a nice reminder note about dear 'ole Bill. Just remember to read your note.
You could type:

echo remember to open Gates note | tee -a remember_gates.note

to make yourself a reminder for the other reminder note. Use less bill_gates.note or less
remember_gates.note to read your notes

'wc'
People following this course from Europe may recognize this as the symbol for
'bathroom'. Unfortunately, if you type this in your terminal it will not show you the way
to the 'facilities'.

Actually, this command will give you the number of lines, words and letters (characters)
in a file and in that order.

Let's go back to the file about the people I owe money. If I type:

wc people_I_owe_money.note

I will get this output:

439 6510 197120 wc people_I_owe.note

As you can see, there are 439 lines, so that means if each line represents one person, then
I owe 439 people money. There are 6510 words and a total of 197120 characters.

I might add that this is a good tool for people who write letters professionally and get
paid by the word.

Getting Started with Linux - Lesson 11


Miscellaneous commands
These might come in handy from time to time

'dir'

The people who traveled down the MS-DOS road will know this one. Actually, dir=ls -l.
It will give you the same result. If you do any downloading or uploading of files via FTP
by way of a non-GUI FTP program in your terminal, you may find this command useful.
I once ran into a case where the remote computer didn't recognize the ls -l command. I
just typed in dir and that did the trick. Then I fired off a nasty e-mail asking why in the
world they weren't using Linux!

'pwd'

The command pwd will show complete information on the directory you're working in.
For example, if you type pwd you may get something like this:

/home/bob/homework

which shows you that you're in the directory 'homework' in your user directory as 'bob',
so you know exactly where you are.

'date'

Did you forget your wedding aniversary? Your boyfriend or girlfriend's birthday? Tax
day? (everyone wants to forget that one!) No need for that to happen anymore with
Linux. Just type:

date

You'll get this: (or something like it, actually. If you get the same thing as I do, then I'd
consider buying lottery tickets)

Thu Sep 7 20:34:13 CEST 2000

You probably get everything here. If you're living in central Europe, you will recogize
the 'CEST' part. That stands for 'Central European Standard Time'. Linux recognizes
world time zones and you set this up when you installed Linux. If you live on Mars,
you're out of luck, unfortunately.

There are other uses of the 'date' command. To see just the date, type:

date +%D

To see just the time, type:

date +%T
To see on what day Christmas falls this year (really, I'm not kidding!), type:

date --date 'Dec 25'

and you'll get the day that Christmas falls on this year. Substitute that for any date that
you'd like to see.

There are many other options. Consult your manual file ('man date') or ('info date')

'cal'

Typing cal will give you the calendar of the present month on your screen, in the nice
standard calendar format. There are a lot of useful options.

If you type:

cal 2000

You'll get the entire calendar for the year 2000. Substitute any year you like.

If you type:

cal 12 2000

You'll see the calender for December of 2000. Substitute any year or month you like.

If you add the option cal -m, the week will start on Monday, as it is preferred in many
countries.

Just for fun, I typed cal 10 1492 and I found out that Columbus discovered America on a
Friday. That was good luck for him because that way he got to relax for the weekend.

'exit'

As you can guess, you can get out of a terminal with the exit command. If you're working
in text mode, typing exit will prompt you to login again. If you want to work as another
user, use logout instead.

If you're in x-windows, exit will close the X-Terminal you're working with

exit with the option "stage right" will get you an error message.

Getting Started with Linux - Lesson 12


Becoming a super user
The following commands are frequently used by systems administrators to keep an eye
on what's going on with their systems

'last'

The command last will show you the people who have logged into the computer today
and the terminals they are/were using.

If you type:

last

You may get something like this:

fred tty6 Thu Oct 5 16:55 - 20:05 (3:10)


bob tty1 Thu Oct 5 still logged in (3:10)
root tty1 Thu Oct 5 16:23 - 16:43 (0:20)
reboot system boot Thu Oct 5 16:22

As you can see, you worked as 'fred' for 3 hours and 10 mins. You are still working as
'bob'. You worked as 'root' for 20 minutes (probably some administration tasks) and you
booted your computer at 4:22 PM.

This is a good way to see who's been using the computer if it's networked. For example,
if you saw a an entry for 'satan' and you hadn't given the Prince of Darkness permission
to login, you could fire off a nasty e-mail to him about mis-use of your server. His
address, by the way, is "thedevil@hell.com"

'df'

'df' is a command that you're going to use a lot if you're pressed for hard disk space. Once
again, there are many programs that run graphically that will inform you of the space
available on your Linux partition. But this is a very good, quick, non-graphic way to keep
track of your hard disk space.

If you type df

You may get something like this. (This is actually taken from a system I use for testing versions of
Linux. You'll see it's somewhat pressed for space.)

Filesystem 1024-blocks Used Available Capacity Mounted on


/dev/hda2 481083 408062 48174 89% /

if you start seeing a 'df' output like this, it's time to get down to your local computer shop
and buy a new hard disk. Anyway, 'df' is a good way to keep track of this.
'free'

'free' is a command that you can use if you want to know how much RAM memory you
have free on your system. By typing:

free

and you will get something like this

total used free shared buffers cached


Mem: 14452 13904 548 28208 492 7312
-/+ buffers/cache: 6100 8352
Swap: 33260 1556 31704

Sometimes, if a program is running particulary slowly, you may find out that your
memory usage is high using this command. Linux's memory management is quite good
but a certain program may be "hogging" memory. You could exit that program and then
type free again to see if it was the culprit.

'du'

'du' is the way to see how big files are. You can use it on a directory or on a particular
file. This is another command I use a lot. It's probably best to use the option du -b (-b for
bytes) and it will give you the exact figure in bytes. By default, 'du' shows the closest
kilobyte figure. Let's look at a couple of examples:

If I type:

du people_I_owe_money.note

I may get an output like this:

194 people_I_owe_money.note

But instead, if I type:

du -b people_I_owe_money.note

I'll get:

197120 people_I_owe_money.note

As you can see, it's a big file. I owe a lot of people money. On the other hand look at the
output for 'people_who_owe_me_money.note':

1 people_who_owe_me_money.note
No, that's not the kilobyte figure. That's the byte figure!

You can also use this on a directory, and it will list the files and subdirectories and give
you the byte or kilobyte count, whichever you prefer

top

To show you the use of the 'top' command. Here you will see what processes are running
'top' is a good command to use when you want to see what your system's doing. 'top' is
designed to show you how your CPU is being used. It will give you a pretty complete list
of everything that's going on in your computer. Here's a sample output of the 'top'
command:

9:09am up 4 min 2 users load average: 0.12 0.13 0.06


34 processes: 31 sleeping 3 running 0 zombie 0 stopped
CPU states: 11.1% user 0.7% system 0.0% nice 88.4% idle
Mem: 62972K av 50420K used 12552K free 22672K shrd 5312K buff
Swap: 1020116K av 3152K used 1016964K free 27536K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
332 root 12 0 4492 4184 1480 R 0 8.3 6.6 0:09 X
350 bob 4 0 13144 11M 7728 S 0 2.7 19.3 0:04 netscape
386 bob 1 0 768 768 596 R 0 0.5 1.2 0:00 top
345 bob 0 0 972 972 704 S 0 0.1 1.5 0:00 FvwmButtons
1 root 0 0 168 168 144 S 0 0.0 0.2 0:02 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiod
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kswapd
5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread
48 root 0 0 136 120 96 S 0 0.0 0.1 0:00 update
137 bin 0 0 300 296 228 S 0 0.0 0.4 0:00 portmap
141 root 0 0 292 264 212 S 0 0.0 0.4 0:00 rpc.ugidd
157 root 0 0 512 508 412 S 0 0.0 0.8 0:00 syslogd
161 root 0 0 692 688 296 S 0 0.0 1.0 0:00 klogd
212 at 0 0 304 276 220 S 0 0.0 0.4 0:00 atd
225 root 0 0 424 416 348 S 0 0.0 0.6 0:00 inetd
258 root 0 0 580 548 428 S 0 0.0 0.8 0:00 lpd

Getting Started with Linux - Lesson 13


Commands to control your system
ps

'ps' will give you a list of the processes running on your system.

Just typing ps will give you the processes you're running as a user. It may look like this:
PID TTY STAT TIME COMMAND
293 2 S 0:00 -bash
1436 2 S 0:00 sh /usr/X11R6/bin/startx
1437 2 S 0:00 tee /home/bob/.X.err
1445 2 S 0:00 xinit /home/bob/.xinitrc--
1449 2 S 0:01 /usr/X11R6/bin/fvwm2
1459 2 S 0:00 /usr/X11R6/lib/X11/fvwm2/FvwmButtons7 4 .fvwm2rc 0 8
1461 2 S 0:00 xclock -digital -FONT10x20 -geometry +520+550
1462 2 S 0:00 /usr/X11R6/lib/X11/fvwm2/FvwmPager9 4 .fvwm2rc 0 8 0 0 &
1464 2 S 1:27 /opt/netscape/netscape
1472 2 S 0:00 (dns helper)
1730 2 S 0:00 xterm -FONT 8x13 -backgroundWheat -T xterm-1
1731 p1 S 0:00 bash
1760 2 S 0:01 emacs
1781 p1 R 0:00 ps

If you happen to forget what your name is, you can type ps -u. This is the user mode and
your user name will appear in the first column. Actually, there's more than that. There
will be other columns about memory usage, the time you started running the processes
and others.

You can see other users processes if you type ps -au. If you're not using a networked
computer, you will see yours and root's processes. If you're into detective work, you can
type just ps -a and try to guess who's using the process.

The information that you'll probably be most interested in is the column that shows the
"process ID" or "PID". We'll get into why these are so important in the next part of the
lesson.

'kill'
"kill" is a very explicit word. It implies 'death'. In the last part of this lesson we talked
about process IDs or "PIDs". Well, with the command 'kill' plus a PID, you can terminate
a program. In other words, you kill the program. You will probably only use this with
troublesome processes; programs that may not let you exit regularly. A good example of
this is when you try a new program that hasn't got all the bugs worked out of it yet. If the
'exit' button doesn't work, you can 'kill' it.

To do this, first, you would type ps and you would get this output that we talked about
before.

PID TTY STAT TIME COMMAND


293 2 S 0:00 -bash
422 2 S 0:00 sh /usr/X11R6/bin/startx
437 2 S 0:00 tee /home/bob/.X.err
438 2 S 0:00 xinit /home/bob/.xinitrc --
441 2 S 0:01 /usr/X11R6/bin/evilaliens

Let's say you're trying a new game that was just ported to Linux. The game is called "Evil
and Nasty Alien Visitors". The name of the "binary" or program itself is called evilaliens.
(the last one on my 'ps' example) It's a beta (i.e - check it out and tell the author what
bugs are still in it) version and the game starts giving you problems. Now you can't exit
the program either. The aliens just took over Oklahoma and you swore you got them all.
You're playing in your x-windows enviroment and you have an x-terminal open
(probably the one you typed 'ps' into). You would just type:

kill and the PID number, in my example, 441. That is: kill 441

and the program disappears, along with all those nasty aliens.

Here's a little trick. If you don't want to do two steps, 'ps' and 'kill' and you know the
name of the "binary" or program itself, as I mentioned before, you can just type:

killall evilaliens

and that should also do the trick.

Using 'kill' as root

Remember that when you work as root, you are the all-powerful master of the universe.
(or at least the computer). When you use 'kill' as root, you are the 007 on Her Majesty's
Linux Service. You have license to 'kill' the process you desire. If you're working as 'root'
and you need to use the 'kill' command, it's a good idea to run ps -au and look closely at
your PIDs. You don't want to end up killing some process that you need.

Another way to kill a process.

Try typing this: find *. (Kind of an absurd thing to do, but good as an example) It will
just start finding everything. If you have done something like this by mistake, you can
use the keys CTR+ C to stop the 'find' process. In these cases, there's no need to use the
'kill' command.

File systems in Linux


This is a beginner's course and one of the concepts that newcomers to Linux find
different is the idea of a file system in Linux. That is to say, the way data is stored and
managed in Linux.

MS-Windows and Mac users are used to clicking on an icons and dragging the files they
want copied to a floppy or another part of the hard drive. Linux users that use KDE or
GNOME can also copy files in that way to different parts of the hard drive. However, if
you would like to use floppies, we should talk here a bit about the type of file system
Linux uses.

MS-Windows, from Windows 95 on up uses a file system called 'vfat' Linux uses a
different system called 'ext2'. There are also other types of file systems out there. You
may have chosen to have both Windows and Linux installed in your computer. At one
point, you might have to access files in the Windows partition of your hard drive. You
would use a command called 'mount' to do that. You would also have to indicate as an
option in that command that the file system you want to access or "mount" is a Windows
'vfat' file system.

On the same idea, though floppies are becoming somewhat obsolete, you may want to
store some files on a floppy or access data on a floppy that someone has given to you.
You would also have to use the command 'mount' before you copied data to or got data
from a floppy disk. If that person is a Windows user, then you would have to indicate
once again that the file system is 'vfat'. If you want to copy data from your Linux
partition to a floppy, you would have to format and then "mount" the floppy as a Linux
'ext2' file system.

Formatting a floppy for Linux

Most floppies sold on the market are pre-formatted for MS-Windows. You can copy data
from Linux to a Windows formatted floppy with no problem. If you want to copy Linux
files to a floppy to be used in another Linux machine or to be used by you later in Linux,
then it might be better to format the floppy for Linux's ext2 file system.

We should also say now that this is considered an administration task. You have to be
working as 'root' to be doing this. As you get more familiar with Linux, you can use
commands such as 'su' to do the work of root on certain occasions when you're not
actually working as root. We'll explain this command in later lessons.

To create a linux floppy "by hand", you would place a floppy in the drive and type:

mke2fs /dev/fd0

The command is an abbreviated way of saying "make an ext2 file system". The other part
is the device, your floppy drive, which is known to Linux as "fd0" (floppy drive 0). As
we mentioned in the first part of the course, everything is a file in Linux, including your
floppy drive.

You will hear the customary noise of the floppy drive (some are louder than others -
some older ones that I've heard sound like a chain saw) and you will get some output like
this:

Linux ext2 filesystem format


and some other information about the size of the floppy etc.

You now have a Linux formatted floppy. You may want to run this command to check if
the floppy has defects

e2fsck /dev/fd0

Some windows managers have a nice program to do both the formatting and the checking
of the disk at the same time.

Mounting file systems


In this part of the lesson about file systems we'll learn how to use the commands mount
and umount

We've mentioned previously that there's a different idea in Linux as to what constitutes a
floppy disk drive, a CD-ROM drive and another partition of your hard disk (the Windows
partition, for example). Though some windows managers for Linux have provisions for
clicking on an icon to access a floppy drive, for example, the method behind this is quite
different from other OSes. In Linux the floppy drive or other device must be "mounted".
That means basically, incorporating it temporarily into your Linux file system or, in other
words, telling Linux that it is a file to be written to or copied from.

To access a floppy disk from the command line of our shell, we would use the command
mount and type the following: (remember: you need to be working as 'root' to do this)

mount -t ext2 /dev/fd0 /floppy

Now this assumes a couple of things:

• you have a floppy disk in the drive (you'd be surprised how many times I forget to
actually put the floppy in the drive)
• in this example, the floppy type (indicated by the option -t) is a Linux formatted
floppy. If you want to mount a Windows floppy, change the option to -t vfat
• in your root directory (you can get to it by typing: cd /), you have a directory
called floppy. If you don't, you should create it (mkdir floppy). Some Linux
distributions create this automatically during the installation process. Some don't.

Let's explain what we've just done here. When we typed: mount -t ext2 /dev/fd0 /floppy
we told Linux that our floppy disk is now part of our Linux file system (/dev/fd0) and
that any files we would like to store on that disk will be copied to /floppy, as if it were
just another directory on our Linux system. If you did it right, typing the command 'df'
(the command to see how much free disk space) should include something like this:

/dev/fd0 1390 649 669 49% /floppy


Your numbers may vary (especially if your floppy is blank!)

Now, to copy to and from the floppy disk, you would type:

cp my_file /floppy

If you wanted to create individual subdirectories on the floppy, you would first change to
the /floppy directory:

cd /floppy

Then you would use the mkdir command to create the directories you want. You can also
use the command cp -r my_directory/ /floppy to copy the directory automatically to the
floppy. (make sure you have space! - I have on occasion tried to copy a 3MB file to a
1MB floppy!)

Mounting other devices

You can also use the mount command to copy to and from other devices.

If you would like to get some files from a CD-ROM, the standard command to do this is:

mount -t iso9660 /dev/hdb /cdrom

The type, iso9660 is the standard file system for a CD. The device (/dev/hdb) is the non-
SCSI type of CD-ROM and the mount point (/cdrom) should exist. If it doesn't, you
should create it in the root directory with 'mkdir', just as you may have done with the
/floppy directory.

Remember that the concept of CD-ROM is read only. You won't be able to write to this
type of CD-ROM drive. A message will tell you that when you mount this type of device.

Mounting another partition of the hard disk.

Many people may have preferred to install Linux along with another operating system.
You may have Linux and Windows installed in the same computer. If you would like to
access files on the Windows partition you would type the following command:

mount -t vfat /dev/hda1 /mnt

Windows is always in the primary partition, so that's why we've used the device /hda1
(hard disk partition 1). The choice for /mnt is the standard mount point in this case. You
may use the /mnt directory to mount the other devices (floppies, CDs) as well. I use the
different empty directories (/floppy /cdrom /mnt) to avoid confusion.
If you change to the mount directory (cd /mnt) and then type: ls and you'll see something
interesting. The directories are blue but the files are green (or red - depending on your
distribution of Linux). You won't have the various color combinations as you do in
Linux. That's because Windows' file system doesn't distinguish file types. Everything
looks like it's a program (binary) instead of a regular file.

When you copy files from the Windows partition to the Linux partition you should bear
this in mind. For example, if you wanted to copy an mp3 file from the Windows partition
to the Linux partition to test out your sound configuration, it would show up as a
executable program and not just a standard file under Linux. This doesn't effect your
playing it, but for a more accurate accounting of what you have on your system, you may
want to change the permissions of the file so that it shows up as a regular file in your
color scheme. We'll talk about file permissions and and making changes to them shortly.

Umount command - unmounting file system


Mounting file systems that aren't part of the standard Linux system is considered a
temporary condition in Linux. Now that we know how to mount these outside file
systems in Linux, the important thing now is to learn how to unmount it when we're
finished using it.

In the early days of Linux, you could do serious damage to your system if you didn't
unmount manually after you were finished. Nowadays if you have mounted a system and
you shut down the computer without unmounting, the chances are pretty slim that you're
going to trash a file system. Slim, however, isn't good enough for me. I'd rather not take a
chance. I always take the time to unmount these external file systems when I'm finished
with them.

The command for this is:

umount [/mount point]

In the examples I used in this lesson, the mount points were:

• floppy: /floppy - therefore umount /floppy


• CD: /cdrom - umount /cdrom
• Windows partition - umount /mnt

Remember also to NOT be accessing the floppy etc. when you use umount or it will give
you a drive busy message. If you get this, you may have left a terminal open where you
were using to copy or write to the particular drive. Check your terminals if you get this
error.

I just wanted to point out another thing too. You are 'unmounting' but the command is
umount (that is, without the N of un) Being u(n)familiar with the mount concept when I
started with Linux, I typed unmount instead of umount and much to my surprise, I got
the message: command not found. U(n)deniably, I had done something wrong. It took
me a while to figure out that the command didn't include an N. I haven't really done a
survey on how many people have actually done this. For all I know, I may be the only
person who has, but I just thought it best to warn you.

Well, now you can use the standard devices that most PC users need. Later in our
advanced class we'll talk about installing and using other devices like scanners, CD
writers, Zip drives and matter/anti-matter flow inducers. (well, maybe we'll save that last
one for the super-advanced classes!)

Getting Started with Linux - Lesson 14


File permissions in Linux
Linux has inherited from UNIX the concept of ownerships and permissions for files. This
is basically because it was conceived as a networked system where different people
would be using a variety of programs, files, etc. Obviously, there's a need to keep things
organized and secure. We don't want an ordinary user using a program that could
potentially trash the whole system. There are security and privacy issues here as well.
Let's face it, we don't want Bill to read Bob's love letters to the Janet who works in R &
D. (because Janet is Bill's fiancée) In the end, it's important to know what belongs to me,
to you and to everybody.

As we mentioned at the beginning of this course, the big advantage that Linux has is its
multi-user concept- the fact that many different people can use the same computer or that
one person can use the same computer to do different jobs. That's where the system of
file permissions comes in to help out in what could be a very confusing situation. We're
going to explain some basic concepts about who owns the file and who can do what with
a file. We won't get into an enormous amount of detail here. We'll save that for the Linux
system administration course. We will show you how to understand file permission
symbols and how to modify certain files so that they're more secure.

File permission symbols


If you run the command ls -l in your home directory, you will get a list of files that may
include something like this
-rw-r--r-- 1 bob users 1892 Jul 10 18:30 linux_course_notes.txt

This basically says, interpreting this from RIGHT to LEFT that the file,
linux_course_notes.txt was created at 6:30 PM on July 10 and is 1892 bytes large. It
belongs to the group users (i.e, the people who use this computer). It belongs to bob in
particular and it is one (1) file. Then come the file permission symbols.

Let's look at what these symbols mean:

• The dashes - separate the permissions into three types


• The first part refers to the owner's (bob's) permissions.
• The dash - before the rw means that this is a normal file that contains any type of
data. A directory, for example, would have a d instead of a dash.
• The rw that follows means that bob can read and write to (modify) his own file.
That's pretty logical. If you own it, you can do what you want with it.
• The second part of the these symbols after the second dash, are the permissions
for the group. Linux can establish different types of groups for file access. In a
one home computer environment anyone who uses the computer can read this file
but cannot write to (modify) it. This is a completely normal situation. You, as a
user, may want to take away the rights of others to read your file. We'll cover how
to do that later.
• After the two dashes (two here because there is no write permissions for the
group) come the overall user permissions. Anyone who might have access to the
computer from inside or outside (in the case of a network) can read this file. Once
again, we can take away the possibility of people reading this file if we so choose.

Let's take a look at some other examples. An interesting place to look at different kinds of
file permissions is the /bin directory. Here we have the commands that anybody can use
on the Linux system. Let's look at the command for gzip, a file compression utility for
Linux.

-rwxr-xr-x 1 root root 53468 May 1 1999 gzip

As we see here, there are some differences.

• The program name, date, bytes are all standard. Even though this is obviously
different information, the idea is the same as before.
• The changes are in the owner and group. Root owns the file and it is in the group
"root". Root is actually the only member of that group.
• The file is an executable (program) so that's why the letter x is among the
symbols.
• This file can be executed by everybody: the owner (root), the group (root) and all
others that have access to the computer
• As we mentioned, the file is a program, so there is no need for anybody other than
root to "write" to the file, so there is no w permissions for it for anybody but root.

If we look at a file in /sbin which are files that only root can use or execute, the
permissions would look like this:

-rwxr--r-- 1 root root 1065 Jan 14 1999 cron

'cron' is a program on Linux systems that allows programs to be run automatically at


certain times and under certain conditions. As we can see here, only root, the owner of
the file, is allowed to use this program. There are no x permissions for the rest of the
users.
We hope you enjoyed this little walk-through of file permissions in Linux. Now that we
know what we're looking for, we can talk about changing certain permissions.

'chmod' explained
chmod is the program that is used to change file permissions on a Linux system. As we
mentioned, others cannot modify your personal user files but you may not want other
people to even read these files. You can use this command to take away the possibility of
others prying into your private stuff.

The syntax (parts separated by brackets) for using this command is the following:

chmod [a/o/g/u] [+ or -] (plus or minus sign) [r/w/x]

Let's analyze the syntax:

• The symbols in the first brackets refer to the four concepts of users that Linux has.
o a=all, all users
o o=others, (other people)
o g=group, the members of your group
o u=user, (this means you)
• The symbol + adds permissions and the symbol - takes them away. As we say in
the Linux world chmod giveth, chmod taketh away
• Your actual rights to files - r=read rights, w=write rights (pardon the
homophonic redundancy!) and x=executable rights

Practical examples of chmod

As we mentioned before, you may want to restrict rights to read a file. You would simply
type:

chmod og-r my_world_domination_plan.txt

Now nobody can read your plans to take over the world except you. Best to keep those
secret anyway.

We also talked earlier about those files that you may have copied from a Windows
partition or a floppy formatted for Windows. Even if they're not executable files, they'll
show up as such (-rwxr-xr-x). You can change them to their correct permissions, getting
rid of the executable status with:

chmod a-x the_file

Remember that if you copied them as 'root', you will have to use chmod as root to do this.
You could even go one step further and change the ownership of the file to the user you
desire. You may want to change root ownership to yourself (your user name). We'll go
into this in the next part of the lesson.

Using chmod with number values

The permissions in Linux also can also be changed with number values. An accomplished
Linux/Unix user will probably use this system more. When you're beginning with Linux,
the method we described before will probably be clearer to you. Without going into
tedious technical detail, we'll describe the chmod number system to you and look at two
of the most common examples.

As I said before, we have three sections to permissions; those of the owner of the file
followed by those of the group and then the permissions of others. So if you use numbers
with 'chmod', there will be three numbers following the command. One number
corresponds to each group. Here's an example of a chmod command with numbers:

chmod 644 grocery_list.txt

If you had used 'pico' to write up a grocery list for your trip to the supermarket today,
Linux would have given you 644 permission by default. That means, read and write
permissions for the owner but no write permissions for the group and for others. So the
number 6 means read and write permissions for you, the number 4 means read
permissions for the group and the last number, 4 means read permissions for others. Now
the question is: Why these numbers? Why not other numbers, like the number 8 or 12 or
even 1345? Let's explain this.

The three types of permissions correspond to three numbers. Read permission is given a
value of 4. Think of it as the most important permission. (if you can't read a file, then
what else can you do with it?) Write permission is given a value of 2. Execute permission
is given a value of 1. Here's what it would look like:

User (or the owner) Group Others


read-write-execute read-write-execute read-write-execute
4-2-1 4-2-1 4-2-1

It's really just a question of simple arithmetic. In our example of chmod 644
grocery_list.txt, we've added the 4 for read permission and to the 2 for write permission
for the owner to get 6. We've just given the group and others read permission, so there's
nothing to add in these two groups. Just give it a 4 in each case. Presto! 644.

Some practical examples with numbers

Let's take another look at my file that has my plans for dominating the world
(my_world_domination_plan.txt). I had taken away the read permissions for everybody
except myself using +/- letter method. (chmod og-r my_world_domination_plan.txt)
Now let's do the same with the numbers.

chmod 600 my_world_domination_plan.txt

As you can see I have read and write permissions for me (4 read + 2 write equals 6) and 0
permissions for everybody else. The Zero value means 7 (maximum permission value)
minus 4 minus 2 minus 1 equals 0.

Real world examples with 'chmod'

I'd like to talk about a real world practical example for doing this. There is a command
mode program called 'fetchmail' for getting your e-mail. It's a very good program if
you're using your computer as different users for various jobs. It will send mail to the
different users based on e-mail addresses. The different addresses are stored in a file that
you create called '.fetchmailrc' This file also includes the user name and password for
retrieving mail from each address. We've got a possible security hole here, particularly if
you're networked. This file shouldn't be read by everybody. When you create your
.fetchmailrc file, you must then use chmod 600/chmod og-r on the file to solve the
security issue. In fact, 'fetchmail' won't run if you don't. It will complain about the file's
permissions.

Let's look at another "real world" example. As the internet becomes more popular,
websites need to be more user friendly and interactive. It's becoming more and more
common to use scripts to improve the quality of a website's offerings. If you used a
language like perl to write the scripts and you hosted your website with a company that
runs Linux on their servers (we would hope that you would do this!), you would probably
be given permission to use these scripts on your website. You would then have to give
the scripts read and execute permissions so that the your visitors could use them. After
you uploaded a script to your website, you would then issue this command:

chmod 755 my_awesome_script

and the script would become "executable" (and readable) for the outside world. (7 - 4
read, 2 write 1 executable for you, 4 read and 1 executable for group and others). You
could also use chmod og+rx my_awesome_script The script is then "converted" into a
"program" so to speak. You have also converted yourself into a "web developer" with the
right to hang your shingle on the door.

chmod is one of those commands that are used most by system administrators. In our
Linux system administration course, we'll go into this command in more detail. In this
lesson we've shown you just a few practical examples to get your feet wet with this very
important command.

Using 'chown'
The command chown is the chmod's cousin. It is used for changing the ownership rights
of a file (hence the name 'chown' - change owner). It does not change the read, write and
execution permissions however.

This command, though available to every user, is probably going to be used when you're
working as root. The command is uses like this:

chown owner:group the_file

Let's say you want to copy something from your Windows partition (if you have one).
You mount the partition (as root) and to save time, you copy the file to your user
directory /home/bob/. If you type ls -l the_file you'll get something like this:

-rw-r--r-- 1 root root 2428 Nov 17 13:18 the_file

As we now know from the previous lesson, root is the owner of the file. Therefore, root is
the only one who has write permissions for the file (permission to modify its content). If
you plan on working with the file as "bob", there isn't a snowball's chance in hell to
modify that file until, as root, you run chown on the file. So let's do it!

chown bob:bob the_file

This example presupposes that your Linux version creates groups for each user. There are
others that will create a generic group called users for everybody who uses the computer.
On a network, groups are created according to the needs of the organization. On your
single home computer, just type ls -l and see what system corresponds to you.

As you can see, 'chown' is absolutely necessary if you're working as more than one user
with the computer.

Getting Started with Linux - Lesson 15


Backing up your files
Let's face it, computers aren't perfect. Linux is an "almost perfect" operating system, but
things do happen and data is sometimes lost. The best way to avoid problems is to backup
your files. Linux provides two key programs to do this: 'tar' and 'gzip'

First we'll start with 'tar'. This program assembles various files into one package,
commonly called a "tarball". Let's say you have some files - notes that you've taken
during this course. You have:

• notes_1.txt
• notes_2.txt
• notes_3.txt
• notes_4.txt
• notes_5.txt

and you've placed them in a directory called /linux_course. You want to back them up
and keep them on a floppy, let's say. You would type the following command to package
them in a tarball.

tar -cvf linux_notes.tar notes*.txt

First, you have tar, the name of the program. Then you have the options, c (--create) v
(--verbose-show what files they are) (f--file -make a file - should always be the last
option) Then you have the name of the file you want to create ( linux_notes.tar) and the
files you want to backup (notes*.txt).

This presupposes that you may have other files in the directory that you don't want to
include. If you want to include ALL files in a directory, just substitute notes*.txt for *.*.

If you've got good data storage capabilities (Jaz or Zip drives, a CD writer or a tape
backup drive), you might want to back up whole directories along with their
corresponding subdirectories. Then you would enter in the directory, let's say /home/bob/
and issue the command:

tar -cvf bob_backup.tar *

With one asterisk, you will include directories and files without extensions (my_file as
opposed to my_file.txt). Be prepared to get a fairly voluminous tarball.

This is the first step in the backup process. Now let's look at the second step; the
compression of these files.

Using 'gzip'

As we mentioned, 'tar' just assembles the files together into only one file. There is no
reduction in the size of these files (the tarball might even be bigger!) Now we would have
to do one more thing in order to reduce this file into a more manageable size: use 'gzip'.

gzip is the preferred compression tool for Linux. To reduce the size of your tar file, you
would issue the following command:

gzip your_tar_file.tar

and the tar file would be compressed. You can also compress a regular file using the
same command, but gzip is used primarily with tarballs.

The result would be a file like this: your_tar_file.tar.gz


The two file extensions show us that the file is a tarball and it is compressed with the
'gzip' format. You can now proceed to store this as you see fit.

Putting it all together


'tar' has an option built into it to use 'gzip' to zip the file at the same time you make the
tarball. If you add z to the options, and change the name of the file to create to a .gz
extension, you have the whole shebang in one step. Our previous example would be
modified to this:
tar -czvf bob_backup.tar.gz *

Remember f should always be the last option.

Untarring and unzipping files


Using 'tar' and 'gzip' sort of supposes that you're going to want to "untar" and "unzip"
these files at one point or another.

The easiest way for doing this is to use 'tar' for the whole process. You would locate the
zipped tarball in question and then ask yourself a question:

Did I make any changes to the files inside the tarball after I made it? If you did, then
you've got an old tarball. If you untarred it in the same directory, you'd overwrite the
existing ones. If you would like a copy of the old file, untar it in a different directory. If
you don't want the old files, then you should make a new tarball. It's pretty standard
backup practice.

When you've decided what you want to do, to proceed with the "untarring", issue this
command:

tar -zxvpf my_tar_file.tar.gz

I've used my preferred options. I'll explain them:

• -z - unzip the file first


• -x - extract the files from the tarball
• -v - "verbose" (i.e tar tells you what files it's extracting)
• -p - preserves dates, permissions of the original files
• -f - use the file in question (if you don't specify this, tar just sort of sits around
doing nothing)

The files are extracted and your original tarball is preserved (my_tar_file.tar.gz).

You can also untar the file and then use gzip separately. Just leave the z option out of the
previous example and type:
gzip -d my_tar_file.tar.gz or
gunzip my_tar_file.tar.gz
(gunzip runs gzip -d "automagically"!)

These commands are good if you've just zipped a regular file (not a tarball).

Other compression tools

zip

Most Linux distributions come with other tools to compress files. One of these is zip,
famous in the MS-DOS/Windows world. If you're planning on compressing files to give
to someone who (still) uses the Windows operating system, this might be your best bet.
You can also use unzip if someone gives you a file compressed with 'zip'. Consult the
man file ( man zip) for specific instructions on using this tool.

bzip2

There is also another tool that is rapidly gaining acceptance in the Linux world: bzip2. As
a matter of fact, the Linux kernel source package, usually comes "bzipped". When you
compile a kernel (create a custom kernel for yourself from source) there is an option to
create a bzipped kernel. This is supposed to become the official way of doing it in the
near future, so it may be a good idea to get to know 'bzip2'

For all practical purposes you would use this tool in the same way as you would 'gzip'.
The compression factor is supposed to be a little better. There are some differences in
options for more advanced users. Consult man bzip2 for more information.

Getting Started with Linux - Lesson 16


Installing New Programs
The way you install a new program will depend primarily on two things:

1. What distribution (version) of Linux are you using?


2. What is the origin of the program that you want to install?

Let's look at the first question: What distribution are you using?

RPM

If you're using Red Hat or a distribution that bases itself on Red Hat, then you're going to
use the RPM method. OK racing fans- RPM doesn't have anything to do with revolutions
per minute. It stands for Red Hat Package Manager. This system takes the heartache out
of installing programs under Linux, for the most part. You can go to the Red Hat website
or any number of mirrors and get programs for Linux. Developers will almost always
offer their programs in RPM format due to its popularity. I also want to note that RPM
has also come to mean the package itself (as in "I downloaded an RPM yesterday").

There are some basic commands you're going to need to know to take advantage of the
RPM system.

rpm -i new_program.rpm
This installs the program (-i option for install)

rpm -q program_name
This "queries" your system to see if you've got a certain program installed. Let's say you
hear there's a new version of the popular Internet browser Opera for Linux and you don't
know if your Red Hat based distribution installs this by default or not. Before you
download the RPM for Opera, you could type the command: rpm -q opera. If you do
have the package installed, it would give you the version number:

opera-5.0_whatever-number

If you don't have the package installed, you will see:

package opera is not installed

If you don't have Opera installed, then you can download their RPM and run rpm -i
opera_whatever_version.rpm as root and install the program.

If you do have the program installed and the rpm -q opera command gives you a older
version number and you want the newerone, then you have two options.

One is to "uninstall" the older package and install a new one in its place. Not that this is
the most efficient option. I just wanted to introduce you to the -e option for RPM. That is,
to get rid of a program that you've installed, you would type rpm -e program_name. For
example, if you've got Opera's beta version 7 and you've just downloaded the beta
version 8, then you would first do:

rpm -e opera. This gets rid of Opera from your system. Then you would type rpm -i
opera_beta8.rpm (or whatever the package is actually called). That installs the new
version.

As I said, this is not the most efficient way to update packages. The usual way is to use
the -U (as in Update command. You would type:

rpm -U opera_new_version.rpm

and that would install the new version and remove the old version from your system.

Those are the basic commands of the RPM install/update system in a nutshell.
When you're using your windows manager, there are some very good tools for installing,
updating and uninstalling RPMs that are graphically based. You can choose menu options
to do all that we explained before instead of having to type the commands in the terminal.
You may want to look into programs like Kpackage for KDE or Gnome RPM for the
GNOME enviroment. They may make these tasks a lot easier, especially if you're just
starting out in the Linux world.

Some words of caution on downloading RPMs

Some of the most popular Linux distributions base their install and update prodedures on
Red Hat's package management system. These include Mandrake and SuSE for example.
Both of these companies create their own RPMs to be specifically installed on their
systems. That means if you're using SuSE or Mandrake your best bet is to go to their
respective "official" websites or mirrors and download their particular RPM and install it
using the procedure outlined above or their specific tools. You may run into a problem if
you installed an RPM for Red Hat on a SuSE system. Certain components in the package
(like documentation or libraries) may get copied into a different directory than was
intended for that system. Third party RPMs from reputable companies, like the Opera
web browser in mentioned above, should install fine on any RPM based system. I have
successfully installed this package (the same exact RPM file) on SuSE, Mandrake and
Red Hat. I even converted this RPM to Debian (.deb) package format and successfully
installed it in a computer running Debian. More on this conversion later in the show!

Just a brief second word of caution. Getting and RPM doesn't necessarily mean that
you're automatically (or "auto-magically") going to be able to install it. Many websites
out there offer RPMs for download. The good ones usually include a list on that
particular RPM's page of other programs or libraries that you need in order successfully
install and use the program. If you see a list a mile long of "requirements" (those other
programs and libraries you need), then you might want to ask yourself if you really want
to try that program out.

And here's just an editorial comment on my part about this type of thing as well. The big
buzz word with Linux is "free". That's fine. You can theoretically get a distribution from
the Internet along with programs and install it for free. (ie. no money down). I think,
however, that time is money, to use the trite expression. Time might be even more
valuable than money. (lost money might be re-earned but not lost time). When I first
installed Linux oh so many years ago, updating and installing stuff was at times a
frustrating experience. I suggest that newcomers to the Linux world buy (yes, I said buy)
a good boxed set of a commercial distribution and then they'll have more programs than
they would ever need, all installed and working properly along with a manual to tell you
what to do in case something doesn't work.

Now let's look at installing programs with Debian.

Debian
Updates
There are various methods to installing new programs on a Debian system. I like to
classify them according to your connection type.

dpkg

This is the "classic" way of updating a Debian system. Typically, you could go to
Debian's website or any one of its mirrors and download a package. Then you would
type:

dpkg -i package.deb

to install it.

The main drawback to this is that you may find a package that you like but it may have
dependencies (ie. other programs that it needs to make it run) and if you don't have those
packages, then the install will fail.

This is what the Debian people themselves have to say about this method:

Many people find this approach much too time-consuming, since Debian evolves so
quickly -- typically, a dozen or more new packages are uploaded every week. This
number is larger just before a new major release. To deal with this avalanche, many
people prefer to use automated programs.

Despite what they say, the main advantage of dpkg, it seems to me, is that it is easy for
people who have dial-up connections. This is because the alternative, automated
programs they're talking about, which are dselect and apt-get are better for permanent
connections (cable, xDSL, T1, T3). Let's talk about this method of installing new
programs with Debian.

dselect

When you use dselect you get a graphic user interface of sorts (not under X window,
though) to guide you through the install of new programs.

First you'll get asked for your preferred access method. That means, how you're going to
get and install them. For example, if I were doing an install of Debian with CDs, then I
would choose CD-ROM. But if I were updating, I would choose FTP

Then you would choose the packages you want with a + sign. You can even put updates
on hold (indicate that you want to update, but not actually do it) with a = sign. There may
even be conflicts or dependency problems and 'dselect' will warn you about those.

Then you start the process by choosing the install option.


Debian will then configure the installed packages.

Then you're on your way.

As I said before, the main advantage to this is that any conflicts or dependency problems
will be resolved right here. The Debian people point out that this is ideal for installs or
large-scale upgrades. If that's the case, it seems that a slow and sometimes expensive dial-
up connection would be less than ideal for this.

In the next section we'll look at installing programs under Slackware

Installing new programs on Slackware


Slackware, known to the Linux world as "Slack", has the reputation of being, on one
hand, a flexible distribution that allows you to do practically anything you want and, on
the other hand, one that is for "experienced" Linux users

only.

A lot of these considerations are "politically" motivated. Slackware lacks some of the
"smooth" and "slick" graphic installation packages that are becoming standard fare in
commercial companies' offerings but in the end, if you're willing to just use the command
line utilities, it's just as easily updated as any other major distribution.

Slackware's package format

Slackware packages come in *.tgz format. This a variation of the *.tar.gz format we've
seen before. You can go to your favorite website and download new programs for your
Slackware system and with a simple:

installpkg some_program.tgz

you have your new program installed.

If that particular package doesn't quite move you and inspire you too much, you can just
remove it:

removepkg some_program.tgz

You can also add the option -warn between the installpkg/removepkg command and
instead of installing the package, it will tell you what new files are going to get added to
your hard disk. That's a good option for the "I wonder if I want this" moments of your
life.
Upgrading packages

You can upgrade programs to newer versions with this command:

upgradepkg a_new_version_of_something.tgz

Using other package formats

If you're using Slackware and you can't find a package your looking for in the *.tgz
format, you can also grab on to an *.rpm and convert it.

The way to do this is:

rpm2tgz some_package.rpm

This takes the "rpm" in question and converts it to *.tgz format. Then you can use
installpkg on the new file you've created to install it.

GUI does not necessarily = GOOD

Once again, there is a common misconception that just because something doesn't have a
wonderful graphic interface that makes you say "oooh" and "ahhhh", it is somehow
inferior. Don't let that missing GUI fool you here. A computer running Slackware is a
tremendously flexible and configurable system. So what if you have to write things on a
command line? That's what you've got a keyboard for, isn't it?

Enjoy your "Slack" system!

Getting Started with Linux - Lesson 17


Printing under Linux
Although this is my personal opinion and I have not done scientific research on this topic,
I would say that word processing is probably the computer activity which is done with
the most frequency. E-mail may be surpassing the popularity of basic word processing (e-
mail is just an extension of that, really). The fact is that people open up their word
processor of choice (or the one they're forced to use at work) and write things on a pretty
regular basis. Writing things, logically, means printing them afterwards. Despite what
we're hearing about the web doing away with the printed material as we know it, it seems
that we handle more paper not less of it in our networked world. After all, many people
curl up in bed with a novel or a report for work. I don't see that custom being altered
unless someone comes up with a comfortable way to use a computer

in bed!
Obviously, if writing/word processing is so important and printing is the logical next step
after writing, then getting your printer up and running under Linux is going to be a
priority. Luckily, Linux has changed a great deal and hardware manufacturers got the
idea quick that it didn't matter what OS people used their printers with, it was just
important that they used them. That means that all of the major distributions offer first
rate tools to get practically any printer running under Linux.

What you're doing when you print under Linux

Historically, printing in the Unix platforms started off as just sending plain text to a line
printer, (resulting in rather plain looking text on paper with holes on each side - some of
you might remember this). The basic means of printing in Linux just takes off from there.
When you first set up your Linux machine to use a printer, you'll be configuring the lpr
or "line printer". The lpr works with the lpd or "line printer daemon" running on your
system. . A "daemon" is just a program that works in the background, without your direct
intervention. This daemon just waits there for printing jobs to be sent to it, which it will
then send to the lpq or "line printer queue". The queue (queue the British word for what
Americans call a "waiting line") just puts your print job on hold until the system figures
out the way to print it. This holding pattern is usually pretty quick - maybe a couple of
seconds - because computers work pretty fast, generally.

As I mentioned, printing used to consist of just sending rather boring looking output to a
line printer. Today's computing needs in terms of printing are much more demanding.
Exotic fonts, graphics and other visual goodies can be found in standard printed material
that comes from a computer. Your Linux machine should be capable of printing anything
you want as long as you have the correct filters. For example, if you downloaded a report
from the Save the Whales Foundation on the mating habits of the pilot whale in PDF
format and you wanted to print it, you'll need some filters installed that know how to
print PDF files. All mainstream Linux distributions come with Ghostscript. This is a free
implementation of Adobe's Postscript filters. These filters are used to make sure that
"What you see is what you get", to use a hackneyed expression.

How to print

If you want to print, you should push the "print" option in the menu. OK, you know that
already. But how do we get from the point where you've got Linux installed to where you
can print something with your word processor? Here are the steps.

1. Install a printer
Most Linux distributions come with tools that will get you printing in no time. As I
mentioned before that Linux's printing system is based on basic line printing, you'll need
a working "printcap" file (to be found in /etc/printcap, usually) that tells your system
what printer it's supposed to work with. With SuSE you can use YAST to create this file
(which will invoke a program called 'apsfilter'. Red Hat comes with "printtool",
Mandrake has its printer setup tool in its main configuration package. Debian and
Slackware both use the 'apsfilter' tool as well.
This lesson is not meant by any means to be the definitive list on products from every
vendor, so if your particular distribution isn't listed here, you'll have to consult the
documentation in your case.

For example, the /etc/printcap file that SuSE configured for my main machine at home is
this:

printer1-ascii|lp1|y2prn_printer1.upp--ascii-printer1|
y2prn_printer1.upp ascii:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/y2prn_printer1.upp--ascii-printer1:\
:lf=/var/spool/lpd/y2prn_printer1.upp--ascii-printer1/log:\
:af=/var/spool/lpd/y2prn_printer1.upp--ascii-printer1/acct:\
:if=/var/lib/apsfilter/bin/y2prn_printer1.upp--ascii-printer1:\
:la@:mx#0:\
:tr=:cl:sh:
#
printer1|lp2|y2prn_printer1.upp--auto-printer1|y2prn_printer1.upp auto:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/y2prn_printer1.upp--auto-printer1:\
:lf=/var/spool/lpd/y2prn_printer1.upp--auto-printer1/log:\
:af=/var/spool/lpd/y2prn_printer1.upp--auto-printer1/acct:\
:if=/var/lib/apsfilter/bin/y2prn_printer1.upp--auto-printer1:\
:la@:mx#0:\
:tr=:cl:sh:
#
printer1-raw|lp3|y2prn_printer1.upp--raw-printer1|y2prn_printer1.upp
raw:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/y2prn_printer1.upp--raw-printer1:\
:lf=/var/spool/lpd/y2prn_printer1.upp--raw-printer1/log:\
:af=/var/spool/lpd/y2prn_printer1.upp--raw-printer1/acct:\
:if=/var/lib/apsfilter/bin/y2prn_printer1.upp--raw-printer1:\
:la@:mx#0:\
:tr=:cl:sh:

2. Install the Ghostscript package and other useful filters


Most major distributions always recommend the Ghostscript package by default, so it
goes on your system with a standard install. This will take care of your more advanced
formatting needs. Other ones, like the jpeg libraries and other image formatting libraries
are also installed by default so you can print your image files easily and painlessly.

3. Turn on the printer and press the print button


I sometimes forget to turn on the printer, so that's why I included this last part.

Some useful trouble shooting techniques

Most printers work from a parallel port. You must have parallel port support enabled in
your kernel. Most major Linux distributions will install a generic kernel with this
enabled. Printing therefore shouldn't be a problem. However, most people at some stage
of the game prefer to compile and install their own custom Linux kernel. When you get
up to speed on Linux and you decided to do this, always remember to include parallel
port support into your new kernel. I have forgotten to do this (which ironically seems to
happen with much more frequency as I get familiar with compiling kernels) only to find
that I can't print anything when I've finished installing my new kernel.

I have also noticed my system choke on stuff sent to it from Corel WordPerfect. I won't
go into the "hows" and "whys" (because I honestly don't know why or how this happens)
but I have fell victim to an inability to print from WordPerfect on occasion. What I
usually do is see if in fact I have pressed the button 'print' and something is waiting to be
printed. To see if you have something waiting in the printer queue, just issue the
command:

lpq

This will show you what's in the printer queue or if there is in fact anything there. Output
generally looks something like this, if you have a problem (like my printer being
unplugged, in this case).

waiting for printer1 to become ready (offline ?)


Rank Owner Job Files Total Size
1st bob 46 grocery_list.txt 667 bytes
2nd bob 47 lyrics_to_sinatra_my_way.txt 2323 bytes

For example, if I wanted to just get rid of these files, shut WordPerfect down and start it
up again and try printing again (which usually works for me), I would just issue the
command:

lprm

Which removes the whole line printer queue. I could also be selective about it and only
delete one of the print jobs by typing the command:

lprm 47

Alas, my debut in the karaoke bar will have to wait, but I can still do the shopping.
Hopefully you won't need to use these troubleshooting techniques very often, but they're
good to know just in case.

Enjoy printing under Linux!

Using Linux to access the Internet


We live in an interconnected world. In fact, you're using this interconnectivity in form of
the Internet to access this course. Chances are, however, that you're using some other OS
to connect to your ISP and read this course. After this lesson, you should be able to
connect and browse what's out there in cyberspace using Linux.
On-ramps to the "information superhighway"

I think that the term "information superhighway" is a perfect analogy for the Internet.
That's probably why it has become so popular. The superhighway itself is the telephone
companies infrastructure - the lines, fiber-optic cables, switches and satellites that bring
the hundreds of millions of pages of content to you, including this page. Your computer
is like that car on the highway. Your modem or other device that connects you is like the
engine of your car. That's why we've written this lesson. If you can't get the engine to
work, you're not going anywhere. Linux and other OSes are a bit like the fuel you put in
your car. If you have been using Windows, that's like using gasoline. If you switch to
Linux, that's different, like jet fuel. You'll have to modify your engine to be able to use it,
but you'll go faster in the end.

Types of connections

There are basically three types of connections to the Internet; leased lines, broadband and
dial-up connections.

Leased lines are high-speed connections that ISPs use to connect you to the rest of the
Internet or big companies use to communicate between parts of their organization and to
allow you to connect to them. These are known as T1 and T3 lines in North America and
E class lines in Europe. This course will not deal with setting up and Internet connection
with these lines. It's a little out of the scope of your average Linux user.

xDSL (Digital Subscriber Line) and cable modem are what is known as "broadband"
connections. These services offer 24 hour high-speed connections to the Internet in most
cases (unless you shut off your machine, of course). For example, in my area, I have
ADSL service. My connection runs at 250 kilobits per second when I am receiving data.
To put it in other terms, I can download a 5 megabyte file (like a song) in about 3-4
minutes. This depends a lot on where you're connecting to and other factors, but
broadband is the best alternative for home users. Depending on what company is
providing you with this service, you can even use this connection to serve your own
personal or small business webpage using Linux as a web server. In the xDSL area, you
can even opt for higher speeds (up to 2 megabits per second) and have Internet service
that rivals much more expensive leased line alternatives. Lately, cable modem is
becoming more popular than xDSL, particularly in the United States because the cable
companies seem to have gotten on the ball faster to offer consumers high speed
connections. With all due respect to telephone companies, there may be, and I suspect
there are legitimate technical reasons why a cable connection is essentially cheaper and
easier to provide to to consumers. The reasons behind this would go beyond the scope of
this lesson, (and I'm not a telecom engineer) so suffice it to say that cable seems to be the
way people are going to get high speed connections to the Internet.

Dial-up (standard modem) connections are by far the most popular way of connecting to
the Internet. Up until the late-1990's, if you weren't a Fortune 500 company, it was the
only way to get on the Internet. This connection type basically consists of using a modem
to dial the phone and connect to the Internet Service Provider (ISP). The modem
"negotiates" the connection (ie - tells the ISP who you are) using a couple of established
network protocols. The best speed you can hope to get out of a dial-up connection is 56
kilobits per second. That is to say, about 5 times slower than the slowest broadband
connection.

ISDN - a footnote: A few years ago, in my area at least, the telephone company was
trying to sell people on ISDN (Integrated Services Digital Network) to solve the two
main problems with Internet use, namely the slow modem speed and the fact that you
couldn't make or receive phone calls while using the Internet. They promised connections
of up to 128 kilobits per second (the key words here being up to, using the tactic of car
advertisements that say from 9,599 dollars, but in reverse). This has never seemed to have
caught on, at least in my area. The few people who I know who had this service (and later
dropped it) complained about the speed. What they promised, just couldn't be delivered.
At any rate, nobody seems to be talking about it so much anymore.

Let's move on to the next section where we'll show you how to set up the different
Internet connection alternatives under Linux.

ADSL with Linux

Fortunately (or unfortunately, depending on your relationship with your local telecom
company) the telephone company handles most of the heavy lifting during the process of
getting Linux to work with an ADSL connection. I went through the process of switching
from standard dial-up not too long ago, so the process is fresh in my mind. Here are some
of the things I had to do.

1. Call the ISP. This is pretty important. Sometimes they will offer you Internet
service and at the same time arrange for the telephone company to come over and
install a splitter which allows you to use the same phone line for data and voice
transmission. It is also important that you know if you accept their services, you
may have to accept the hardware they recommend (or force on you). There are
two main connection options; via router and via modem. They may pretty much
obligate you to use one or the other, even selling your their own hardware in the
process. In the best case scenario, ask if you can use your own choice of hardware
and then hope they say yes.
2. Choose a router or modem If a modem isn't forced upon you, then it's a good
idea to choose the router option. The basic reason for this is that it is usually
platform independent which means that it doesn't matter what OS you're using
because you can probably configure it using Telnet (in my case) or even a web
browser, which I have also seen done. For example, in my case, I chose a router
that had capabilities for filtering out unwanted incoming connections. This is very
important for security because you're going to be connected 24 hours a day. This
is a great option for a small business because a router allows you to painlessly
share the connection between multiple computers.
3. Get an Ethernet card If you go the router route (pardon the pun), you're going to
need an Ethernet card. These cards are designed to allow you to connect
computers in a Local Area Network (LAN). My card of choice (because it was the
only one they sold in my area) is the NE-2000 clones. Realtek 8029 PCI is the one
I use in my machines in my home office. This is a good one because most major
distributions will detect this (they always have for me) during a standard install of
Linux. Plus, even if you've never looked under the hood of your PC you can
muster up your courage and install this card yourself. For the faint-hearted, I have
even heard of the telecom people doing this for you. You can also call your local
guru. I encourage people to do it for themselves. It's a question of using a small
screwdriver. What that's in, you connect the router to the Ethernet card so your
PC can receive the data. If you've got more than one PC in the house, you should
get an Ethernet hub to distribute the connection between PCs.

Putting in all together

A picture speaks a thousand words, so I made a little drawing of my home network to


demonstrate what a possible set up might look like. (graphics courtesy of The GIMP It's
really too good of a program for my poor artistic skills!)

Two cables (red) come from the splitter. One is for the phone and one goes to my router.
One Ethernet cable (green) goes from the router to the hub. Other Ethernet cables (blue)
go from the hub to the PCs.
Now, to get on the highway

My home network is a private local area network, so each PC is assigned an IP address


which is a number that computers identify themselves with. In case you didn't know,
when you go to www.linux.org, you're actually going to a computer that is assigned a
number on the Internet. In my home, these numbers start with 192.168. and then have
two numbers after these. The numbers 192.168.X.X are reserved for private networks, so
you will have to use these. If you used any other numbers, they might conflict with
numbers that are actually out there on the Internet. I assigned my PCs the numbers
192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4 respectively.

Now, when the telecom people came to hook me up, I took out my router and connected
it to the data line coming from the splitter (see the picture). Then I hooked up the router
to the hub and then one of my PCs to the hub. In my case, the manufacturer of the router
in the factory assigned the number 192.168.1.1 to the router, so as soon as I turned it on,
you could say for all intents and purposes that I had another computer on my local
network with the address of 192.168.1.1. The router was equipped with the possibility of
using a a program on a CD to configure the Internet connection if I was using Microsoft
Windows or Telnet for another OS, like Linux.

Before I used Telnet to access this router, I had to know what address my telecom
company had assigned to me for Internet purposes. That is to say, when you use the
Internet, you don't identify yourself to other computers with 192.168.X.X. With ADSL
you are assigned a unique number with which to connect to other computers. This
number has to be unique. It's a lot like running a men's bowling team. If there are 20
members and 7 of them are named Bob then, if someone announces that "e;Bob has the
highest score" then there's going to be confusion. In my case, I was given a unique
number, let's say it was 20.20.20.20. Then I used Telnet to access the router. I opened a
terminal in my PC and typed:

telnet

then:

open 192.168.1.1

which was the local numbered address the router came with by default. They also
furnished me with a default password which I used to connect to the router.

Once in, I had a text mode menu (the best you can do with Telnet) and going by the
router's manual plus my local telecom's instructions, I assigned the router the unique
Internet numbered address my telecom had given me and then I changed the address of
the actual router to 192.168.0.5, to me more in synch with my local network's numbering
scheme and then I changed the password to access the router. I saved the changes and
exited. Now, at least, I had ADSL service coming in to the router.
The final step was to tell the PCs where to get their Internet connection from. I was using
my workstation to configure the router, so I logically started with that one. I run SuSE
Linux on this machine, so I had to change 2 files: /etc/route.conf and /etc/resolv.conf. The
changes I had to make took all of 30 seconds.

First, in /etc/route.conf, I had to write the line:

default 192.168.0.5 0.0.0.0 eth0

Which means that 192.168.0.5 is the default "gateway" to the Internet, or where the
machine is going to route out of to get to the outside. 0.0.0.0 is the subnet mask (not
important for our discussion here) and eth0 stands for your Ethernet card that you
installed and is connected to the hub which is connected to the router.

Then I added two lines to my /etc/resolv.conf file.

nameserver 30.30.30.30
nameserver 40.40.40.40

These are not the actual numbers I was given. It's just an example I used to correspond to
the numbers that could be given to you by your telecom company. These are the primary
and secondary DNS numbers. DNS stands for Domain Name Server. A domain name
server is just a machine that has an inventory of other computers on the Internet. That is
to say, these computers know that www.linux.org is actually a number out there and they
help you find it. Without these numbers, you wouldn't stand a snowball's chance in hell of
finding anything on the Internet. I learned this fact in my haste to get the rest of the
network set up. When I was configuring the last computer, I forgot to change
/etc/resolv.conf file. When I fired up my browser, it basically did nothing until I
remembered to change that file.

If you're using Mandrake or Red Hat, instead of /etc/route.conf you'll have to add two
lines to /etc/sysconfig/network . These are the lines I added:

GATEWAY=192.168.0.5
GATEWAYDEV=eth0

The changes to /etc/resolv.conf are the same.

You're on line - let's be careful out there

After doing all this, I was on line with all machines going out through the router. I
quickly disconnected the hub to all but one machine and following the instructions, and
set up some necessary security. This is important because you are a sitting duck for
intruders with ADSL. You may not think that your local home network might be
important compared to some corporate website (which, it really isn't as far as a target for
hard-core hackers/crackers) but there are a lot of mischievous people with time on their
hands that go around looking for trouble. These people use tools they get off the Internet
to scan numbers at random to see if the machine attached to the number can be "hacked".
Most of these people, popularly known as "Script Kiddies" seldom know how the
software works and really don't care. They just know they can do harm with it. As they
say, a little knowledge is a dangerous thing. IRC chat is a good place to chat with friends
and also a good place to inadvertently invite people to take a swipe at your machine.
Most people on IRC are there to socialize, seek technical help and even work and
collaborate on projects at a distance. But there are a few people with dubious social skills
who are just on IRC to be jerks. A lot of these people are script kiddies who like to get in
feuds with people on channels. Seeing as IRC can tell a lot about where you are, you are
somewhat vulnerable to these socially unacceptable characters and what they may try to
do with you. Remember, they don't have to know how the program works, only what it
does. Report any threats to the channel operators. Sometimes the person's ISP figures in
the information on IRC. Report them to their ISP or the local authorities if they threaten
to do harm to your machine.

Security with ADSL

Security in Linux is way out of the scope of this beginners' course on Linux. There are a
couple of things that you can do without having to be a guru on security to help secure
your Linux box.

A brief explanation of ports

I was lucky in that my router has the ability to filter packets built into it. Packets are the
data that comes in and out of your computer when you're connected to a network, like the
Internet. The people who designed the big network of networks came up with the concept
of ports - or point of entry to computers from the outside. For example, webservers run
on port 80. If a user on a network wants to access a web page on a server, their computer
makes a request to port 80 on the server to send them the page. That's a pretty safe port. It
has to be. The WWW wouldn't function if it didn't. Actually, it isn't the port itself that
should be considered safe or unsafe, it's the software running behind it. Apache's
webserver is pretty safe. But, as we have seen with the famous CodeRed worm,
Microsoft's webserver IIS isn't. Telnet, for example runs on port 23. That's a port that I
told the router not to accept connections to. Telnet is a 'shell' - a way to connect to a
remote computer. The passwords you send to connect via Telnet, even though you may
see little asterisks (or nothing) can be picked up easily by people who 'sniff' these
passwords. I also disabled my computer's ability to accept connection via Telnet. I
substituted it with SSH or Secure Shell. SuSE Linux's most recent offering, (v. 7.2 at the
time of this writing) enables SSH by default. SSH accepts remote connections that are
encrypted or coded. That makes it almost impossible for someone who you don't want to
to connect and try to do harm to your computer from the outside. SSH runs on port 22. I
also have FTP disabled- (port 21).

Firewalls
A firewall is just a barrier between a network that's inside a home or company and the
outside world. If your private network didn't have a firewall, people could just connect to
it and see what they wanted. It would be like a house made of glass. People would spend
the day throwing stones at it.

Any decent network that's connected to the Internet has a firewall. The subject of
firewalls goes way beyond the scope of this beginner's course and I don't pretend to
explain how to set up a firewall here. Some big corporations pay people big money to set
up firewalls in their organizations and then they get hacked anyway. I always think of
Goldfinger's comment in the James Bond movie of the same name when he explains his
plan to steal the gold from Fort Knox to a bunch of incredulous Mafiosos. 007's red-
headed nemesis says: "It is a bank like any other and banks can be, how do you say-
'knocked off'" If you want a good guide to providing security for your PC running Linux,
I suggest you read Bob Toxen's Real World Linux Security: Intrusion Prevention,
Detection and Recovery, the best selling book on security from a Linux perspective.

Practical protection for the beginner

A good way to protect your Linux machine, when you don't know too much (yet) about
security is by making the following very simple changes in two files: /etc/hosts.deny and
/etc/hosts.allow

First, in /etc/hosts.deny add the following line:

ALL : ALL

This is meant to block (1st ALL) services that your computer provides from anybody
(2nd ALL) that may try to log in to your machine. Then, if you have more than one
computer (a small business or home network) you should add this line in /etc/hosts.allow

ALL : 192.168.0.

This will allow local users to access the computer. There's no reason not to let people
locally to log in via the SSH program that we mentioned before. This is OK as long as
you trust them. If you are a home user you're probably safe but if you are using this to set
up a small business network, I would be a bit more careful. There are all kinds of stories
about disgruntled employees taking liberties, revenge, extended vacations with company
money, etc.

One last word: This ISN'T a substitute for a firewall or a serious security set up. If
you are setting this up on a small business network, please read some books or seek a
professional security consultant's help.

Dial-up connections with Linux


Despite the increasing popularity of broadband Internet access and cable company's
ventures into the Internet business and their offering of connections, the vast majority of
people in the world, at the time of this writing, connect to the Internet via telephone dial-
up through the use of a standard modem, usually at speeds ranging from 14.4 to 56
kilobits per second (kbps). The purpose of this lesson, therefore, is to discuss the way to
get a dial-up connection running under Linux.

There are modems and then there are "winmodems"

Once upon a time, there were modems (which still exist) where the ability to use it to
connect to computer networks, like the Internet, was based on the configuration of the
hardware. Nevertheless, companies like Motorola, Rockwell and others developed
modems where the configuration of the device was made possible through software more
than the embedded programming on the hardware. This software was exclusively
compatible with, yes, you guessed it, Microsoft Windows. They became known as
"winmodems". Until recently it was impossible to get one of these little jewels in the MS
crown running under Linux. If you happen to have one, you could check out
Linmodems.org for more information about installing drivers for these to run under
Linux. Motorola recently released a set of drivers for their "winmodems".

The best and easiest way, however, of maintaining a dial-up connection is using an
external modem or an internal modem where the hardware primarily is designed to
handle the connection. Before I had an ADSL connection, I used an external Dynalink 56
kbps modem. The set-up of this modem under SuSE Linux, Red Hat, Mandrake and
Slackware was trivial. Before that I used a 38.8 kbps internal modem and a 28.8 kbps one
before that, upgrading as the higher speeds became available and their decreasing prices
warranted the change.

External Modems

External modems are called that precisely because you have a little box that sits outside
your computer. These connect either via a parallel port or a serial port. A parallel port is
one that is normally used to connect a printer. A serial port is similar in appearance to the
one that is used to connect your mouse. For example, on my workstation, where I am
writing this lesson, there are two serial ports, known as "com1" and "com2". As you can
remember from our lessons on other subjects such as hard drives and floppy drives,
Linux always knows these devices by other names, files that reside within the /dev/
directory. In our case, Linux knows com1 and com2 as /dev/ttyS0 and /dev/ttyS1
respectively (in the computer world, we usually start counting at zero). If you have a
serial mouse, this is usually occupying com1 and therefore /dev/ttyS0. If you then get an
external modem and you want to use it, you would hook it up to the second serial port,
com2, which, as I mentioned, Linux knows as /dev/ttyS1. The trick (really not a trick
because there is no difficulty involved) is to alter your Linux configuration so that it
knows that you've got an external modem on /dev/ttyS1 so it can communicate with it.

Under SuSE Linux for example, this is quite easy. As 'root' you would fire up their
configuration tool called YAST and choose the option 'System Administration' and then
the option 'Integrate Hardware into System'. At this point you're asked to choose the
hardware you want to configure and obviously you would choose 'Modem configuration'
which is the second option. You'll see the various "com" ports available and even, with
the newer version of SuSE, USB modem support. If you have a serial mouse, be sure to
choose com2 or /dev/ttyS1. You should have your modem set up after you've done this.

If you've installed Red Hat Linux, then you should have no problem setting it up with one
of their utilities known as modemtool. If you've installed Mandrake, their tool
HardDrake should do the trick. LinuxConf is also an all-purpose tool that includes
modem configuration. I have had (and heard of) mixed results with this tool.

Now that you've got a modem connected, we'll talk about configuring your connection
with your ISP in the next part of the lesson.

Getting in touch with your ISP


There are a lot of tools out there to assist you in establishing a connection with your ISP
so you can get out there on the Internet. Most will do the job quite nicely. I have found
one in particular that is the easiest of all to use. Not surprisingly that it is called eznet. It
was written by Richard Hipp and it makes setting up your Internet connection absolutely
trivial. For Red Hat and RPM based distributions there is a RPM package compiled by
Kent Robotti and available through RPMfind.net. There is also a "tarball" available at
Ibiblio's website If you're feeling adventurous, you might want to go to Dr. Hipp's
website and download the C source code and compile it, which is another option.

Basically, the program asks you a series of questions about your ISP, information which
this company should have given you and about where your modem is located, (what we
covered in the previous section). There is a possibility to handle several different ISPs (at
one point, I had 3 different ISPs configured). Once you've answered the questions and
you have your connection setup, connection is nothing more than typing one command in
a terminal:

eznet up 0

The program starts counting ISPs with the number 0, so that's your first ISP. Just
substitute for 1, 2 etc. for other connections you may want to set up.

Other options

If you use YAST in SuSE Linux you can set up your connection using WvDial. I must
confess that earlier versions of this program were not entirely successful in setting up my
connection. Euphemistically speaking, they couldn't do it. This program has been greatly
improved and your probability of success along with it.

If you've picked out your windows manager already and it happens to be KDE, you're in
luck because there is a program called KPPP which will set up a connection for you
fairly painlessly. The only problem I seemed to have with this was is known as the
"negotiation" of the connection with my ISP. There are two protocols known as PAP and
CHAP. If you run into this problem, it just might be a question of trying one or the other
and sticking with the one that works. With KPPP, you can also tune or tweak your
connection speed to get better results from your hardware.

User of Red Hat have a very powerful and simple to use graphic tool with RP3. This is
standard issue on all versions of Red Hat since 6.2

For the technically curious

As you'll notice, the program I mentioned for KDE is called KPPP. The K stands for
KDE but what does the PPP stand for? It stands for Point-to-Point Protocol. This
protocol enables two computers to connect across a network. The protocol basically
provides the means for the two computers to first, identify themselves and then ask
whether the computers can read the data each other sends. In your /sbin/ directory, you'll
find the point-to-point protocol daemon, or pppd which is a program that provides for
that communication between computers.

What you essentially do when you set up your Internet connection is to make sure that
pppd knows how to communicate the right information. If the two computers either can't
authenticate themselves to each other (ie- realize that they have "permission" to
communicate) or the type of data their sending is incompatible or both, then the
connection fails. What eznet, kppp, RP3 and other similar programs do are to create the
necessary configuration files that pppd reads. When I first set up an Internet connection
with Linux, I created these files by hand without the help of one of these programs. It was
an interesting exercise but essentially took a long time to figure out at those days. If
you're interested in finding out what goes on behind the scenes, I suggest you check out
the page Linux Dial-Up Networking in a Nutshell which has a nice list of the processes
and files that come into play.

A common problem

The most common problem I have come up against is that somehow the very important
configuration file /etc/resolv.conf gets overwritten. This happens with some Linux
distributions and the reasons are numerous and I usually chalk it up to what I called
excessive "meddling" with important configuration files on the part of some major Linux
distributions. The symptom of the problem usually is that even though you've connected
to your ISP, you're not reaching pages out there. The first thing you should do is make
sure /etc/resolve.conf includes the two or more IP addresses of the domain name
servers; those machines that translate for example, www.linux.org, into our actual
numerical address. As I mentioned in the section on ADSL, it should look something like
this:

nameserver 30.30.30.30
nameserver 40.40.40.40

Your numbers will of course be different, but if you don't see at least two lines like this:
nameserver plus an IP address, then you'll have to add it again. Then you should find out
why and how your distribution is over-writing this file so it doesn't happen again, unless,
of course, you want it to. SuSE, for example, has a section in their YAST tool where you
can configure it not to overwrite certain files like resolv.conf.

That pretty much sums up setting up dial-up connections. Happy surfing with Linux!

Getting Linux to make sounds


The hills are alive....

If you're like me, the first thing that interests you in setting up your computer is making it
play sounds, particularly music. When I installed Slackware so many years ago (1997
seems like an eternity for Linux) I think I was more interested in making my sound card
work than making the modem work to get connected. Music has always been pretty
important in my life long before the World Wide Web even existed, so that was pretty
logical.

Sound Cards

When I bought my first sound card in December of 1992, it came in a big box that
Creative Labs sold me and it was a Sound Blaster. In that big box there was a bunch of
stuff - software (for Windows 3.1), a CD-ROM drive (with an insert-able cartridge that
my 2 year old just managed to break after all these years!) and some Midi gadget which
never interested me and is still in the same box in my attic. I had good luck with that
sound card (I still do because it still works). Due to this, I have always bought Sound
Blaster cards. These cards have usually configured fairly easily under Linux. I was once
bought a machine that did not have a Sound Blaster brand card in it and I was not able to
get it configured under Linux. I honestly don't remember the name of the card and I
promptly paid a little bit more money and exchanged that one for a real Sound Blaster
and quickly got it running under Linux.

Sound Blaster uses the Alsa drivers to make sound come out of your Linux machine.
These people have made my life much richer as I can listen to lovely music as I write this
lesson of the beginner's course. There are a lot of other supported cards. My eternal
gratitude to the people working on the Alsa Driver project. You might want to have a
look at their list. And see if your sound card is on their list. The nasty hardware
manufacturers who do *not* share their information (and therefore, their cards do *not*
work) are listed in red.

If you use the SoundBlaster card, you may also want to check out Creative Lab's page

Configuration tools

Before I go into the tools to use to get the sound card working, it's important to point out
that the Linux kernel needs to be configured to use a sound card. If your kernel doesn't
have a clue about what to do with a one, there is precious little tools like sndconfig can do
to help you. Luckily, every install I have done in the past year and a half or so of a major
Linux distribution

has come with a kernel that has sound support in it by default. If you're installing "Joe's
Home-brew Linux" distribution (where you must compile your own kernel), then you
might be beyond this beginner's Linux course and you probably already know how to
make the kernel you want. But if you are a true beginner (that's who this course is for)
then you're probably going to get a "made for sound" kernel. The latest versions of Red
Hat, SuSE, Mandrake and Debian that I have installed are all sound enabled from the
beginning, depending on, of course, whether or not the hardware is mainstream enough to
be detected on install. I wrote in a review of Mandrake 7.2 in the Spring of this year
(2001) about how it didn't detect my very mainstream Sound Blaster 16 card. The good
thing is that Mandrake 7.2 is very much a thing of the past. They're on version 8.1 at the
time of this writing and on that same machine, I did a "clean" install (I did not update - I
removed 7.2 and installed 8.0 new) and it found and configured my Sound Blaster 16
card without the slightest problem. If the distribution you have installed (or are planning
to install) is up-to-date, you should not have a problem.

It is also important to know what type of sound card it is in terms of the slots that it uses
on your mother board in your computer. On my machines, the motherboard (that big
thing inside a PC that you plug all the cards into) or mainboard as it is also known, will
accept ISA Plug and Play cards (bigger slots) and PCI cards (smaller slots). I'm not a
USB user, so I won't feign expertise here and give USB guidelines. If you have an ISA
PnP card (I have two) you also have to have the ISA PnP tools installed as well as a
kernel that can use ISA Plug and Play (also known as plug and pray)

As I mentioned, most major distributions will configure the sound card during the
installation process. If this is not the case, you may use to any of the following tools,
depending on your distribution.

• sndconfig I mentioned this one above. It is a tool for Red Hat and distributions
based on Red Hat (Mandrake, KRUD, for example). It is text based (runs it a
terminal) and has always done a good job for me. It will play a sound bit of Linus
Torvalds pronouncing the word "Linux"
• YAST This is SuSE's "Swiss Army Knife" of configuration tools. Their latest
version 2 is graphical. Again, there was no problem detecting my sound cards
with YAST. It plays a little melody that's also the KDE default startup sound. You
can adjust the default volume as well. It warns you not to set it too high, just in
case you're wearing headphones and you blow your eardrums out!!
• HardDrake Mandrake uses this graphical tool to configure hardware, including
sound cards. Using the GUI, you can select the sound card and then push the
button that says "launch configuration tool". I suspect that what it is doing is
launching sndconfig - which, as I mentioned, is also available for Mandrake.
• alsaconf If you're using Debian, this is the package you need to set up sound. The
alsa-base package is also required.
You should now have a pretty good idea of setting up a sound card with a major Linux
distribution. Strange hardware, old versions of Linux (your cousin lent you the SuSE 5.3
disks) and obscure distributions (Zingblatter's Ultra Linux 1.4) are beyond the scope of
this course, so if you're one of those out there who pine for the sweets sounds of Mozart
flowing from your PC, you can take a look at the HOW-TO's on the subject.You can also
go to your favorite search engine (mine is Google ) and enter Linux sound card setup
and you have access to the zillions of bytes of information on the topic.

Let's go on now to all of the available programs to play all of that sound and music, from
the Beatles to Hans and his Swiss Alpine Yodelers.

Getting Started with Linux - Lesson 18


Now that we have our sound card working, it's time to check out some of the options that
we have for playing sound. If you're following the course in order of the lessons, we
haven't begun to talk in depth about the use of the X-window system in Linux, so the
tools for playing and recording sound here will be used from the command line.

I'd also like to add an editorial comment, if I may. I use a window manager

but the programs I listen to CDs, MP3s etc. are command line applications. I am not
implying that there aren't some fine programs for playing and recording sound. There
certainly is some nice stuff out there. The programs I use (which we'll talk about here) are
great applications that work just as well as their graphic counterparts but in many ways
are more easily configurable, at least for me. Besides, we're talking about sound, so I just
have to set the CD or playlist and listen. I really don't have to see anything.

Recording Sound
Due to Microsoft's monopoly on operating systems (yes, they have been convicted of this
in a court of law), the most popular format for sound recording is is their *.wav format.
When you make a recording of yourself or someone else speaking or you "rip" a track
from a CD for later conversion to mp3 or ogg (we'll talk about this new and open format
later), you're probably going to use the *.wav format. If you simply want to record
yourself saying something using Linux, all you need is a microphone and and recording
tool that gives you a file in this format. For this lesson, we'll use 'wavrec'.

'wavrec' is easy to use. It's easy because the default recording settings for this applications
are all acceptable for getting a quality recording (if you've got a fairly good microphone).
You just have to type some simple commands and you're all set.

Here's an example:

Let's say I want to record a note to myself that says the following: "Note to self: make
sure you respond to Dave's email about SuSE'. I would just type the following"
wavrec dave_note.wav

make sure the microphone is on (you'd be surprised how many times I forget to turn it
on!) and start talking. The default recording time for 'wavrec' is 10 seconds. That means,
if you don't specify a recording time on the command line (I didn't) you'll get a 10 second
long sound file. My sentence above, "Note to self ..... bla bla bla" lasts about 8 seconds.
Of course, the duration of the sound file depends on whether you're talking a normal rate.
If you auction cattle in Iowa, then you probably don't need 10 seconds to say that
sentence, so you should modify the time for the file, like this:

wavrec -t 3 dave_note.wav

The -t option refers to seconds, so you should type the number of seconds after. Here,
even 3 seconds might be pushing it for a cattle auctioneer. Just remember to give yourself
enough time for what you want to say, in seconds. If you want to recite Abraham
Lincoln's Gettysburg Address, then you would first multiply 60 and 2 to get 120 seconds.
Why this figure? Because Lincoln is reported to have taken only 2 minutes to give this
famous speech. If you would like to record Cuban leader Fidel Castro's speeches, then I
would advise getting a huge hard drive. He once made a speech that lasted 7 hours.

You can add all kinds of options to wavrec. I use this tool all the time to record short
sentences for use in computer assisted language learning. Here are the values I use:

wavrec -S -t 5 -s 44100 a_sentence.wav

Let's explain these options. The first one, -S, means stereo. If you look at the man page
for 'wavrec' (type: man wavrec), it says that stereo is the default. Nevertheless, I have
noticed that mono is in fact the default. That is to say, if you use 'wavrec' with no options,
you get mono not stereo sound. It would seem there is an error in the man page. After the
-S, we have the -t option for seconds (we explained before) then we have the -s option
which is the sampling rate in Hz. I chose 44100 because this is a good high-quality sound
which is necessary for my language teaching endeavors. It's important not to confuse the
-S (capital letter) with the -s (lower case). -s takes a value in Hz while -S has no value. I
have purposely put the -t option in between them to avoid confusion. There you have it.
Issuing this short command and then changing the file name, I get a lot of work done
because my sentences seldom last more than 5 seconds and these values are fine for my
work.

Now, you must be asking the question: "I've made a *.wav file, now, how do I hear it?"
The answer is easy: With 'wavrec' 's companion program, 'wavplay'. Here's how:

wavplay a_sentence.wav

This will play the sentence we recorded above. That's all there is to it. I should also point
out that the same options in 'wavrec' are available for 'wavplay' if you want to add some
effects to playback. For example, if you take our first wav file, dave_notes.wav, and play
it like this:
wavplay -s 44100 dave_notes.wav

you'll find it's doubly fast. That's because our note about Dave was recorded at the default
22050 hz, so if you do the math, you see that what we've done is double it's sample rate .
You might want to do this:

wavplay my_favorite_song.wav

then sing a line of your favorite song. Play it back to your friends using the -s 44100
option and have them rolling on the floor with your Alvin and the Chipmunks
impressions. I have actually entertained my 2 year old son for hours with this.

Using the same logic, if you take our a_sentence.wav and play it like this:

wavplay -s 22050 a_sentence.wav

you've cut the sample rate in half and so you get a really cool impression of the creatures
that take over people's bodies in Star Trek's original series episode 'The Lights of Zetar'.

I know what you're probably thinking. I need to be productive. I don't want to record
Chipmunk sounds and sci-fi weirdness. Well, then. Here's a good way to use these tools,
plus a couple of other command line tools to read reminders to yourself in the morning,
or whenever you'd like. First, create a subdirectory in your own directory /home/[you]/

mkdir reminders

then go into reminders (type: cd reminders). Now, Let's create a sort of introductory wav
file that's always going to be there. I'll explain why we need that in a bit.

wavrec -t 3 0intro.wav

Say something like "Your reminders" or "Reminders for you". Three seconds should be
enough for that. You may have noticed that the name begins with zero. That is simple
because for our reminder system, we invoke 'wavplay *' with the asterisk to play every
file in that directory. By naming it '0intro.wav', that assures that it will be played first
with our system.

Now record some reminders. I recommend using a YEAR-MONTH-DAY format plus


some meaningful word for naming the wav files. For example, type:

wavrec -t 5 2001-10-24_trash.wav
and say: "Remember to take out the trash". I suppose 5 seconds should be enough to say
this. Try recording a few more reminders for different things, like "call cousin Jack" and
"remember to pay back gambling debts to bookie". When you've got a few wav files in
there you should play them to see that they've come out all right (you don't need to do
this every time - we're just practicing)
wavplay *
You'll see that the 0intro.wav file gets played first. If everything sounds good to you, then
we're ready for the next step which is to play our files automatically at a given hour.

One of my favorite applications in Linux is called 'cron'. This is a pretty powerful tool
that is used primarily by system administrators to automate their tasks and duties. It's
powerful because it can schedule something to be run automatically at any time, whether
that be once every three minutes, every hour, once a day or every Thursday. It can even
be used to run a job that you do only in January. But just because it's powerful, it doesn't
mean it's complicated to use. For our purposes, it's very simple to configure 'cron' to play
our reminders. First, we have to edit a file that is called 'crontab' and add our instructions.
There is a system-wide crontab file for root's exclusive use, but there is also one available
to every user to run command line apps that he or she is authorized to use. To add a job to
be done, just type:

crontab -e

Then we add the following line to our crontab file (-e is for edit)

30 7 * * * /usr/X11R6/bin/wavplay $HOME/reminders/*.wav

The crontab edit procedure uses your default command line editor which is probably 'vi',
so if you don't remember our little tour of 'vi', just press 'ESC + i' before you add this line.

Let's explain how a crontab file works. The file is read by the program 'cron' and it carries
out the instructions in it. In our example, our wav files get played at the 30th minute of
the 7th hour, that is to say 7:30 in the morning. This is because the crontab file must start
with the minute [0-59] you want something done, followed by the hour [0-23] the day of
the month [1-31], the month of the year [1-12] and the day of the week [0-7] (where 0
and 7 are both Sunday). I have left the last three as asterisk. This tells 'cron' that these
values don't matter. That is to say, cron should play our *.wav files every day of the
month, every month of the year, 7 days a week.

The next step as you can see is to tell cron to run 'wavplay' and play the files in your
home directory. We use the symbol $HOME for that. Also notice how I have put the
exact path to where wavplay is. To see if your system differs, then type:

which wavplay

to show you where the program is. Then adjust accordingly. I used this exact path
because, it would seem on my system, the master crontab file (found in /etc/crontab )
doesn't recognize that path automatically. I am assuming that this is for security reasons,
so I didn't go in and change the path. Some things are probably best left alone, so no
harm done if you just put in the exact path in the crontab file.

If you want to test it, just give it a time within a couple of minutes or so. That is, if it's
3:30 in the afternoon, you might want to first edit your crontab like this:
32 15 * * * /usr/X11R6/bin/wavplay $HOME/reminders/*.wav

that will play the reminders at 3:32 PM, to show you that it works. Just make sure you're
not playing anything else, like MP3s, because you won't hear them. That's the rationale
for my 7:30 AM start time. It's a good hour for me - when I am just getting to work and
I'm probably not listening to heavy metal at that hour of the morning. Actually, I never
listen to heavy metal.

Now, when you've finished hearing them, you can delete them (if you want) That's where
the rationale behind the YEAR-MONTH-DAY.wav comes in. You just delete the daily
ones by typing, for example rm 2001-09-28*

That keeps the 0intro.wav file in there. I mentioned before that I was going to explain
why it's necessary to have it there. 'Cron' will mail you when there is an error, so if you
had no reminders for a given day, you would at least have one file in the /reminders
directory. That way, 'cron' doesn't have to mail you an error message because the
program 'wavplay' didn't find any *.wav files.

By deleting the unnecessary reminders, you've got some free disk space. Speaking of
that, if free disk space is something that worries you, in the next part of the lesson we'll
talk about those famous (and controversial) files that take up less space - MP3s - and how
to make them under Linux. We'll also talk about the new free audio format comparable in
sound and space to MP3 - Ogg Vorbis.

MP3 format
If you've touched a computer in the last couple of years you've at least heard about the
MPEG layer 3 format, popularly known as MP3. You have probably listened to an MP3
and you may have even "ripped a track", that is, made an MP3 file from a song on a CD.

MP3 has become somewhat controversial. In light of the Napster case, sharing MP3 files
has opened up a Pandora's Box of questions about copyright, fair use and intellectual
property. This really isn't the place to debate those questions but there are some issues
related to the making of MP3s that concern Linux, Open Source and Free Software in
particular.

We'll talk about the programs available to make sound files in MP3 format, but I should
point out that MP3 is a non-free format. That is to say, the Fraunhofer Institute and
Thomson Multimedia developed MPEG Layer 3 technology and they hold the patent
rights it. If you want to write programs that encode and/or decode MP3 format, you have
to pay licensing fees. Thomson has set up a website to talk about these issues, if you're
interested. What does this mean for Linux? Well, if you are an advocate of the Open
Source and/or Free Software model that Linux grew out of, MP3 might be seen as a
format to be avoided. Actually, if you think this way, you now have an alternative with
Vorbis' *.ogg format. We'll talk about that shortly. But being that MP3 is so prevalent
nowadays and encoders/decoders do exist for Linux, we'll talk about making and playing
MP3 files.

Let's go back to our "reminder" system. If you go into the /reminders directory we created
(cd reminders) and type:

ls -l *.wav

you'll see that the default quality of a 5 second recording gives us a file of about 1/4
megabyte. If we made the file a little better, as I do when I'm working with sample
sentence for language learning, you doubled the file size to just under half a megabyte
each. To check this, I made one of each format:

-rw-r--r-- 1 mike users 132344 Nov 27 12:11 0intro.wav


-rw-r--r-- 1 mike users 220544 Nov 28 08:37 2001-11-
28_fair.wav
-rw-r--r-- 1 mike users 441044 Nov 28 08:34 2001-11-
28_good.wav

If for some reason you wanted to keep these reminders, files of this size would quickly
begin to take up space. Disk space is cheap, but there's no reason to occupy space if we
can compress it. We could take out our tools gzip or bzip2 that we learned about in a
previous lesson. 'bzip2' will actually get the file down to about half its original size:

-rw-r--r-- 1 mike users 206442 Nov 28 08:34 2001-11-


28_good.wav.bz2

But there is a much better way of doing this, for now, by converting it to MP3 format.
Look what we get for the same file as an MP3:

-rw-r--r-- 1 mike users 80234 Nov 28 08:48 2001-11-


28_good.mp3

You've got it down to about one fifth of its size. And you can hear it right away with an
MP3 decoder/player. Let's show how we did this.

First of all, you need a program that converts *.wav files to MP3 format. There are a few
of these available for Linux. One of these, and probably the most popular, is Tord
Jansson's BladeEnc. He's had some trouble with the MP3 patent holders so, again, we've
stepped into controversy here. How do we avoid bringing patent holders' wrath down
upon ourselves? Well, by going over to Fraunhofer's website and getting a demo of their
MP3 encoder, appropriately called 'mp3enc' (the demo is actually called 'mp3encdemo' -
very logical) we can convert these files in MP3 format. That will at least give us an idea
about how all this works in Linux.

You'll get a *.tgz (Slackware package) compressed file. Just unzip and untar in your
home directory:
tar -zxvpf mp3encdemo.tgz (or whatever the current file is called)

There is a pre-compiled binary (aka - program that works right away) and some
documentation (manual, other README files). There is a section in the manual that says
"For the impatient". Being impatient by nature, I went right to that and found out how to
convert my *.wav files to acceptable quality MP3s. Now, we're lucky that our reminders
aren't very long, because the generous Fraunhofer people have given us a demo that only
encodes 30 second long files. I know what you were thinking. You were going to run
next door and borrow the neighbor's "Greatest Punk Love Songs" and start rippin'. We'll
you're out of luck unless you want to do a medley. At any rate, the Fraunhofer demo will
do nicely for learning purposes. To use the program, just pick one of the reminders and
type:

mp3encdemo -br 128000 -if 2001-[whatever].wav -of 2001-[whatever].mp3

where [whatever] is the date of your reminder. Let's look at these options. -br stands for
bitrate This is 128 kilobits per second and you'll get an acceptable, almost CD quality
file. -if stands for "if it works" - naah - that's only a joke. (I couldn't resist). -if means
input file, that is, the file your inputing or feeding to the encoder. Logically then, -of
means output file, the MP3 file you're going to get. There you have it. Feel free to encode
any files you want. (as long as they're under thirty seconds, of course)

Actually any MP3 encoder for Linux that you can find out there works in basically the
same way. You input a *.wav file with some options and you get an MP3 file. The
program BladeEnc that we mentioned before, behaves similarly and there is no 30 second
limit. (wink, wink, nudge nudge, and the author begins to whistle nervously)

Playing MP3 files

OK. Now we have our MP3 file. That begs the question: How can I hear it? Well, we
need an MP3 decoder and/or player. I say "and/or" because these could be two different
things under the x-window system. Popular graphic MP3 players are actually front-ends
for MP3 decoders. That means they provide a graphic control panel for using a program
that you don't really see. That's why I usually use the command line programs, as I
mentioned earlier. So let's save some CPU power and learn how things work in the
process.

'mpg123' is a very popular command line program for playing MP3 files. It is also highly
versatile. You can create playlists and play songs in alphabetical order or in random
order. You can even play little tricks and create weird disco versions of songs. (no
kidding) You can even "reverse engineer" the MP3 file or even parts of it back to *.wav
format. As far as I have tried, most graphic programs can manipulate playlists and add an
echo effect but can't take full advantage of mpg123's features. You can only do it on the
command line.
Anyway, 'mpg123' comes with most major distributions. If you visit mpg123's home page
you can find out all about it. You can also get source code and RPMs if you don't have it
installed already.

To simply play an MP3 file, enter the directory where the files are and type:

mpg123 your_mp3_file.mp3

Let's say you already have a lot of MP3s. You may have gotten some ... then again, I
don't want to know where you got them. You could random play them

mpg123 -z *.mp3

One of my favorite things to do is to create a playlist. Here's how I do it. This will be
good review practice for the command line as well.

First, I enter a directory where I have MP3s:

cd classical

Then I see what songs I have:

ls *.mp3

Then I pick out some songs that I particularly like and make a file that is going to be my
playlist:

ls -1 Mozart_nightmusic.mp3 > favorites

The command 'ls' with the option '-1' lists the file name without any other information.
The > symbol as you remember from our lesson on pipes, etc. creates a file called
'favorites' and includes the 'ls -1' output in it. To add more songs, we would repeat the
same command, but this time we would (obviously) change the MP3 file name and most
importantly we would change the one > symbol to two >> symbols. This way, we just
add to the playlist file and we don't overwrite the file as would be the case if we didn't use
two >> symbols.

ls -1 Beethoven_fur_elise.mp3 >> favorites

So I'd just keep adding songs until I had a nice playlist. To see the list, you'd just type:

less favorites

If everything is satisfactory, then we can play these songs. Just type:

mpg123 -@ favorites
The email (@) symbol tells mpg123 to look for the playlist. That would play the songs in
the order they are on the list. If you want to play them in random order, you would just
add a -z before the -@ option

More fun with mpg123

Let's say you wanted to play "Name That Tune". Don't laugh! I have done this at parties.
You know, you only play so much of a song and the people have to guess which one it is.
Well, with mpg123, you're all set. This command will only play the first 50 "frames" of a
song:

mpg123 -k 0 -n 50 Mozart_nightmusic.mp3

And you'll have the liveliest parties on your block! All courtesy of Linux and mpg123!
Seriously, the -k option tells the program which frame to start at and then -n option
indicates where it should stop. Pretty easy!

You want more party ideas? Well, how about doing Techno-Mozart? That's easy too. Just
type:

mpg123 -d 2 Mozart_nightmusic.mp3

This will make the program skip over every 2nd frame. That is, it will play a frame and
skip one. This is *not* the Chipmunk effect. You will hear the same tone of voice
because this doesn't effect the sampling rate of the file. It will just sound "techno" as I
pointed out. Even though I mentioned parties and that, I have used this program and this
effect in my language work for purposes of "serious" study. As the rate of the voice is not
altered, you can change the number and see at what point people can't understand
something. By this, you can test the aural skills of a person learning a language. By the
way, you can also do the opposite by changing the -d X option to -h X. Instead of
skipping frames, mpg123 will play the same frame X number of times. Remember, these
options do not produce the "slow-mo" or "Chipmunk" effects. It just slows down the
speed of playback.

As we mentioned before, you can also "reverse engineer" the MP3 file back to a *.wav
format. Remember, before you try this at home, the *.wav format is at least 5 times
bigger, so make sure you've got plenty of hard disk space.

mpg123 -w Mozart_nightmusic.wav Mozart_nightmusic.mp3

You can also use the different options like -d or -h combined with the -k and -n to
produce weird *.wav sound effects files. Your imagination is the limit. If you do want to
do techno-multimedia things with mpg123, you can use the -v option to get complete
information about the track your playing.
Well, after all that is said and done about MP3, I must confess that I don't like working
with MP3s as much as I like working with the new, free (as in beer and source code) Ogg
Vorbis format.

Ogg format
Due to the restrictions on the use of MP3 technology, Ogg Vorbis is a good way to enjoy
digital music in a compressed format. Though it is associated more with the Linux and
Open Source world, both Windows and Macintosh ports of the Ogg libraries are also
available. This is proof of its growing popularity as a digital music format. There are
even companies now using Ogg format for sound in their games. You can read the latest
news on the status of the Ogg Vorbis project at their website.

Installation of the Ogg libraries

First, in order to listen to and make files in Ogg Vorbis format, you should to go over to
the Ogg Vorbis website and download some packages that are needed: libao, libogg and
libvorbis These are the actual libraries that do the compression and decompression of the
sound. The command line software for coding and playing the *.ogg files can be found in
there as well, in a package called Vorbis-Tools. Included in this last package are the
programs oggenc and ogg123. These are designed to work in the same way as the
packages bladeenc and mpg123 in the MP3 world. Their command line options are
essentially the same.

Before you actually visit the site and start downloading, if you have bought a boxed set of
a major Linux distribution recently, you should have these libraries included on the CDs
and be able to install this painlessly with your distribution's installation tools. If you got
your CDs from your cousin Larry with "Redhat" written on them in magic marker, then
feel free to go over and download the RPMs at www.vorbis.com and install them, as you
remember from our lesson on RPMs.

rpm -i libao-[whatever's current].i386.rpm


rpm -i libogg-[whatever's current].i386.rpm
rpm -i libvorbis-[whatever's current].i386.rpm
rpm -i vorbis-tools-[whatever's current].i386.rpm

Note: Don't get the source RPMs (the one with 'src' in the title). You won't need those if
you're running Red Hat or any RPM based distribution (like Mandrake, KRUD etc.).
Also, install in the order I have given you above and do this as the 'root' user

If you've got some other distribution like Slackware that works better with tarballs than
RPMs (or if you are feeling adventurous/masochistic, then get the files ending with
*.tar.gz (the tarballs). Un-zip and un-tar them and read the readme and/or install files
which will instruct you how to get those packages installed and working. I took this from
libogg's own README file:

./configure
make

and optionally (as root):


make install

I guess you get the idea. Now let's see what we can do with these libraries and programs
to get some nice sounding *.ogg files.

My nostalgia project with Ogg Vorbis

To try out the capabilities of Ogg Vorbis and the capabilities of Linux in general for
manipulating sound I decided to convert to *.ogg format some old analog audio
recordings that I had of a "garage" band I was in during the late 70's and early 80's. These
were produced before the first CDs ever appeared on the planet using 8 track reel to reel
equipment in my best friend's basement. Various cassettes were made of the original
recordings and I wanted to preserve them digitally. It also gave me the opportunity to
outline the procedure to use as a tutorial and to cowardly stay outside the realm of
copyright infringement issues. There are, I am sure, people using Linux who grew up in a
time when the letters CD only meant "certificate of deposit" and who listened to vinyl
records and audio cassette tapes. Some might have even listened to 8 track tapes and are
afraid to admit it. If you have stereo equipment that has a turntable and/or audio cassette
player with line-out plugs, this tutorial may also be applied to the possibility of making
copies of records and tapes for yourself, which the law allows, if you own them.

How to digitally enshrine your past delusions of grandeur

Needed:

• One unsuccessful garage band of the 70's


• A cassette of music of rock star wanna-bes
• Audio cassette player with line-out plugs
• Cables to connect the player to your sound card
• optional - Medical insurance (in case you get ill listening to the music)

All sound cards have inputs for your speakers/headphones, a microphone and a line-in
cable (that is, the line-out from stereo equipment). Their function is either color coded
(speakers are usually green, microphone red and line-in blue) or written on the metal
bracket of the sound card. Plug the line-out of the cassette player into the line-in input on
the sound card. Usually, the microphone is the default source for recording. You may
have to fire up the Alsa mixer and change this. Type:

alsamixer

then, using the arrow keys, make your way over to the line-in column and push the space
bar. That should activate your line in as the recording source. It should look like this:
You can also adjust the sound with the up arrow.

Somewhat tarnished bronze oldies

Now, I put my cassette in the player and I was ready to go. I planned on using the wavrec
program I mentioned earlier in this lesson to convert the analog tape audio to *.wav files,
but I discovered a slight problem. I didn't know the length of time the songs took to play.
Being your basically lazy system administrator type, I decided to try a little trick. I
figured that none of them could probably last longer than 5 minutes, so I typed the
following:

wavrec -S -t 300 -s 44100 stairway_to_the_basement.wav

That meant that wavrec would continue to record for 300 seconds (ie 5 minutes). You can
change that for however many seconds that you like. I sure you remember the rest of the
options from earlier parts of the lesson.

My plan consisted in pushing CRL + C when the song came to an end. At first, I was
afraid that would corrupt the data but when I tried it, it worked. The first trial run
sounded fine using wavplay. So I just continued doing this:

wavrec -S -t 300 -s 44100 smoke_on_the_wafer.wav

and pushing CRL + C at the end. Soon I had all my songs converted to *.wav files. Then
came the time to convert them to *.ogg format.

Working with Oggenc

Then I used oggenc to get them this format. Here's an example with one song:
oggenc -b 192 -a "G-rage_Band" -l "Demo Tapes" -t
"no_sympathy_for_the_neighbors"

no_sympathy_for_the_neighbors.wav -n "%a_%t.ogg"

Let's explain some of the options.

• -b stands for bitrate. Anything above 128 will give you good quality. I chose 192
here because this is fairly good quality without being excessively big.
• After the -a option you should put the artist (I use the term loosely in my case) in
quotes.
• The -l option is for the name of the album. We never made an album, so I just put
"demo tapes" as you can see.
• -t stands for track or the name of the song.
• Now, type the name of the song whatever.wav
• -n followed by "%a_%t.ogg" tells the program to name the Ogg file for the
artist(%a) and the track (%t).

You've noticed that I have put underscores_between_words in true Unix filename


fashion. That's a good idea. (Demo Tape excepted - that's not going into the file name)

That should create some files in Ogg format for you. One word of caution. Both MP3 and
Ogg encoding is very CPU intensive. Make sure you're not doing anything that needs a
lot of CPU cycles at the same time. If you're interested in seeing just how CPU intensive
this is, just run the command: top and that will give you an idea.

Once again, if you've got some old tapes or old records and you want to make copies for
yourself, here's a way to do it. There is software available to take the scratchy sounds
from *.wav files made from LPs. There is good explanation of the process at uklinux.net.

Well, enjoy all those old cassettes and LPs and if you were once a neighborhood Rock
and Roller, then try out the Ogg Vorbis tools and take a trip down memory lane.

Compact Disks

I love the scene in the Adam Sandler movie The Wedding Singer where the Yuppie junk
bond trader Glenn Gulia, brings one of the first CD players home to his fiancée; Julia,
played by Drew Barrymore. Gulia exclaims: "It's a CD player- it cost 800 bucks, but the
sound quality is excellent!" I remember those days in 1980's when I heard my first CD
and was amazed - no scratches- no hiss. The CD, as promised, ousted the LP record
forever. Not soon after the release of CDs and CD players, records disappeared from all
but collector's shops. Luckily, CD players didn't stay around 800 US dollars for long.

Soon software companies realized the potential for data storage in these little plastic disks
and the CD-ROM market was born. From about 1992 on the use of CDs in computers
increased exponentially. Now, almost 10 years later, we're not only talking about reading
CDs but writing to them with CD-RW drives that cost under 200 US dollars. A spin-off
of the CD, the DVD (Digital Video Disk) is becoming more and more popular everyday.
Soon we will have affordable drives for home use that write to these disks as well.

Linux has never been behind in supporting these types of media, so we'll show you some
of the utilities out there for playing and ripping tracks from CDs.

Playing CDs

As I pointed out earlier in the lesson on sound, I like to use command line programs to
play CDs. My favorite one and I think the one that's easiest to manage is tcd by Tim
Gerla

You can control which tracks to play, adjust the volume, eject the CD and do other things
all from the keyboard. You can use 'tcd' to keep a database of your CDs for easy playing.
Under X-window, you can fire up this baby in an x-term and enjoy hours of listening
pleasure.

GUI based CD players are plentiful as well, and when you've installed and configured
your X-window system, you can try out those as well.

Ripping CD tracks

The whole Napster phenomenon, as I pointed out at the beginning of this article, made
the practice of converting songs on CDs "ripping as it is also called" very popular. Here
we're going to talk about one of the most widely used programs in the Linux world. The
official position of this author is that ripping tracks from one's own CDs for personal use
is OK by me (and the law, it would seem). For example, ripping your favorite songs and
converting them to Ogg format to make it comfortable to play your favorite songs from
your desktop doesn't entail you venturing into legal gray zones. If you shared them
however, that's a different story. So, if you're interested in ripping tracks from CDs, the
Linux program par excelence for doing that is cdparanoia .

cdparanoia is billed as a ripping tool for CD-drives that could be problematic. It seems
to work fairly well on the variety of speed drives that I have tried except for a couple of
ancient ones. It's available for download from the same people who bring you Ogg
Vorbis. Here's how it works:

Let's say you wanted to rip track (song) 6 from a CD. You would place the CD in the
drive (I have forgotten that on occasion - duh) and type:

cdparanoia -- "6"

The output would look something like this:

cdparanoia III release 9.8 (March 23, 2001)


(C) 2001 Monty and Xiphophorus

Report bugs to paranoia@xiph.org


http://www.xiph.org/paranoia/

Ripping from sector 48423 (track 6 [0:00.00])


to sector 58677 (track 6 [2:16.54])

outputting to cdda.wav

(== PROGRESS == [ > | 050085 00 ] == :-) . ==)

So now you have track 6, called 'cdda.wav' (cdda stands for Compact Disk Digital Audio,
by the way) ready to be converted into your favorite compressed format, like Ogg. Here's
a refresher. To convert your ripped track to Ogg, type this: (change it to your info)

oggenc -b 192 -a "The_Rubber_Band" -l "Gummed Up" -t "shes_elastic"


cdda.wav -n "%a_%t.ogg"

Now you have a nice Ogg file that you can play with ogg123

Other options for ripping tracks with cdparanoia include:

cdparanoia -B

This will rip the whole CD into separate tracks, named track01.cdda.wav,
track02.cdda.wav, track03.cdda.wav etc.

cdparanoia cdparanoia -B -- "-5"


This will rip tracks up to and including track 5 into separate *.wav files. If you want one
big file, just eliminate the -B option. Do not forget to type the double hyphens -- before
track numbers. Just to finish off, here's an interesting combination:

cdparanoia -- "4[:45]-4[2:15]"

The above example will rip track 4 starting at 45 seconds and end at 2 minutes 15
seconds into the same track. Why would you want to do this? A number of reasons - you
only like the awesome lead guitar part of a song? That could be. Anyway, the manual
page (type: man cdparanoia) is a particularly well-explained one, so if you want more
examples, there's a good source of information there.

Well, that concludes our lesson on sound. You should be able to listen to, create and
manipulate sound with Linux.

Getting Started with Linux - Lesson 19


Graphic User Interfaces with Linux
Some preliminary commentary and perspective

As much as I like Linux and think that it is the best operating system out there today,
most people who use computers equate Microsoft with computing. In particular, the only
computing environment that most PC users have ever seen comes in the successive
versions of their flagship operating system Windows(tm). However, computer scientists
and people who have an interest in computers beyond the mere end-user stage know that
graphic user interfaces or desktop environments like Windows really represent the look
and feel of the computer experience, but not the experience itself. Windows has become
famous for essentially blurring the reality of what a computer really does. That is to say
that Microsoft Windows, especially since the release of Windows 95, has masked any
trace of the traditional "black" computer screen experience. It was still there - you just
couldn't see it unless you purposely looked for it.

Bill Gates, chairman of the Microsoft Corporation once stated that: "Linux is 1960's
technology with a new development model". What does he mean by this? I think basically
that he bet his whole company on the assumption that people didn't want to see the
traditional black screen and the command prompt anymore. The sales of Windows 95
proved that with a good marketing campaign he was able to sell the idea that people
didn't want it and people responded. Then Linux started to gain in popularity and be
noticed by a certain segment of the public around 1998-99. The problem was that Linux
offered the black screen and the graphic user interface as a separate package. Bill Gates
had already established that this was a no-no and so Linux gets chalked up as
"retrograde".
Now it's 2002 and Linux still offers the black screen and graphic user interface
separately. But then again, a lot has happened since 1998. For one, IBM has spent 1
billion US dollars on Linux and essentially gotten its investment back. Linux's market
share continues to rise. It still pales in comparison with Microsoft's desktop popularity -
so much so that as most everyone knows, Microsoft was convicted of being a monopoly
in restraint of trade. Then again, in 2000 and 2001 successive email viruses and worms
crippled Windows-based IT departments and brought scores of corporate networks to a
grinding halt. Why? Because we're in a new world of connectivity. Bill Gates' comment
about Linux may be turned back now upon his own company. If you asked your average
Linux enthusiast what he or she thinks of Windows, you might get this reply: "Windows
is pre-Internet technology with a slick new marketing campaign". Microsoft spends most
of its days now fighting security brush fires because in blurring the difference between
the operating system and the graphic user interface it sacrificed security for ease of use.
Windows development model was conceived before everybody's computers where
connected to each other and it continues to reflect that. Linux, however, was born on the
Internet and grew up with it. Unfortunately, more complaints about Linux's perceived
lack of user friendliness outnumber complaints about Windows being essentially a
Maginot Line solution for secure computing. Hopefully in this lesson on graphic user
interfaces under Linux, you'll get a good idea how the balance between user friendliness
and security is a good one with our favorite OS.

The GUI family tree

Without getting into a lot of technical jargon, in order for those nice windows (yes, with a
small 'w') to appear on your computer screen, you have to have some graphics libraries
installed on your computer. These libraries determine how a window is to appear, what it
is supposed to look like and what the buttons and menus are supposed to do. That fact
that you can use GUI based computing under Linux goes back to the time before Linux
was even thought of. In the mid-eighties at the Massachusetts Institute of Technology
they came up with the X window system. By 2002 standards it was a primitive GUI
system to run programs with. The main idea behind this actually came from an earlier
project at Xerox called WIMP (Windows, Icons, Menus, Pointer), a project that
essentially started the idea that computers could be used in an attractive graphical
environment. 1

The 'X Window system' provided the libraries to make the frames, buttons and menus
that make up a window. Development of X Window still continues under the auspices of
the X Consortium. In 1992 the XFree86 Project was started. This aimed to develop a free
version of the X Window System. There have been several versions of XFree86 and the
current stable version at the time of this writing is XFree86 4.0. Though there are other
equivalents to the libraries that XFree86 offers, it is by far the most widely used window
system under Linux. Any attempt at using Linux as a desktop operating system to get
"productive" work done (word processing, spread sheets) or to entertain oneself (play
games, listen to music, watch TV) will start with the installation of XFree86.
With major distributions, the install process takes care of getting XFree86 on to your
system. There are two parts to this. One is installing XFree86 itself. The other is
installing the X server that goes with your particular hardware. The X server is just the
means of getting XFree86 to work with the graphics card that you have in your computer.
For example, if you have a graphics card from ATI, then you would install the XFree
packages along with the X server package for ATI. If you have an S3 card, then XFree86
and the X server for S3 cards should get installed. I explain this because some
distributions do a pretty fine job of getting you up and running, but you may get asked
what graphics card you have when you do a more interactive type of install of Linux. In
this case, you have to know what card you have so the correct X server gets installed and
you can have a graphical environment to look at after the install process is finished.

Recently, major Linux distributions will also offer you the possibility of getting right into
the GUI when you turn on your computer. This is done by way of the program XDM.
This is the Microsoft Windows influence on how things are done that I mentioned before.
Traditionally in Linux, you would turn on your computer and get the black screen and the
command prompt. Then you would type:

startx

and your graphical environment of choice comes up. 'Choice' is the key word here. By
having the command prompt and then issuing a command to start the GUI, you can
switch into any number of desktop environments "on the fly". Of course, if you're not
interested in having more than one, then you can use XDM and have your favorite
desktop there waiting for you.

Regardless of the way you choose to start up your machine, before you see your desktop
utilities of choice, we're going to have to configure XFree86 to use your monitor, mouse
and keyboard. That is, whether you type startx or not, we'll have to come up with a
configuration so we can, in fact start X.
1
The X Window User HOWTO by Ray Brigleb, 1999

X-Window configuration

In Linux days of yore, it used to be quite a task to get X-Window running even on a
standard Intel type PC. Now all of the major distributions have their own tools to get X
running in no time.

SuSE offers a program called Sax. This is about the most user-friendly program I have
yet encountered for X setup. It is graphical, so the simple fact that you can run it before
you've even start configuring X is a good sign.

Mandrake offers their X configuration right in the install package so you go from start to
finish all in the same package.
However, given a situation where your X setup doesn't go smoothly, you can do this step
by step, in text mode, with a program called xf86config. This is a last resort and will
almost always get you good results.

This program asks you questions about your peripheral hardware, like your keyboard,
mouse and monitor. Here are a couple of examples of what it looks like:

The most important questions that this program will ask you about your hardware are the
ones about your monitor. I don't mean to imply that the others are not important. For
example, if you don't answer the type of questions about your mouse correctly, your
mouse won't work. Or if you don't enter the country/language values for your keyboard
layout, you may not be able to use letters or symbols that exist in your native language.
That is obviously important. However, if you don't enter the values correctly for the type
of monitor you have, your monitor can get seriously damaged. If you enter the vertical
and horizontal refresh rates incorrectly, your monitor will become just another useless
piece of plastic and glass, like so many others waiting to be thrown away or recycled. It's
beyond the scope of this lesson to explain what the vertical and horizontal refresh rates
mean (actually, it's the horizontal one that's a real stickler) but trust me - you need to go
get the manuals for your monitor and enter the real values when it asks you. If you don't
believe me, this is what xf86config says
It is VERY IMPORTANT that you do not specify a monitor type with a horizontal sync range that is beyond
the capabilities of your monitor. If in doubt, choose a conservative setting.

At this point in the configuration, you can choose option 11 and enter your own values
from the monitor's manuals and you'll be sure to get the correct settings.

Once you have passed this point, the questions are more straight forward and errors have
less grave consequences.

In the past years, as I mentioned, major Linux distributions have streamlined this process
so you probably won't even need xf86config. But it's nice to know you have it there,
especially if your hardware is proving to be less than cooperative.

To boot or not to boot (in graphics mode), that is the question.

Before we start talking about the different windows managers and desktop environments
that are available for Linux, let's first see how our bare-bones X-Window setup is
working. Some X programs don't need a windows manager to run, so let's try a simple
experiment with one of them. Type this in your terminal window:

xinit /usr/X11R6/bin/xedit

This will fire up a simple text editor called 'xedit'. You can try writing something and
pushing the buttons. When you push 'quit', you'll notice you go back to your standard
terminal. Try the same with an x-terminal:

xinit /usr/X11R6/bin/xterm

Type in a few commands. Then type 'exit'. Your x-term session ends and your back in
your terminal.

There isn't any practical reason to use X-Window in this way. It's better to use its
powerful capabilities with a full-featured windows manager and desktop environment.

Before we go on to talk about choosing a windows manager that suits you, we should talk
about how you want your computer to boot. Do you want it to go directly to a graphical
environment or do you want your machine to boot into text mode where you would then
issue the 'startx' command? If you want graphics mode right away, then you need to have
a program like xdm, which will start your windows manager of choice, or 'kdm' or 'gdm'
which will start KDE or GNOME, two desktop environments that we'll talk about a little
later.

The decision to startup graphically is made when you first install Linux. If you found that
you've changed your mind; that is, you now want to startup graphically or vice-versa, you
can usually change this with your distribution's tools.
You can change the start-up behavior by going to your /etc/ directory and changing a file.
The file name will depend on your distribution. With SuSE, for example, it is the file
called rc.config. You should change the line:

DISPLAYMANAGER=""

to:

DISPLAYMANAGER="xdm"

You may also use 'kdm' or 'gdm' here. Make sure that your CHECK_INITTAB setting is
"yes"

In the case of RedHat and RedHat based distributions (Mandrake, KRUD), you'll need to
change the file /etc/inittab. In the line: id:3:initdefault:, the number 3 needs to
be changed to a 5

As I mentioned, if you want to do just the opposite, change the default graphical login to
a text mode login (something which I recommend), just reverse all those changes above.
If you decided not to use a graphical login, you may want to un-install 'xdm' (or
gdm/kdm).

Well, now that we're clear on whether to use a graphical start-up or not, let's explore
some of the possibilities for your Linux desktop.

Choosing the look that's right for you

In recent years, as Linux has become more popular, members of Linux community have
tried hard to shake off the reputation, which I feel has always been unwarranted, that the
graphical user interface for Linux is at best, boring and at worst, unmanageable. This is
based on, of course, comparisons with the user friendliness of the omnipresent MS
Windows and the well-deserved good reputation of the Macintosh OSes. After using
Windows 95 from 1995 until the end of 1997 and testing various Mac OSes extensively
(at one point using Mac OS 8 exclusively for one month - I was staying with relatives and
needed to get some work done), I can safely say that Linux doesn't and probably hasn't
had a reason to envy the other two major OS offerings in terms of graphic interfaces since
about 1998. Graphic user interfaces under Linux are comparable with these other ones in
just about everything and even enjoy some advantages. The major one over MS Windows
is, of course, stability and security. The advantage over Macintosh is primarily cost
related.

If you're reading this, then you've probably made the decision to try Linux. Before we
talk about what your Linux desktop is going to look like, we should first talk about the
difference between a window manager and a desktop environment.
Window managers

Most programs made for computers nowadays run in a graphic environment. However, it
became apparent that these programs would be more efficient if they could take their
attributes from a common source. This is what a window manager does. It decides how
the window is going to look, the aspect of its buttons and frames. It determines how it is
going to reacted when you click in it or you reduce it or re-size it.

There are more than two dozen different window managers available for Linux. The more
popular ones make their way onto Linux distributions. They range from completely
minimalist to well-engineered works of art. Here is a list of the ones that generally find
their way onto the major distributions' CDs.

• the fvwm family


• Blackbox
• IceWM
• Sawfish
• Enlightenment
• WindowMaker
• AfterStep

You can check out the above sites and find one that you like. The first one, FVWM, is
my personal favorite. It is also the most minimalist of the one's I've listed here. This is, as
far as I know, the oldest of the aforementioned as well. This is not meant to be an
endorsement of this window manager. I just happen to like its minimalist approach and
low memory requirements. I'd rather pass that RAM savings on to the really important
applications running on my computer.

I have provided a screenshot (153k) of the my view on the world of Linux. * I have a
menu item that links to a script that will place a new picture as the desktop image when I
get bored of the one I've been seeing for a couple of days (or hours, depending on my
threshold of boredom at the moment).

I have fun tweaking the configuration file. I think the main reason that a lot of people
prefer other windows managers to fvwm2 is that the file that sets up your desktop menus
and buttons and other things has to be worked on by hand. They really prefer the click-as-
you-go configuration of other window managers. I happen to like experimenting and I am
prone to change it once a month or so (depending on that threshold of boredom factor
again). Fvwm2 is so configurable that if you got 5 different configuration files, known as
.fvwm2rc, off the Internet and tried them out, you would swear that you're seeing 5
different window managers.

You can check out the .fvwm2rc file behind the above screenshot. I'd like to
acknowledge that the main file was written by Jay Kuri. Thanks Jay, wherever you are. I
also included some tweaks that I got here and there. The main buttons you see are from
Eric S. Raymond's (author of The Cathedral and the Bazaar) .fvwm2rc and modified
slightly.

Of course, everyone is not into tweaking and prefer a more "clickable" configuration.
Peruse the offerings out there and choose one that suits your needs. You may also want to
hold of on the window managers for a bit and read the next section. We talk about
desktop environments, the ultimate user-friendly GUI experience for Linux.

*
There's a neat application called gkrellm that keeps track of a lot of things that are going on with the
system besides displaying the time and date. MS Windows users should take note of the uptime (last time
of reboot) of 27 days, 21 hours. We had a power blackout that lasted about 3 hours while a transformer in
my neighborhood was being fixed. Previous uptime was 31 days. I don't remember what happened 31 days
before that.

Protecting the environment

Most computer users like to have a set of tools that they always see - things like a clock, a
region that displays the date, a button that displays a menu with the programs available
for you to use. People have become accustomed to an icon system that sits on a "desktop"
that allows you, with a click of your mouse, to have your favorite program up and
running or open a web browser to your favorite website. This usually goes beyond the
call of duty for a window manager. In these cases you need the services of a "desktop
environment". This is a uniform looking desktop interface which sits on top of and uses
the services of a window manager. There are two major desktop environments, GNOME,
which uses the services of independent window managers (at the time of this writing
GNOME runs with Enlightenment) or KDE, which has its own background window
manager, known as kwm

GNOME or KDE

The question: 'Should I use GNOME or KDE?' was a controversial one not so long ago.
Luckily, now, it is just a matter of which interface you like more. The controversy
stemmed around the KDE project which was founded in 1996 with the goal of creating a
uniform desktop experience for Linux. KDE made the decision to use libraries to create
the desktop interface which were not open source. The libraries in question, known as
'QT' are now open source, so the question is pretty much moot. However, at the time, the
issue inspired a young Mexican developer named Miguel de Icaza to create a desktop
interface known as GNOME.

GNOME was founded in August of 1997 and was an attempt to create a uniform desktop
manager that was totally compliant with the GNU's General Public License, avoiding the
licensing issues involved in the case of KDE's using the QT libraries. Miguel de Icaza
and Nat Friedman founded Helix Code in 1999 to oversee the business end of developing
the GNOME desktop. Helix Code later changed its name to Ximian.
What GNOME and KDE can offer

Both of these desktop environments offer a Microsoft Windows-like experience. To date,


KDE is the only one of the two to offer an office suite for word processing and its own
web browser. Other than that, both offer top-rate productivity applications like email
clients, agenda and scheduling software and address books. They offer multi-media
software for playing CDs, MP3s and other music formats. Both offer a large selection of
games in addition to other sundry applications for system monitoring and other
miscellaneous tasks.

Where to get these desktop environments

Most distributions come with both the GNOME and KDE desktop environments.
However, if your distribution did not have this or you are reading this and have not yet
installed Linux, you may want to check out both offerings.

• KDE homepage
• Ximian Inc.

You can also download the latest versions from their homepages.

Popular, useful and important programs that run in X-


Window
At this point you've chosen your window manager and/or desktop environment.
Regardless of the "look" you've chosen, you have to have programs to run. You need
applications to surf the Internet, write email, manage your files, write letters and a
thousand other things you want to do. The rumors you hear about Linux lacking
applications or not being able to "make it on the desktop" are false. There is no major
application that a computer user needs that Linux lacks.

Internet/WWW Browsers

Firefox

Firefox is the most popular open source browser. It is available not only for Linux, but
for the other major OS platforms. It is based on Mozilla, which is an open source re-write
of the famous Netscape Navigator.

Opera

Billed as the "fastest browser", Opera Software of Norway released their first version of
Opera for Linux in March of 2000. These early versions were not stable but the company
kept working and slowly added features to their Linux versions. Though the Linux
version doesn't offer all of the features of their Windows version, it offers most of them.
Though an ad-supported version is available free of charge, Opera is a proprietary
product and its source code is not freely available.

Konqueror

Konqueror, part of the KDE project, is a file manager and Internet browser wrapped up
into one. You can surf the net and manage your files at the same time. With each
subsequent version, new, powerful features are added. Since it forms part of KDE, you
need to the desktop environment installed to run Konqueror.

Now, let's look at some popular email clients available for Linux

Email clients
The program you use to get, write and send your email is often referred to as a "client".
This is to distinguish it from the programs that sit on servers that receive and process
emails either sent to or sent from you. Email has become so important in our everyday
life that I have observed that advocating one email client over another often takes on a
fervor usually associated with religious beliefs. Here we'll look at some of the major
email clients for Linux.

Evolution

Ximian's Evolution, part of the GNOME desktop project has received a lot of press
lately. It is shaping up to be the only serious challenger to Microsoft Outlook's
domination of the groupware scene. Seeing that it has all the features of Outlook, sans the
virus problem, then you can see why it's getting some notice. If you're looking for a good
email client that comes with scheduling tools, task management, address books and all
those things that the busy yet organized person needs, than Ximian is probably the thing
for you.

Kmail

Kmail is KDE's major email client. It is not a complete groupware solution like Ximian's
Evolution, but its email management capabilities are very powerful. There is support for
all major types of email transport, intricate configuration of mail filters, complete support
for HTML formatted mail and other useful features.

Sylpheed

Japanese developer Hiroyuki Yamamoto has developed this fast, easy to use full-featured
email client. This client is a big hit with developers as it offers really nice threading (the
ability to keep track of all mails based on one original mail) and a fairly good way of
managing different email accounts. If you have to respond to mail in different capacities
(boss, friend, worker), Sylpheed offers the tools to do this all in one client.

Mutt

One of the most famous quotes in the Linux world is the one found at the top of the home
page for Mutt: All mail clients suck. This one just sucks less.. This was said by Michael
Elkins, who developed this email client. A lot of people will probably point out, and
rightly so, that Mutt doesn't have a graphic user interface. That is true. However, this
client is so popular in the Linux world that I just had to include it here. If you are a
newcomer to Linux, you may not want to use Mutt just yet. Using it efficiently requires a
well-written .muttrc file. This is the main configuration file that determines how Mutt is
going to work. However, if you get used to Mutt, you are probably not going to ever
switch. It's lack of a pretty interface is more than made up for by the ability you have to
configure Mutt. After you have some months behind you working with it, emails will
practically write themselves. If you handle a lot of email, this is the client you probably
want to at least look into.

Office suites, word processors and spreadsheets


StarOffice

StarOffice is a complete, full-featured office suite on the idea of Microsoft Office. It


comes complete with word processor (of course), spreadsheet, database interfacing,
presentation software plus it offers web browsing and email and a few other features.
Originally developed by StarDivision, StarOffice was acquired by Sun Microsystems in
1999. The current stable version of this suite is 5.2 at the time of this writing. However,
Sun has announced that they plan to charge for downloads of StarOffice version 6.

KOffice

KOffice is the KDE Project's offering for desktop productivity. It includes all of the
standard office suite applications. The software is offered free of charge.

VistaSource's Anywhere Desktop for Linux

This suite was formerly known as ApplixWare. Once again, all the standard office suite
tool are offered here. This one boasts a Microsoft Office look and feel. This is not a free
product. It cost 99 US dollars at the time of this writing.

Siag Office

Don't let a name like Pathetic Writer dissuade you from checking out this office suite for
Linux. The word processor part of the suite can open Microsoft Word format (*.doc)
files. The project started with the Scheme in a grid spreadsheet. Now you know why it's
called Siag. Another free offering in the office category.

HancomOffice for Linux

Hancom Linux of Korea has developed this commercial full-featured office suite for
Linux. Provides compatibility with Microsoft Office formats and smooth integrating into
the KDE desktop. An evaluation version is available for download, but the software must
be purchased in order to continue to use it.

GNOME Office

GNOME office should actually appear in quotes, because this is not an office suite in the
classic sense, but a set of applications that are often associated with office suites, as a
package deal, so to speak. Some of the high-lights include:

• Gnumeric, a spreadsheet application


• AbiWord, a word processor (it even runs under Windows and MacOS)
• Gnucash, a personal finance manager
• GNOME-DB, database connectivity software

If you download the Ximian Desktop, you'll get these applications plus the other
productivity tools associated with the GNOME project.

Little goodies to improve your quality of life


(aka: those little apps you'd rather not live without)

Music

When I got broadband Internet access, my life changed forever. No more paying for dial-
ups on a hourly basis. No more painful downloads of software. But what's more
important than all of this is that I could now listen to radio! So what, you say. Well, I live
more than 6,000 miles from the place where I grew up, so when I could finally listen to a
radio station from the city where I was born as easily as my mother (who still lives there)
can switch on the radio, I was delighted. RealAudio player for Linux is just one of those
little apps I'd rather not live without.

RealPlayer

I can't help but make an editorial comment here about this application. This for me
represents more than just a way of listening to your favorite on-line radio station or
viewing the BBC World Service broadcast. RealPlayer represents the difference between
stations having a choice to "webcast" freely or having to kow-tow to Microsoft. It looks
like Gates and Co. plans on dominating the on-line music/information industry. Real
Networks is at this point the only thing preventing them from doing it.

Now that I've finished my editorializing, you can go get RealPlayer for Linux and install
it and start listening to web broadcasts.

XMMS

XMMS stands for the X multi-media system. If you're familiar with WinAmp, you'll have
no trouble getting used to this program. You can listen to your favorite MP3s plus files in
the newly emerging free Ogg Vorbis format.

Image viewing and editing

The GIMP

GIMP stands for GNU Image Manipulation Program. It should never be associated with
the English word meaning lame. Gimp also has another meaning, according to the
dictionary I consulted: Smart; spruce; trim; nice. That's a better description. This is a full
fledged image creating and re-touching application. You can apply all sorts of filters and
even write scripts for doing things to the images automatically. If you work a lot with
images and think that by switching to Linux you'll be unable to work efficiently with
graphics, then check out The GIMP. You'll be pleasantly surprised.

xv

In the words of the its author, John Bradley, xv doesn't stand for anything. I use this
program all the time, literally. It is what I use to display the image in my desktop
window.

type this:

xv -root -max -quit your_favorite_pic.jpg


and xv will display your favorite picture as the pic on your desktop. Sometimes I get
bored and I use this script to rotate my favorite pictures.
#!/bin/sh

for i in `ls /home/mike/rotation_bkg/*.jpg`

do

xv -root -max -quit $i


sleep 300
done
If you're looking for heavy duty image software, xv is not it, however. This is the author's
own words:
Basically, xv's primary thrust has always been displaying images (in
many formats) quickly and nicely on a wide variety of display hardware.
That pretty much sums it up. xv is distributed as shareware.

ImageMagick

ImageMagick is a suite of tools for displaying and manipulating images. It's not as
powerful (in my opinion) as The GIMP but more powerful than xv. I use it for three basic
things. The 'display' tool I use to tell my email client open images that people send me in
emails. Another one I use a lot is the thumbnail generator. If you've got a lot of images in
a directory and you want to have an inventory of all of them as one image, then you
would type:

display 'vid:*.jpg'

This creates one image of all of the jpg images as thumbnails in the directory you're in.
This takes up a lot of CPU power on even a fairly powerful machine, so be patient. If
you've got a lot of images in a directory and a slow machine, you might want to consider
doing them in small batches.

This next use of ImageMagick is my two-year-old's favorite. I have some pictures of him
in a directory and I type:

animate *.jpg

This starts up a slide show of him at blinding speed and he gets a big kick out of it. If you
want to get the images rotating at a more manageable speed, just use the shift > keys or
click with the right mouse button to call up the menu.

Text editors and viewers

Sometimes you don't want to fire up a whole office suite to read some text file and
sometimes you have to create and/or edit documents as plain text. If you wanted, for
example, to modify my image rotation script above, you would open up a text editor.
There are two that I use on two different occasions.

Emacs

There is a version of Emacs if your not using X-window and then there's XEmacs, a
version expressly written for X-window. I refer to the x-window version of Emacs, which
is like the console version, but has clickable menus and windows and everything you
need to work in a graphical environment. Richard Stallman, founder of the GNU project,
first started working on Emacs in 1974. It has since then become the flagship application
of the GNU project. It is truly the perfect application to be the one associated with the
GNU. It is a Swiss Army Knife of editors. To call it an 'editor' is to insult it somewhat. It
does a little bit of everything. To me, it's almost like a mini-operating system in and of
itself. If you're a programmer, Emacs is essential for working. If I could not use Emacs
for some reason, I would probably go off and herd sheep. (and if you think I'm joking,
ask my wife). Even for non-programming tasks I use it. The entire Linux Online
beginners' course (yes, the words you are reading right now) were written in their entirety
using Emacs. That day in 1974 when Richard Stallman sat down and started development
of Emacs is a great day in history.

xedit

xedit is a basic text viewer/editor for X-window. It was one of the first applications. It is
not slick or fancy, but there is one thing I like very much about it. The ability to fire it up
from an xterm with a couple of preferences of mine. Reading fairly long things on a
computer is not one of my favorite activities. My eyes don't seem to like it either. With
xedit, you can specify a readable font and some good eye-friendly colors when you start
it up.

xedit -bg seagreen -fg navajowhite -fn 9x15*bold some_text_file.txt &

As we're on the topic of basic X-Window applications, you can use xcolors to get a
background and foreground combination that suits your eyes. Use the right mouse button
to select a font color and the middle button to select the background.

If you want to select colors (for example, for web page work) and you've got the
GNOME desktop installed, you can use GNOME Color Browser. It's easier to manage
that xcolors and has a nice grab feature to select colors from other places and get their
values/names.

Miscellaneous Programs

root-tail

tail is a console application that is normally used for monitoring files that change
constantly, like log files. root-tail can be used to display these files on your desktop while
you're running X-window. I normally use this to remember important stuff. It really
comes in handy. First, you should create a text file with your favorite editor. Call it
'reminders'. Then on each line, write something that you want to remember. Then, you
run root-tail. It's best to do this with a few options. For example, this is how I run it:

root-tail -color yellow -font 12x24 -shade -g +10+100 $HOME/reminders &


Let's explain some of these options. First, after '-color' you should use the name of the
color you want the text to appear in. Use xcolors to find a color you like that's supported
by your system. The next one is '-font'. As you see, I've chosen a good sized one. '-shade'
will give the text a little shade under it and will look snazzier. '-g' stands for 'geometry' or
the location in the window. I use +10+100 which set it right in front of me. You can
experiment with settings. Now you have no excuse for forgetting to buy your loved ones
presents on their birthdays!

gkrellm
This is nice little application to monitor what's going on with your computer. You can
keep track of you memory usage, swap space, how much bandwidth you're using through
your ethernet card and much, much more. You can see it in this screenshot. It's running
on the upper right side of my desktop. It's useful as a way to alert you to how many
clueless Windows users there are. Invariably, when some Sircam provoked mail comes
through, the 'eth0' monitor, which checks bandwidth usage will start rising for no
apparent reason. If you do conversions of audio to MP3 or Ogg format, you can watch
your CPU usage go off the scale when you do them. Place your mouse over gkrellm and
press F1 to configure other monitors. There are also plug-ins and themes/skins available.

Xchat

xchat is a comfortable IRC (Internet Relay Chat) client. It's very easy to configure to your
liking. There is the possibility to use Python and Perl scripts to automate some things you
do.

A lot of programs to choose from

There are thousands of programs for Linux in our applications section. Have a look and
we're sure you'll find the right programs to suit your needs

Tips and Tricks for X-Window


.xinitrc

This is a file you'll find in your user directory. You can use it to start programs
automatically when you start X-window. Open the file with vi or the text editor of your
choosing. Then, for example, add:

xclock -bg wheat -geometry 100x100+1+1 &

-bg sets the background color and the -geometry setting I have used here gives you a
fairly small, but not too small clock in the upper left hand corner of your desktop. You
can type: man xclock to see more options. Experiment with options first before you put
your definitive xclock settings in your .xinitrc file. Just type your settings into an xterm
and try different ones. Type: killall xclock to shut off the clock each time.

.Xdefaults file

There's another file in your user directory called .Xdefaults. You can use this file to
change the way some of your X-window applications look. It's fun to try out different
styles and get some settings that please your eye. Before you try to do this however, make
a backup. Type:

cp .Xdefaults .Xdefaults_good
because there is always some danger of making some applications non-operable because
you have left spaces where you shouldn't. It is important when you change settings that
you leave no trailing spaces. Most major distributions provide a working .Xdefaults file.
It's best to leave what you find there, but you're free to add stuff to it.

As an example, let's change the look of emacs, for example.

First, open up the file with Vi or any text editor your prefer. Add this to it:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! emacs changes [date]

emacs*Background: DarkCyan
emacs*Foreground: Khaki
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Let's explain what we've done here. First, the exclamation point (!) in this file is used to
make comments. The two rows of exclamation points I've used to show where my emacs
section begins and ends. Then I use two to comment that I am changing emacs and I have
included [date] where I would put the actual date to show when I made the changes.
You don't have to do this. It's just something extra to remind me when I made the
changes. Then we make the actual changes.

With: emacs*background: DarkCyan we can change the background of the application's


menu bar and frame. You can use any color you like that the system supports.

With: emacs*Foreground: Khaki we've changed the color of the words in the menu.

To make the changes take effect, you have to issue this command in an xterm:

xrdb -merge $HOME/.Xdefaults


This will restart the x-server database and log in your changes. If you don't do this, X-
window keeps your old .Xdefaults in memory and you won't see anything new. Restart
emacs and you should see your new colors. If emacs doesn't come up, you may have left
some trailing white space. If that is the case, just type emacs in an xterm and an error
message should appear saying something like: Warning: Color name "khaki " is
not defined or similar. If you see a space before the second quotation mark, then you've
got whitespace in your .Xdefaults file that needs to be eliminated.

As you get more adept at changing things, you'll make your desktop more to your liking.

xwininfo

If you're interested in seeing a bit of information about certain programs running, you can
type xwininfo into a terminal and then click on any window. For example, I had another
xterm open and I clicked on it and got this info:
xwininfo: Window id: 0x2c0000e "xterm"

Absolute upper-left X: 211


Absolute upper-left Y: 132
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 581
Height: 340
Depth: 16
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +211+132 -8+132 -8-128 +211-128
-geometry 80x24-3+109
This comes in handy especially to find suitable '-geometry' settings for use in starting up
applications and including them in the .xinitrc file.

xset

This is a command line utility to control things like your mouse, keyboard, monitor and
pc speaker. Both GNOME and KDE have other graphic apps to do this stuff a lot easier,
so I find myself using this less and less. But you can try it out. For example, type: xset b
off to stop your computer from beeping at it. And to turn it back on? You guessed it:
xset b on. You can also change the tone by typing something like: xset b 30 550 300
The first number is for volume, the second pitch and the third duration of the beep.

xsetroot

In a previous section, we told you how to use xv to put your favorite picture on your
desktop. If you get tired of pictures and you want something plain, you can use xsetroot
to just put a color scheme on the desktop. For example, typing: xsetroot -solid
seagreen will get you a solid dark green color as a background. This one is soothing to
the eyes. It's the same color used on pool and card tables. Of course, you're free to use the
color you like! Type: man xsetroot to see other options.

More X-Window Tips and Tricks


Starting X on other virtual terminals

With Linux, you are not limited to starting X-window only once. You may open up
another virtual terminal and start another instance of X-window. Remember though that
running two instances will use up a lot of memory.
As we saw in previous lessons, to switch to another virtual terminal, press:

CTRL + ALT + F2 (or F3 up to F6)

Then login as another user and type:

startx -- :1

You can switch between instances of X-Window by typing:

CTRL + ALT + F7 and


CTRL + ALT + F8

Using the X-Window programs from another computer

This is the thing I love to show people from the MS Windows world. I point to the
computer across the room and then say: "Now I am going to start the browser from that
system and make it appear here." You don't need to be David Copperfield to perform this
magic. You only need X-window running on one and installed on the other. You also
need a means of logging in to the other computer. And here's one more thing. The
computer doesn't even need to be in the same room. It can be in a different room in a
different building on a different continent. Providing your bandwidth is good enough, you
can start a program on a computer 5000 kilometers away and use it on your desktop.

There are two ways to do this. One is not secure and probably should only be used on a
local network, if at all. The second one is very secure and can be used for trans-oceanic
X-window sessions.

If you have the remote login device telnet and the telnet server installed on the machines,
you can use this fairly safely in a local network. For example, if your workstation is
called 'amos' and the other machine is called 'andy' and you want to use a program on
'andy', sitting at 'amos', you would type:

xhost +andy

Then with telnet, login into 'amos' (telnet> open amos)

Then, type:

DISPLAY=amos:0.0
then
export DISPLAY

Now you can type the name of any program you want to run that you know is on 'andy'.
Remember though, as I mentioned, telnet is insecure. This are better ways of doing this.
You should never do this if you're working over a public network, like the Internet.
Remote X sessions with OpenSSH

Open SSH stands for Open Secure Shell. That's just what it is. A secure shell for logging
in at other computers in a secure manner. What goes over the network is encrypted and
your security is not compromised. Most major distributions will offer this and it is
normally installed by default. You may have to specifically install the OpenSSH server
which you need to have to for this to work on your local network. Using X on another
machine, also known as X forwarding is usually disabled by default so you may have to
edit one file to get this to work locally. If you're doing this across oceans or continents
the configuration will depend on the remote machine. As long as you have a OpenSSH
client and an account on the other machine, you can do this.

As I mentioned, if you want to do this locally. Here's what you have to do. Let's use our
'amos' and 'andy' example again. You're sitting at your workstation called 'amos'. Make
sure you have OpenSSH server on installed on 'andy' and have created a user account
there. On 'andy' you need to login as 'root' and make sure that there is a line in a file
called 'sshd_config', usually located in /etc/ssh that says X11Forwarding yes. If this says
X11Forwarding no than you need to change it to yes. Then you need to restart the
OpenSSH server. The easiest way is to look for its PID by typing: ps ax | grep sshd
and killing it's PID number. Then type: sshd to start the server again.

Then, from 'amos' just connect to 'andy' via SSH, like so:

ssh -l [yourusername] andy


you'll be asked for your password. You log in and then you can run the X application that
you want. It will come up on your desktop on 'amos' courtesy of 'andy'.

A final word about X-window


The GUI applications for Linux are always changing, evolving and adapting to user
needs. Linux has come a long way in the past few years. It is becoming a serious threat to
the dominance of Microsoft Windows not only in the server market but on the desktop as
well. The important work done by the people in the GNOME and KDE projects as well
as other those carrying out development of other window managers and XFree86 show
the level of commitment there is to getting Linux on the desktops of the worlds
computers in offices and homes.

In this lesson we've given you a number of addresses of web pages of these types of
projects. The best thing to do to support these efforts is to check back on these projects
from time to time, install the latest version and talk to your friends about how good you
think they are. Also, contact the developers or join the mailing list for that particular
project and provide feedback, both positive and negative, about the software you've tried.
That's essentially what the Linux movement is all about. You can also volunteer to do
some work. You don't have to be a programmer to make a vital contribution. You can
translate the documentation or the graphic interface to your native language, for example.
In the end, any form of collaboration is good. That's how Linux grew into the major
operating system that it is and that's essentially what the Linux movement is all about.

Getting Started with Linux - Lesson 20


The end of the beginning
This is the end of Getting Started with Linux, our beginner's introduction to this operating
system. What we have intended to do is take you from the point where you've got some
Linux CDs and a computer in front of you without Linux in it to where you've installed
and and you're using it productively. This means that you're using it to maintain files,
write documents , manage data, keep figures straight with a spreadsheet, surf the web,
write email, chat with friends. At the same time you're listening to your favorite music in
either MP3 or Ogg format, on a CD or streaming over RealAudio.

The fact is that there is an endless amount of things that you can do with Linux. Our aim
here was to give you the basics. Now it's up to you to explore- to try expanding on the
things that you've learned here. In the end, the point is to learn and to have a little fun in
the process.

Where do you go from here?

At this time we're working on our Intermediate Linux Course. This course, which is still
in development, will take you from the beginner level to the point where you feel very
comfortable with Linux. Our aim is not to make professional systems administrators out
of those who follow the course, but to make you independent enough with your Linux
machine that you don't need to seek outside help as frequently as a novice does to solve
the occasional problems that arise. Here are a few of the topics that we'll be covering in
the next course.

• general system administration


• security alerts
• Linux kernel compiling and installation of new kernels
• automating services and tasks
• use of Bash and Perl scripts
• firewalls
• setting up a web server with Apache
• setting up a mail server with sendmail
• Samba for Windows file sharing
• Professional databases MySQL and PostgreSQL
• Linux for the small business

If you are a registered user, we'll keep you posted on updates as to the availability of the
Intermediate Linux Course. If you're not registered, all you have to do is sign up and
you'll receive our newsletter with updates.
Please, feel free to send us suggestions and comments through our webmaster

You might also like