Linux Questions and Answers

Preparing Today for Linux Tomorrow

 

Linux Questions and Answers

A Linux White Paper

Preface

For someone new (and even not so new) to Linux® , there are hundreds of questions,

problems and concerns that arise during the learning process, especially for someone coming

from the world of Microsoft® Windows® . Other Linux white papers deal with individual topics,

often in lengthy fashion. This paper addresses a number of miscellaneous questions, both

frequently- and rarely-asked, grouped by topic. The focus will be on helping Windows users

make the transition to Linux, but those converting from other operating systems should find

useful information here as well.

Note: Because of the differences between Linux “distributions” from various vendors, some of

the information below may apply to one distribution but not another. This will be pointed out

where known; however, with all the available distributions it is impossible to identify all such

situations here. If the problem is that a command or program described doesn’t exist in a

given distribution, it is generally possible to download a copy of that program from a Web site,

if needed. On the other hand, there may be a functionally similar utility already provided with

that distribution. To find out, consult the user’s manual or contact the distribution vendor. If all

else fails, there is a list of Web sites in the Miscellaneous section, below, that may be of

assistance.

For general terminology questions, please refer to the white paper entitled A Brief Linux

Glossary for Windows Users, available from the same sources as this paper.

Special Note: If you are reading this document online with Adobe Acrobat Reader, simply

click on the Web addresses highlighted in blue to go to those Web sites via your Web

browser.

Preparing Today for Linux Tomorrow

2

Contents

Preface.................................................................................................................................................... 1

Installation.............................................................................................................................................. 5

Q. During installation Linux creates a swap space partition. Why do I need this and how is it

different from a Windows swap file? ................................................................................................. 5

Q. During installation, I have a choice of creating swap space in a Primary or an Extended

partition. Which should I choose?..................................................................................................... 5

Q. How large a swap partition should I create? ................................................................................ 5

Q. How can I speed up performance by using multiple swap partitions?......................................... 6

Q. How can I create multiple swap partitions on one or more drives? ............................................. 7

Q. How do I create a swap file in an existing Linux data partition? .................................................. 9

Q. I already have a large swap file in my Windows partition. Is there a way for Linux to use that

swap space instead of creating another file?.................................................................................. 10

Q. If I install Linux on an IBM® ThinkPad® with a TrackPoint® II or III pointer, what kind of mouse

should I select? ............................................................................................................................... 11

Migration from Windows..................................................................................................................... 11

Q. How do I get Netscape for Linux to recognize my Netscape for Windows bookmark file?........ 11

Q. Are there any Linux programs that will read and write Microsoft Office files? ........................... 12

Configuration & Setup ........................................................................................................................ 12

Q. How do I get my “winmodem” to work with Linux?..................................................................... 12

Q. How can I tell how much memory Linux is using? ..................................................................... 13

Q. If Linux is not using all the memory I have installed, how do I make it use the rest? ................ 13

Q. I have a printer attached to the parallel port. What is this port called in Linux? ........................ 13

Q. I have a device attached to a serial port. What is this port called in Linux? .............................. 13

Q. What is my floppy drive called in Linux? .................................................................................... 14

Q. Wait a minute! Are you saying that there are no drive letters in Linux?..................................... 14

Q. What about disk drive partitions? Don’t they have drive letters either?..................................... 15

Q. Wow, that’s confusing! Isn’t there a simpler way to access drives? .......................................... 15

Q. Is there an easy way to see what devices, such as drives, have been mounted? .................... 15

Q. Is there any way to change the default language used by the operating system and

applications? ................................................................................................................................... 15

General Usage ..................................................................................................................................... 16

Q. How do I format a floppy (diskette)? .......................................................................................... 16

Q. Is there online documentation for most programs? ................................................................... 17

Q. How do I kill a program that has locked up? .............................................................................. 17

Q. Is there a way to increase the priority of a program to make it run faster?................................ 18

Q. Is there a spelling checker that I can use outside of a word processor? ................................... 18

GUI/Desktop ......................................................................................................................................... 19

Preparing Today for Linux Tomorrow

3

Q. My copy of Linux came with KDE and Gnome. Why do I need both? ....................................... 19

Q. I have both KDE and Gnome installed. How do I switch between them?.................................. 19

Q. Can I add more desktop themes to use with Gnome and KDE? ............................................... 19

Q. How can I add programs to the Panel?...................................................................................... 20

Q. What is a virtual desktop? .......................................................................................................... 20

Q. You said I could have eight virtual desktops, but I see only four. Where are the rest?............. 20

Q. Is it possible to share a program across multiple virtual desktops?........................................... 21

Q. How can I change my desktop background color? .................................................................... 21

Q. Is there a faster way to copy/cut & paste text than to use the pull-down menu?....................... 21

Command Shell ................................................................................................................................... 21

Q. If I want to issue a command, how do I open a command prompt? .......................................... 21

Q. What are the Linux equivalents to DOS/Windows commands? ................................................ 22

Q. How do I get help for command parameters?............................................................................ 23

Q. How do I repeat a command? .................................................................................................... 23

Q. What can I do if I don’t remember the name of a command I need?......................................... 24

Q. I just used a command and got completely different results from the last time I used it. Why? 25

Q. Long pathnames are a pain to type in. Is there any sort of shortcut I can use? ........................ 25

Q. Is there a way to use one command to start more than one program at a time? ...................... 25

Q. Is there a way to stack commands and have them execute concurrently in other command

sessions? ........................................................................................................................................ 26

Logging In/Logging Out/Shutting Down ........................................................................................... 27

Q. I can’t seem to log in, even though I’m using the correct password. What’s wrong? ................ 27

Q. Why do I need to use Shutdown? Can’t I just turn the power off?............................................. 27

Q. I can find a Logout option, but where is Shutdown? .................................................................. 27

Q. Is there a faster way to “warm-boot” the system than using Shutdown?................................... 28

Q. Do I have to use Shutdown if I am just turning over the system to another user? .................... 28

Q. I clicked on Logout and now the session is locked up. How do I log out?................................. 28

Q. How can I enable Linux to automatically restart applications that are running when I use

Shutdown or Logout?...................................................................................................................... 28

Files and Directories ........................................................................................................................... 28

Q. What is the root directory? ......................................................................................................... 28

Q. Can you explain more how the directory structure of Linux works? .......................................... 29

Q. There are a number of directories I don’t recognize in the root directory. What are they?........ 30

Q. Is there a command line shortcut to the login directory? ........................................................... 30

Q. Some filenames are preceded by a dot. What does this mean? .............................................. 30

Q. When I look at a list of files and directories, the names are followed by something like -rw-rw-r--

or lrwxrwxrwx. What does this mean? ........................................................................................... 31

Q. The ls command doesn’t show everything in the directory. What’s wrong? ............................ 31

Preparing Today for Linux Tomorrow

4

Q. Can I use wildcard searches with the ls command, as I can with Dir in DOS/Windows? ........ 31

Q. I want to do a wildcard search on files with ? or * in the names. How do I do that?................. 32

Q. How do I create or rename a file with special characters in the name? .................................... 32

Q. How long can a filename be?..................................................................................................... 32

Q. Is there a way to find files from a command shell?.................................................................... 33

Q. Is there a way to browse through a text file from the command line?........................................ 33

Q. Is there a command to search text files for a specific character string?.................................... 34

Q. What are “symbolic” and hard links, and how can I identify them?............................................ 35

Q. How do I create links (symbolic or hard)?.................................................................................. 36

Q. Can you summarize the differences between symbolic and hard links and differentiate between

using links and simply duplicating a file? ........................................................................................ 37

Q. I recognize a number of file types, such as .JPG, .GIF, .WAV, .TXT, .HTM and .ZIP from

Windows, but I see many other file types I don’t know. What are they for? ................................... 37

Q. Should I back up my entire system? .......................................................................................... 38

Q. How often should I back up my files? ........................................................................................ 38

Q. What backup software should I use? ......................................................................................... 39

Root/User Accounts, Groups and Permissions ............................................................................... 40

Q. Sometimes instructions say that I must “be root.” What does this mean?................................. 40

Q. What is the root account and how does it differ from a user account?...................................... 40

Q. Why would I want to add other user accounts to my system?................................................... 41

Q. How do I add users? .................................................................................................................. 41

Q. How do I delete users? .............................................................................................................. 42

Q. Is there any way to change a user ID? ...................................................................................... 42

Q. Is there a way to disable a user account?.................................................................................. 43

Q. How do I add or change personal information in an account?................................................... 43

Q. How do I add groups? ................................................................................................................ 43

Q. How do I add/delete users in a group? ...................................................................................... 43

Q. How do I change a password?................................................................................................... 43

Q. What is a shadow password? .................................................................................................... 44

Q. How do I display the permissions for a file or directory? ........................................................... 44

Q. How do I change permissions?.................................................................................................. 44

Communications ................................................................................................................................. 45

Q. How do I set up my system for dial-up Internet access? ........................................................... 45

Miscellaneous ...................................................................................................................................... 46

Q. What is the difference between Linux and UNIX? ..................................................................... 46

Q. Why does Linux seem so haphazard?....................................................................................... 47

Q. Where can I download or buy Linux software? .......................................................................... 47

Q. Where can I go for assistance on Linux?................................................................................... 48

Preparing Today for Linux Tomorrow

5

Installation

These questions all deal with some aspect of installing the operating system.

Q. During installation Linux creates a swap space partition. Why do I

need this and how is it different from a Windows swap file?

Like Windows, Linux uses a certain amount of space for holding programs temporarily, when

there is not enough available RAM (random access memory) to hold all the programs that are

running concurrently. Generally, the least recently used program (or part of a program) is

copied from memory to a file on your hard drive until it is needed again, at which time the

current least recently used program is swapped out in its place and the first program is loaded

back into memory. (This is an over-simplified explanation; there is much more to it, but this will

do for this question.) This file is called a swap file in Windows or OS/2 and “swap space” in

Linux, but in either case it is a form of data file that is read from and written to off and on as

long as your system is running.

Windows puts the swap file (a hidden system file with different names for different versions of

Windows) in the bootable data partition by default. OS/2 does the same, but by changing the

CONFIG.SYS file a user can put the swap file in any directory in any partition on any drive

they like. Linux, by default, requires a special swap partition in which to store the swap file.

(Actually, Linux does allow swap files to be put in data partitions, with caveats—see below for

more on this.)

Q. During installation, I have a choice of creating swap space in a

Primary or an Extended partition. Which should I choose?

Either will work. There is no technical advantage to doing it one way or the other, but there are

only a limited number of primary partitions that can be created, so if you plan on installing

more than one operating system you might want to put the swap space in an Extended

partition and save a Primary partition for other uses.

Note: If you have Microsoft Windows installed, it may not boot if you have more than one

primary partition installed on the bootable disk drive (what Windows sees as C:). In this case,

Linux would have to be installed in an Extended partition, or in a Primary partition on a second

hard disk drive. For more information, refer to the lilo (LInux LOader) documentation on a

Linux system, using the command: man lilo (no, man is not a politically incorrect

command—it is merely short for manual). If you do not yet have a Linux system set up where

you can read the lilo documentation there are a couple of other options available: 1) If you are

installing from a CD set, look for a directory or separate CD (as in Red Hat 6.2) containing

documentation, possibly in HTML format. 2) Visit Linux Web sites, such as

http://linux.ctyme.com and http://www.linuxdoc.org, for online documentation.

Q. How large a swap partition should I create?

Although it can be smaller, for best results the partition size should be at least equal to the

amount of memory installed in the system—preferably twice the amount of physical memory.

In other words, if you have 64MB of RAM installed use double that amount for your swap

space partition (64MB * 2 = 128MB).

If you need more than 128MB of swap space, but you are using an older distribution that does

not support a swap file larger than 128MB, there are ways around the 128MB swap file

limitation: 1) Linux allows more than one swap partition on a hard drive, and 2) Linux also

allows swap files to be put in data partitions (i.e., in the same partitions as your programs and

data files).

Preparing Today for Linux Tomorrow

6

If you create a swap partition and then later decide that it is not large enough for your needs,

you can delete the original one and replace it with a larger swap partition if you have the

contiguous space to do so—in other words, if there is no other partition immediately following

the original swap partition. If there is insufficient space to create the larger swap partition, you

can still create a second partition elsewhere on that drive. They do not have to be back-toback.

(Or you can use a disk partitioning program, such as Partition Magic, to reallocate

partition space on the fly between existing partitions, without losing data.) Linux supports up to

eight swap partitions.

Alternatively, if you have multiple physical disk drives, splitting your swap space between the

disk drives may improve system performance, because both drives can be used concurrently

for swapping. (This performance increase is more apparent on a system with SCSI drives,

because SCSI devices run in parallel—at the same time—while standard IDE devices run in

serial—they alternate. Even so, on a system with multiple IDE drives, it can be faster to switch

back and forth between physical drives (an electronic operation) than to shuttle the read/write

heads of one drive all over the disk, dividing their time between partitions on the same drive.)

Also, drives added to the system later may be faster than the original drive that came with the

system. Using these newer drives will give you faster disk read/writes when swapping.

Dividing the swap space across multiple drives may also increase system reliability. Like any

device, hard drives have a finite life expectancy, so spreading the workload between multiple

drives means that the primary drive doesn’t have to work as hard, which in turn may (no

guarantees, though) extend its useful life. (For instructions on how to do this, refer to the

question, How can I create multiple a swap partitions on one or more drives?, below.)

Q. How can I speed up performance by using multiple swap partitions?

If your system (especially a server) has multiple drives set up as a RAID 0 array (data

striping), it would automatically spread the data across all the drives in parallel, greatly

increasing the speed of disk writes versus a non-RAID setup, where the swap partition is on

only one drive. Of course, not everyone can afford a RAID setup; fortunately, there is an

alternative that offers many of the same performance benefits in a multidisk environment, at

least as far as swap space performance is concerned.

As it happens, there is a way to “parallelize” swap file read/writes through the use of the

priority setting in the /etc/fstab file. (Note: This works best with multiple SCSI drives and/or

controllers. Two IDE drives on the same controller will see little or no performance boost from

this technique, but multiple IDE drives on multiple controllers may benefit somewhat.)

Use an appropriate tool (such as kfstab [available from kfstab.purespace.de/kfstab], which

knows the exact layout of the file that fstab requires) to open the file /etc/fstab. This file lists

the partitions used by Linux, including swap space. (Note: It is possible to use a simple text

editor such as vi, but if you do not get the columns lined up just right, or if you use tabs instead

of spaces or vice versa, you can corrupt your system; so if you elect to go this route, rather

than using a tool specifically designed for editing fstab, such as kfstab, be sure to make a

backup copy of fstab first, so that you can recover if your system crashes.)

When you open fstab, if you have multiple SCSI drives with a swap partition on each, you

might see something like this (without the headings):

<partition <mount <partition< mount <backup

name> point> type> options> dump> <pass>

/dev/sda2 none swap sw 0 0

/dev/sdb2 none swap sw 0 0

/dev/sdc2 none swap sw 0 0

/dev/sdd2 none swap sw 0 0

Preparing Today for Linux Tomorrow

7

Under normal circumstances, Linux would use the swap partition /dev/sda2 first, then

/dev/sdb2, and so on, one at a time, until it had enough space to meet its current swapping

needs.

On the other hand, if you change the settings to:

/dev/sda2 none swap sw,pri=3 0 0

/dev/sdb2 none swap sw,pri=3 0 0

/dev/sdc2 none swap sw,pri=3 0 0

/dev/sdd2 none swap sw,pri=1 0 0

you will be assigning the first three partitions the same priority level—a higher one than the

fourth partition. (Swap partitions are used in order from highest priority to lowest—where a

priority level of 32767 is the highest and 0 is the lowest.) This has the effect of forcing Linux to

write to the first three partitions in parallel, greatly increasing the read/write throughput of the

swap space. The fourth partition would be used only if the first three fill up.

In addition to parallelizing the swapping, this technique also allows you to prioritize access to

the fastest drives first. Therefore, you can set up an emergency swap partition on an old, slow

drive, using low priority, so that it will be used only when all high-speed swap space is

exhausted.

Q. How can I create multiple swap partitions on one or more drives?

To create multiple swap partitions:

1. First, use the: su – command to enter superuser mode. (If you don’t do this you will be

unable to use the fdisk command.)

2. Enter the command: fdisk /dev/hda if your bootable hard drive is IDE, or use: fdisk

/dev/sda if your bootable hard drive is SCSI. (If you are not sure which type of disk

drives your system uses and you guess wrong, the worst that can happen is that Linux will

issue an error message saying “Unable to open xda.” You can’t hurt anything.) This is a

text-mode program, so it is not pretty. Where it says, “The number of cylinders for this disk

is set to xxxx” note the number displayed for xxxx (for example, 1024).

3. At the prompt “Command (m for help).”

a. Type: p (and press Enter) to see the current partitions. Check the number shown

under the End column for the last cylinder listed. If it is less than the number of

cylinders from Step 2, above, there is room for another partition. (It is only necessary

to create another partition on the same drive if your Linux distribution doesn’t allow

swap partitions larger than 128MB and you want additional swap partitions.) The

difference between the two numbers determines how much space is available for use.

b. (If there is already an existing swap partition, but it is not large enough, use the: d

(delete) command to remove it; then create a new, larger one.)

c. Enter: n to create a new partition.

d. If you are creating a Primary partition:

1) Enter: p to create the partition. When prompted for the partition number, use the

next higher number than the highest existing partition number. (In other words, if

the last device description on the left shows: /dev/hda1, use 2 as the new

partition number.)

Preparing Today for Linux Tomorrow

8

2) Type in the number suggested for the first cylinder (which should be one higher

than the ending cylinder for the preceding partition, or press Enter to take the

default.

3) Enter the partition size in megabytes, such as: +128M. (Be sure to include both

the + and the M or you will get a “Value out of range” error.)

4) Enter: p again to verify that the new partition was created. It should show an Id

type of 83 and a System type of Linux.

5) Enter: t to change the partition type, then enter the partition number you used in

Step 1), above. Finally, when prompted for the “Hex code,” enter the swap

partition type code: 82. If everything worked correctly, you should see a message

like “Changed system type of partition [x] to 82 (Linux swap).” (where [x] is the

partition number from Step 1).

e. If you are creating an Extended partition:

1) Enter: e to create the partition. When prompted for the partition number, use the

next higher number than the highest existing partition number. (In other words, if

the last Device description on the left shows: /dev/hda1, use 2 as the new

partition number.)

2) Type in the number suggested for the first cylinder (which should be one higher

than the ending cylinder for the preceding partition, or press Enter to take the

default.

3) Press Enter to reserve all the available space.

4) Enter: p again to verify that the new Extended partition was created. It should

show an Id type of 5 and a System type of Extended.

5) Enter: t to change the partition type, then enter the partition number you used in

Step 1), above. Then, when prompted for the “Hex code”, enter the Linux

Extended partition type code: 85. If everything worked correctly, you should see a

message like “Changed system type of partition [x] to 85 (Linux extended).”

(where [x] is the partition number from Step 2). Note: This step is not strictly

necessary. You can create Linux swap partitions in a “regular” extended partition,

but changing the partition type to Linux Extended takes only a few seconds and it

clarifies the partition structure for future fdisk users on this system.

6) Enter: n to create a new partition. When prompted for the first cylinder number,

press Enter. Enter the desired swap partition size in megabytes, such as: +128M.

Enter: p again to verify that a type 83 partition was created with the same starting

block as the Linux extended partition you created in Step 1).

7) Enter: t to change the partition type, then enter the number for the Linux

extended partition you just created. When prompted for the “Hex code,” enter the

swap partition type code: 82. If everything worked correctly, you should see the

message “Changed system type of partition [x] to 82 (Linux swap).

8) If you did not use up all of the available partition space in Step 6), create one or

more additional partitions to hold data, but this time do not change the partition

default type of 83.

f. To write your changes to the hard disk and exit the program, type: w and press Enter.

4. When you are returned to the Hard Disk Selection panel, select No further hard disk

changes and press Enter.

5. Repeat steps 2-4 for each additional hard drive that you wish to add a swap partition to,

changing the fdisk command from: fdisk /dev/hda to: fdisk /dev/hdb; or from:

Preparing Today for Linux Tomorrow

9

fdisk /dev/sda to: fdisk /dev/sdb, depending on the type of hard drives you are

using. When you are done, enter: q to exit fdisk. (For more on disk drive naming

conventions in Linux, see question Wait a minute! Are you saying that there are no drive

letters in Linux?)

Note: To see the complete list of partition types available for your Linux distribution, at the

“Command (m for help)” prompt, enter: l (for “list partition types”).

For performance reasons, if you have more than one hard disk drive your first choice should

be to create multiple swap partitions, rather than multiple partitions on the same drive or one

swap partition and a swap file in a data partition. However, if you have a shortage of available

Primary partitions (or there is no more unallocated disk space from which to create new

partitions), you can create swap files in existing data partitions. To do this, see the question

How do I create a swap file in an existing Linux data partition?, below:

Q. How do I create a swap file in an existing Linux data partition?

If for some reason you can’t, or do not wish to, create Linux swap partitions—or if you have no

more available disk space to use for a new swap partition—it is possible to create swap files

within partitions that currently hold programs and/or data files. However, your first choice

should be for one or more Linux swap partitions.

Important Note: There are two disadvantages to locating swap files outside of dedicated

swap partitions: 1) The performance of swap files that are located in data partitions is slower

than that of swap files in swap partitions (due to file system overhead and noncontiguous data

blocks), and 2) It is also possible that if the swap file is ever damaged it could corrupt the

filesystem for that partition, resulting in lost data. For these reasons it is strongly

recommended that you use swap partitions whenever possible, leaving swap files in data

partitions as a last resort. Swap files might be appropriate if you temporarily need some extra

swap space.

You can create as many as eight swap files, if necessary. Linux will apportion the swapped

data between these files as appropriate.

To create a swap file in a data partition, use a command similar to the following:

dd if=/dev/zero of=<swap path> bs=<size> count=<size>

For example:

dd if=/dev/zero of=/Swapdir/Swapfile bs=1024 count=65536

(Note: If /Swapdir does not yet exist, it must be created before running the dd command. For

example: mkdir /Swapdir or mkdir /home/Swapdir. In order to create the directory, you

must be running as the root operator.)

The dd command (sometimes called “data duplicator,” although the original meaning of the dd

acronym is lost in the mists of time) is used to create the swap file. The if= parameter

identifies the input file source for creating the swap file (device “zero”), of= is where you

specify the path to the output (swap) file you want to create, bs= is the block size to use and

count= is where you define how large to make the swap file, in increments of the block size.

In the preceding example, we are creating a 64MB swap file (65,536 * 1024 [1K] equals

65,536K, or 64MB), called Swapfile (use whatever name you prefer), in a directory called

Swapdir.

Next, to initialize (or make ready for use) the swap file, use the following command:

Preparing Today for Linux Tomorrow

10

mkswap /Swapdir/Swapfile 65536

(Use the same path as in the dd command and the file size you specified in the count=

parameter. If you get a “No such file or directory” error, verify that you typed the upper/lower

case correctly and did not omit the leading /.)

After initializing the file, “synchronize” it to ensure that it is properly written to disk:

sync

And, finally, to tell Linux to start using this new swap file:

swapon /Swapdir/Swapfile

This will activate the swap file temporarily (until the next time you log out or reboot). To make

it permanently active, use an appropriate tool (such as kfstab [see the earlier question, How

can I speed up performance by using multiple swap partitions?, for details], which knows the

exact layout of the file that fstab requires) to open the file /etc/fstab.

When you open fstab, you might see something like (without the headings):

<partition <mount <partition< mount <backup

name> point> type> options> dump> <pass>

/dev/hda1 / ext2 defaults 0 1

/dev/hda2 /usr ext2 defaults 0 1

/dev/hda3 none swap sw 0 0

(There may be other disk partitions listed if you have other swap and/or data partitions.) To

activate your new swap file, add a line similar to the following immediately after the last

partition listing. Then save and close the /etc/fstab file.

/Swapdir/Swapfile none swap sw 0 0

Should you later decide that you no longer need the swap file, it is easy enough to remove.

First, use the swapoff command to disable the use of the file:

swapoff /Swapdir/Swapfile

Then, simply delete the file:

rm /Swapdir/Swapfile

Q. I already have a large swap file in my Windows partition. Is there a

way for Linux to use that swap space instead of creating another file?

Yes, although Linux is rather meticulous about what format the data takes in its swap space.

Thus, there is more to it than simply pointing Linux to the path of the Windows swap file.

I have found several descriptions of how to accomplish this (and all of them reportedly work)

but I have not had the need to try any myself. They all appear to be terribly complicated, so

unless you consider yourself well versed in Linux, it might be best to avoid this topic entirely

until someone develops a utility to simplify the process. If you would like to look over one such

procedure, to make up your own mind whether or not to try it, read the document at

http://www.linuxdoc.org/HOWTO/mini/Swap-Space-1.html. It seems rather thorough. (Use the

Preparing Today for Linux Tomorrow

11

left and right arrows to move back and forth through the document. Use the up arrow to go to

the document table of contents.)

(If you already have a Linux swap partition before you decide to try this technique to use your

Windows swap file instead, you should later delete it using fdisk, to free up the disk space

used by that partition. For directions on how to use fdisk to check your partition tables, and to

delete a partition, see the question How large a swap partition should I create?, above.)

Another possible way to share swap space is to have a swap partition shared by both

operating systems. This is not a “no-brainer” either, but if you are interested do an Internet

search for “Linux swap space” and you should find several such documents.

Q. If I install Linux on an IBM® ThinkPad® with a TrackPoint® II or III

pointer, what kind of mouse should I select?

The installation program should correctly recognize the TrackPoint II/III as a PS/2-type mouse.

Most such ThinkPad notebooks have two “mouse” buttons, but some newer systems have a

third button. When installing on a ThinkPad with two buttons, select the Emulate 3 Buttons

option on the Mouse Configuration screen. If your ThinkPad has three buttons do not select

this option, or it will cause problems. To use the “third button” on a two-button ThinkPad (or

any other system with a two-button mouse), press both buttons together (called “chording”).

(These instructions should apply equally to other brands of notebook computers using IBM’s

“pointing stick” technology, identified as a little “pencil eraser”—usually red, green, or black—

nestled between the G, H and B keys; but to be sure, contact the notebook vendor.)

Migration from Windows

If you are in the process of moving from Windows to Linux, or are setting up a Linux system to

coexist with Windows computers and perhaps share data between the two types of systems,

these questions may save you some time and effort.

Q. How do I get Netscape for Linux to recognize my Netscape for

Windows bookmark file?

For best results, try to use the same version of Netscape on both systems, or as close as

possible (e.g., 4.72 and 4.7, but not 3.0) to minimize the chance of inconsistencies in the

bookmark file format.

Use the Linux Kfind, or similar, utility to determine where the default bookmark file is kept. It

should be in a directory with a name like /home/username/.netscape (substitute your

account name for username). If you simply copy the bookmark.htm file from your Windows

PC to a floppy and then to the appropriate Linux directory, when you restart Netscape and

open the bookmarks you will see the default bookmarks, not your customized list. The

problem is in the file name. The Linux version is called bookmarks.html (note the two extra

letters). Therefore, you must rename the bookmark.htm file to bookmarks.html before

Netscape for Linux will recognize it (reverse the process to copy an updated file back to your

Windows system).

First, copy the bookmark.htm file from the Windows system. If you use a floppy, Zip disk or

other removable medium, you can rename the file on the removable disk before copying to the

Linux system. (The file should be stored in a directory called something like \Program

Files\Netscape\Communicator\Users\yourusername, but you can use the Windows Find or

Search function—depending on the Windows product—from the Start menu to locate it.) Once

the file is copied to the removable disk, use the Windows file manager to rename it

bookmarks.html.

Preparing Today for Linux Tomorrow

12

On the Linux computer, KDE graphical interface users can copy the file to the

/home/username/.netscape directory using the K File Manager (just click on the icon on the

taskbar, or Panel, that looks like a house in front of a manila folder). Gnome users can use the

Gnome File Manager (click on the Gnome icon--the vaguely G-shaped footprint--on the Panel,

select Programs, then File Manager). If you prefer to work from a command line interface, use

the following command:

cp /dev/fd0/bookmarks.html /home/yourusername/.netscape

(Note the use of forward slashes and that /dev/fd0 is used in place of a:. Linux and UNIX® do

not use drive letters, unlike DOS, Windows or OS/2.)

Alternatively, you could combine the renaming and copying steps into one, using the following

command:

mv /dev/fd0/bookmark.htm /home/yourusername/.netscape/bookmarks.html

(Note: The diskette drive may already be “mounted” as /dev/floppy or /mnt/floppy in your

Linux distribution. If so, use that mount location instead of /dev/fd0.)

If you transfer the file directly to the Linux system (via network connection, for example) or

prefer to rename the file once it is on the Linux system go to the /home/username/.netscape

directory (cd /home/username/.netscape) and use a file manager or the move (mv)

command to change the name: mv bookmark.htm bookmarks.html. (If you use the mv

command without a target location, it simply renames the files.)

Note: In addition to the bookmarks file, you might also want to copy the following files from the

same Netscape directory on your Windows system, to your Linux system: liprefs.js, prefs.js

and proxy.cfg. They contain the user preferences information (font selections, proxies,

servers and so on). In addition, if you did not have “cookies” disabled on your Windows

system, copy cookies.txt as well (some Web sites store information about your user account

in this file). This will save you from having to manually reenter your preferences on your Linux

system. (You will probably have to overwrite the default files with the same names on your

Linux system.)

If Netscape is still running, close and restart it so it will read the new bookmarks file (as well as

the other files you copied). If it still doesn’t work, verify that you put it in the correct directory

and have spelled the file name accurately—it must be in all lower-case.

Q. Are there any Linux programs that will read and write Microsoft Office

files?

Yes, there are. For a list of several such programs and how compatible they are, see the white

paper entitled What Good is a Linux Client?, available from the same sources as this paper.

Configuration & Setup

Here are some tips for tailoring Linux or configuring devices.

Q. How do I get my “winmodem” to work with Linux?

Winmodem is actually a trademark of 3Com Corporation, but is often used generically to

describe a class of low-cost software-based modems, designed to be inexpensive by

replacing some hardware functions with software. This software typically incorporates low

Preparing Today for Linux Tomorrow

13

level Windows functions that can’t be duplicated in Linux. Most such modems won’t work with

Linux, however, some can be made to be compatible. These sometimes are referred to as

“Linmodems”. Go to http://www.o2.net/~gromitkc/winmodem.html for more information on this

topic. In most cases, the easiest “fix” is simply to disable the software-based modem and

install a traditional modem adapter, or attach en external modem to a serial or USB port. Many

56K modems are quite inexpensive these days. (For information on how to disable the built-in

modem, consult the user’s guide for the computer, or contact the computer vendor’s technical

support organization.)

Q. How can I tell how much memory Linux is using?

From a command shell, use the “concatenate” command: cat /proc/meminfo for memory

usage information. You should see a line starting something like: Mem: 64655360, etc. This is

the total memory Linux thinks it has available to use. If you have more than 64MB of RAM

installed and see a number close to the one above, Linux is not using the remainder. To see

how much memory is currently unused, use the free command.

Q. If Linux is not using all the memory I have installed, how do I make it

use the rest?

To force Linux to recognize and use the full amount of memory you have installed, open a

command shell and login temporarily as the “root” operator, with the su command. (For

instructions on how to do this, see the Root/User Accounts, Groups and Permissions section,

below.) When prompted, type in the root password. At the command prompt, use an editor to

open the file /etc/lilo.conf, such as: pico /etc/lilo.conf. The first line of the file should

start: boot=, followed by other lines for map=, install= and so on. Position the cursor in

front of the “b” in boot=, then insert the following: append=“mem=128M” and press the Enter

key to move the boot= line down. Finally, close the editor and exit the file (Ctrl-X, in the case

of the Pico editor; Q to quit various other editors). Save the changes, if prompted. From the

command prompt, type: /sbin/lilo to restart LILO, then type: exit to logout as the root

operator and then exit again to close the shell session. The next time you reboot Linux

should be using all the memory installed. (Use the cat /proc/meminfo command to verify.)

Warning: It is possible to render Linux unbootable by specifying a memory size larger than

that physically installed and available. If your computer reserves some memory, rendering it

unavailable to Linux, you must specify the lesser amount. For example, during power up

(POST), if your memory count shows something like 130496 (kilobytes), rather than the full

131072 KB for 128MB of RAM (128 * 1024), this means that some of the memory is reserved

by the hardware. In this case, do not use mem=128M in the example above. Instead, use the

exact amount of 130496K (append=“mem=130496K”), or play it safe and “step down” to

127MB, as in: append=“mem=127M”. If you somehow manage to leave your system in an

unbootable state (i.e., it locks up on boot when it tries to use the reserved memory), the

remedy is to edit the /etc/lilo.conf to correct the memory size.

Q. I have a printer attached to the parallel port. What is this port called in

Linux?

When prompted for the name of a parallel port in Linux, in place of LPT1, LPT2, or LPT3 use

/dev/lp0, /dev/lp1, or /dev/lp2, respectively.

Q. I have a device attached to a serial port. What is this port called in

Linux?

When prompted for the name of a serial port in Linux, in place of COM1 through COM8

substitute /dev/ttyS0 through /dev/ttyS7, respectively.

Preparing Today for Linux Tomorrow

14

Q. What is my floppy drive called in Linux?

If prompted for the path of a diskette drive in Linux, in place of “a:” substitute /dev/fd0,

/dev/floppy, or /mnt/floppy, depending on the Linux distribution you are using. Unlike the

DOS/Windows world, UNIX/Linux doesn’t use drive letters. Devices are assigned “mount

points” (or mounting locations). To determine which mount location is assigned to the floppy

drive on your system, type: mount at a command prompt. You should see something like:

/dev/hda1 on /type ext2 (rw)

none on /proc type proc (rw)

none on /dev/pts type devpts (rw,gid=5,mode=620)

/dev/fd0 on /mnt/floppy type vfat (rw,nosuid,nodev,user=username)

Look for the part that starts with /dev/fd0 on…. This tells you what “soft” mount location to

use, instead of /dev/fd0: “/mnt/floppy”, in this particular case.

Q. Wait a minute! Are you saying that there are no drive letters in Linux?

That is correct. Hard drives, floppy drives, CD-ROM drives, Iomega Zip and Jaz drives, and

other devices that get drive letters in DOS/Windows are instead assigned mount points by

Linux. Depending on the device involved, here are some of the designations used by Linux,

following their typical Windows drive letters:

Floppy drives

A: drive (in Windows) = /dev/fd0 (or /dev/floppy or /mnt/floppy in Linux, as explained above)

B: drive = /dev/fd1 (see note, below)

IDE/EIDE disk drives

C: drive (boot drive; first/primary drive on the first disk controller) = /dev/hda

D: drive (second/slave drive on the first disk controller) = /dev/hdb

E: drive (first/primary physical drive on the second controller) = /dev/hdc

F: drive (second/slave physical drive on the second controller) = /dev/hdd

(CD-ROM drives will often be attached as the primary drive on the second controller, or

/dev/hdc. IDE/ATA Zip drives will generally take the next available drive letter after the hard

drives and/or CD-ROM drives.)

SCSI disk drives

C: drive (boot drive; lowest-numbered drive on the primary controller) = /dev/sda

D: drive (second lowest-numbered drive on the primary controller) = /dev/sdb

E: drive (third lowest-numbered drive on the primary controller) = /dev/sdc

(And so on. There can be many SCSI drives, on one or more controllers. The mount point

designations just keep incrementing up through /dev/sdz. If there are more than 26 physical

drives, they will be incrementally labeled from /dev/sdaa up through /dev/sdzz.)

Note: Unlike the primary floppy drive (/dev/fd0) Linux doesn’t automatically map a second

diskette drive (/dev/fd1) to something like /dev/floppy or /mnt/floppy. However, if desired

you can set up your own alias, such as /mnt/floppy2. The mapping entries that are used for

this are located in the /etc directory, in a file called fstab. To add an alias for fd1, use an

editor to open /etc/fstab and look for the entry for fd0, which should look something like:

/dev/fd0 /mnt/floppy auto noauto,owner 0 0

This line maps /dev/fd0 to the directory /mnt/floppy. To create an alias for fd1, create a

subdirectory in the /mnt directory called floppy2. Then add a new entry (using whatever alias

you wish) to the fstab file in order to map the second floppy drive to a mounting point, such

as:

Preparing Today for Linux Tomorrow

15

/dev/fd1 /mnt/floppy2 auto noauto,owner 0 0

Save the file and close the editor. Now, when you use the Mount command it should include

something like:

/dev/fd1 on /mnt/floppy2 type vfat (rw,nosuid,nodev,user=username)

Q. What about disk drive partitions? Don’t they have drive letters either?

Nope. Linux just tacks numbers onto the end of the drive identifier. For example, if the first IDE

hard drive had three primary partitions, they would be named/numbered, /dev/hda1,

/dev/hda2 and /dev/hda3. If a second hard drive had two primary partitions, they would be

called dev/hdb1 and /dev/hdb2. Likewise, a SCSI hard drive with three primary partitions

would be labeled /dev/sda1, /dev/sda2 and /dev/sda3.

That is just for primary partitions. If you also have extended partitions, they begin numbering

at 5 and continue from there. If, for instance, you had one IDE drive with two primary and two

extended partitions, the partitions would be called: /dev/hda1, /dev/hda2, /dev/hda5 and

/dev/hda6.

Q. Wow, that’s confusing! Isn’t there a simpler way to access drives?

Yes. Most Linux distributions provide desktop icons for some devices, such as floppy and CD-

ROM drives that can be clicked on for direct access. If you install software for accessing an

Iomega Zip drive, it should also provide an icon to use. And, of course, the graphical file

managers, such as the K File Manager and Gnome File Manager allow you to access files on

various drives without worrying about drive letters. (When you open KFM, look for an icon

called mnt/. When you single-click on it, KFM will display all the devices that are ready for use.

Click on the icon called cdrom/ to display the contents of the currently inserted CD, or click on

the one called floppy/ to see what is on the inserted diskette.)

Q. Is there an easy way to see what devices, such as drives, have been

mounted?

Yes. Red Hat users running KDE can click on the KDE menu and select Red Hat, then

System and finally Disk Management. This will bring up a panel that shows the devices

mounted, and provides Mount and/or Unmount buttons (so that you can take a device offline,

then remount it). The Mount/Unmount buttons will toggle back and forth between the two

options being used. There are also buttons provided to let you format the drives.

Gnome users (of any distribution) can select File manager from the Gnome icon on the Panel

(the Linux “taskbar”) and then click on the /mnt icon to view the various devices.

I have not seen a KDE equivalent for the Red Hat Disk Management tool for other

distributions. As an alternative, the Mount command can be used, as described earlier, in the

question What is my floppy drive called in Linux?. Also, for a less cluttered view of disk drives

mounted, with total and available space, try the disk filespace command (use: df –h to

display measurements in “human-readable” form—gigabytes, megabytes, etc.). It won’t show

non-disk devices, however. (Read the info manual pages at: info df, for more information.)

Q. Is there any way to change the default language used by the operating

system and applications?

The short answer is “Yes.” Of course, as with most things Linux, how you do it depends on the

distribution you are using, the user interface (desktop environment) you are using, your

Preparing Today for Linux Tomorrow

16

applications and perhaps other factors. The default language is set during installation,

however there are ways to change this once the system is up and running.

If, like many users, you are running the KDE environment, the way to change the language is

very simple. From the KDE menu:

1. Select Settings, then Desktop, then Language.

2. Specify your first choice from nearly three dozen languages (including Catalan, Slovak

and Macedonian). You are allowed to choose up to three languages. (When you start a

program, KDE will try to find a translation for the menus, dialog boxes and messages in

the first language. If it fails, it will try the second choice and, if necessary, the third. If all

three fail (or if you do not select three languages), it will use whatever was the original

default language specified during installation.)

3. Press OK to save your changes and exit. (Apply will save your changes but not exit. The

Default button will return all three language settings to the original “Default language”

choice.)

4. Log out and then log in again to see your changes.

Note: This procedure only affects certain system utilities, help files, error messages and the

like. Your applications may or may not be affected, depending on what support for other

languages are programmed into them. Therefore, you may end up with a mix of two or more

languages depending on the various programs you are running at any one time. You may be

able to set up language choices within specific applications as well.

If, after logging out/in you discover to your horror that you somehow selected the wrong

language and you can’t read most icons, menus and other system functions, try to follow the

instructions above. If you can manage to return to the language settings panel, but can’t read

the language names, the little flag icons should allow you to find the language you want, or

you can press the Default button at the bottom—the second one from the left, if you can’t read

it. If you are unable to find your way back to the language settings you may have to reinstall

Linux to specify the default language all over again.

Gnome users can use the same KDE tool, if they wish. The only extra step is to go to the

Gnome menu, select the KDE menus option, then proceed as directed, above.

If you use another desktop environment besides KDE or Gnome, refer to the manual or tutorial

that came with the environment for information on how to change the language.

General Usage

How to perform various tasks using Linux.

Q. How do I format a floppy (diskette)?

If you are using the KDE user interface, the easiest way is to use the KDE Floppy Formatter

utility supplied. Simply click on the KDE icon on the Panel, select Utilities, then KFloppy. The

File System option gives you the choice of the Dos (FAT) file system (for DOS/Windows or

OS/2) or the Linux native ext2fs file system.

If you are using Gnome, go to the Gnome icon (the fancy G-shaped footprint) on the Panel

and select Utilities, then GFFloppy.

From the command shell, to format a diskette for the native Linux file system, use the mke2fs

command. You can use the mtools utility to access DOS/Windows-formatted diskettes. Use

the commands: mformat, mcopy and mdel without parameters to see a list of command

Preparing Today for Linux Tomorrow

17

options. (Using mtools, to change from one directory on the floppy to another, use the

following command: mcd a:subdir, where subdir is the name of the directory you wish to

change to.)

Q. Is there online documentation for most programs?

Yes. The official help tool for Linux is called man (short for manual). To read the manual for

various programs (including many commands), type: man <something> (where

<something> is the name of the program you need help with) at a shell prompt. For example,

to read the online manual for the man program itself, use: man man. You can also use a

viewer called less to view the manual: man man | less (where | is the piping symbol—

Shift-Backslash—located above the Enter key on a 101-key keyboard). Using less, press

the Spacebar to move ahead a page at a time; to back up, use the B key. When you are

done, press Q to quit.

Many newer programs have shifted to the info tool rather than using man. Like man, you can

view info pages using the command: info <something>. Some programs now supply

HTML or XML pages, kept in the /usr/doc/<programname> directory, in place of either man

or info pages. These documents may be viewed from a Web browser or other HTML/XMLcapable

program.

Another option is to redirect the manual to a text file for browsing with an editor. For example:

man mv | col –b > move.txt (to redirect the text for the mv command) will strip out the

screen formatting codes that do not translate into print and then copy the output to a file called

move.txt (col is the name of the formatting utility). Once it is in a text file, it can be read with

Emacs, Pico, Vi, or any other text editor. (Note: Substituting >> for > in the example above

would append the text to the end of an existing file, whereas using > a second time would

overwrite man.txt with new data.)

Likewise, to print a manual you will need to pipe (send) the document to a formatting program

that will strip out the screen formatting codes before printing. To do this for info pages, type:

info mv | col –b | lpr. (lpr is the program that sends the document to the print

spooler.)

Another “quick and dirty” source of helpful information is the whatis command. Whatis

provides a brief synopsis of many commands. For example, try: whatis man. You will be

shown several “definitions” of what the man command does. The same goes for: whatis

whereis, to find out what the whereis command does. If there is no information available for

a particular command you will see a “nothing appropriate” message instead. Note: If the

whatis command doesn’t work, it may mean that the whatis database has not yet been built.

To create it, first use the: su – command to log in as root, then enter:

/usr/sbin/makewhatis. This may take several minutes. When the process finishes, try the

whatis command again.

Q. How do I kill a program that has locked up?

If you are not the owner of the program (the user account who installed it), you must log in as

root. (For instructions on how to do this, see the Root/User Accounts, Groups and

Permissions section, below.) Then, from a command line, you can type: ps (process status) to

see what programs are running. To the right of the process name will be a Process ID (PID)

number, such as 506. This is what you will use to kill the program. From the command prompt,

type: kill pid (for example, kill 506). This tells the program to either shape up (respond

normally) or ship out (close itself). This will usually solve the problem, but occasionally

stronger measures are required. Preceding the PID with –9 (such as: kill –9 506) will kill

Preparing Today for Linux Tomorrow

18

the program. (This is sometimes called “signal 9,” not to be confused with “Plan 9 from Outer

Space”, a cheesy B-movie.)

An alternative for killing a background process, or daemon is to use the –HUP (hangup)

parameter, as in: kill –HUP 506. It essentially signals the program to close itself, then

restart and reread its configuration file. Again, if the kill command doesn’t work the first time,

you may have to resort to the –9 parameter rather than –HUP.

Q. Is there a way to increase the priority of a program to make it run

faster?

Yes. If you have a program that normally takes quite a while to run and you really, really need

it to complete faster, you can boost its job priority level so that it uses more processor cycles.

Of course, this means that all other currently executing programs will run slower. But if this is

what you want, the nice command will do the job for you.

Linux supports priority levels from 19 (lowest) to –20 (highest), with the default being 0. To

change the priority to a negative number (increasing the priority), you must first log in as root.

Then, to start a program called Myprog with a high priority-level of –10, use the command:

nice –n –10 myprog. If you wish to increase the priority of an already running program,

use the renice command, identifying the program by its PID: renice –10 506 (the –n

argument is not used).

Conversely, if you have a long-running program that is a low-priority job and it is slowing the

entire system down while the program is running, you can lower its priority using the same

techniques by providing positive numbers—such as 8—rather than negative numbers. By

default, nice will reduce the priority by 10. In other words, the command: nice myprog is the

same as: nice –n 10 myprog.

It may take some experimenting for you to find the right priority levels to assign to specific

programs. Too high a priority may bring the rest of the system to its knees; too low and the job

may take forever to complete. As a rule of thumb, unless you have a reason to be changing

priorities, leave them alone. The default setting is best most of the time.

Q. Is there a spelling checker that I can use outside of a word processor?

Yes. Linux includes a program called ispell, which will read any text file, highlight

questionable words, offer alternatives and let you add the words to the ispell dictionary if

desired. It runs from the command line, with a text-mode (i.e., non-graphical) interface, but is

fairly easy to use. There are a number of parameters that you can use (type: ispell --? for

a list of them or info ispell for more detailed explanations). But the simplest usage to

check a file called memo.txt would be: ispell memo.txt. It will even check a series of files

in order, such as: ispell memo.txt mydata.txt or even ispell *.txt (to check all

files in the current directory with a .txt extension).

When the program runs it will present a “questionable” word within the context of the line of

text containing the word and offer suggested replacements in a numbered list. To select one

of the suggestions from the list to replace the original word, simply type in the number of the

word you prefer. There are also several menu options displayed along the bottom of the

program. To Replace the word with something you type in, type R (or r, ispell options are not

case-sensitive) and then whatever word you want to replace the original with. (You also can

type in the number of a replacement word from the list. This is the same as just typing in the

number directly, but is there in case you forget you can do it that way. Use A to Accept the

existing word as is (i.e., ignore it) for the rest of the spell-checking session. (Using the

spacebar tells ispell to accept/ignore the word this time only.) I lets you Insert (or add) the

Preparing Today for Linux Tomorrow

19

existing word into the ispell dictionary. Entering an L lets you Look up other words in the

dictionary. (Perhaps you would like to find another word not on the suggestion list.) If the word

is correct but capitalized inappropriately, choosing U will Uncapitalize it. Either Q or X will end

the program. If you have specified a list of files to spell-check, X will stop checking the current

file, save it and begin on the next one. This is essentially “save and exit.” On the other hand, Q

will ask whether you really want to Quit immediately without saving your changes. (Type Y or

N, depending on your preference.)

Be sure to check out the associated online help for that program by entering ?. In addition to

explaining the above options, there are others listed that you might not know about or

remember, including Redraw screen (^L).

Warning: ispell is not discriminating as to what files it checks. It is entirely possible to spellcheck

a word processing document or a binary program file. Saving changes to a document

created by a word processor may (or may not) corrupt it, but the word processor probably has

its own built-in spelling-checker anyway, so why bother with ispell? On the other hand, you

will corrupt a program if you change anything and then save the changes with the X option. If

you accidentally open a binary file (easily identifiable by the “gibberish” displayed that ispell is

trying to correct), be sure to Quit immediately with the Q option!

GUI/Desktop

The following questions involve window manager/desktop and other graphical user interface

questions.

Q. My copy of Linux came with KDE and Gnome. Why do I need both?

Technically speaking, you probably do not need both. However, both desktop environments

are popular, so this gives you the option to decide which you like better. Also, some programs

will work only with one or the other, allowing you to use both types of programs, switching

between the two desktops as needed.

Q. I have both KDE and Gnome installed. How do I switch between them?

From the graphical interface, simply log out. Then at the Log in screen, type your login ID and

password and choose which desktop you wish to load (Session Type). This choice will remain

your default until you change it to something else.

Q. Can I add more desktop themes to use with Gnome and KDE?

Yes. One source for more Gnome themes is http://gtk.themes.org. To install a new theme in

Gnome, after downloading it, start the Gnome Control Center by clicking on the “toolbox” icon

on the Panel. Then click on Theme Selector (under Desktop) in the panel on the left. Press the

Install new theme button (in the center of the right-hand panel), and when the dialog box

opens, scroll down to the name of the file you downloaded (called something like

new_theme.tar.gz and most likely in your login directory). Click on the name of the theme you

downloaded and press the OK button. When the theme appears in the Available Themes box

you can press the Preview button (if Auto Preview isn’t already selected) to see how it looks

before applying it. If you think you might like it, press the Try button to conditionally apply it to

your desktop. If you approve of the results, press OK to save the changes. If you decide you

do not like it after all, use the Revert button to back out the theme and return to your previous

theme.

KDE themes can be found at http://kde.themes.org. To install a new KDE theme, start the

KDE Control Center from the “home” icon (it looks like a little house in front of a manila folder)

on the Panel. Then, click on Theme Manager (under Desktop) in the panel on the left. Press

Preparing Today for Linux Tomorrow

20

the Add button (in the upper-right part of the right-hand panel). When the dialog box opens,

find the name of the theme file you downloaded. Double-click on the name to install it. Then

click on the theme name in the Installer box. The window in the middle shows how it will look.

If you like the appearance, press the Apply button at the bottom of the panel to change your

desktop theme. If you do not like the appearance, press Cancel to exit the KDE Control

Center.

Other sources for themes include many Web sites that offer software downloads. For a list of

some of these sites, refer to the What Good is a Linux Client? white paper, available from the

same sources as this Q&A paper.

Q. How can I add programs to the Panel?

KDE users can click on the KDE icon, select Panel, then Add Application and then choose the

desired program from the various menus shown. Once the application has been added to the

panel, you can rearrange the order of the icons by right-clicking on an icon and selecting

Move, then dragging the icon to wherever you want it.

Gnome users must first log in as root, then click on the Gnome menu icon, then Programs and

Settings, then select Menu editor. When the popup menu appears you can create a submenu

or add to an existing menu.

Q. What is a virtual desktop?

When running a number of programs concurrently, the screen sometimes becomes cluttered

with several windows open at once, covering each other up. One solution, of course, is to

minimize some of the windows until they are needed. However, this entails minimizing and

restoring those windows repeatedly, as different windows are accessed. This can be tedious

over the course of a day.

An alternative is to use a program that creates “virtual desktops.” Each desktop is a clean

slate where you can open one or more programs. Rather than minimizing/restoring all those

programs as needed, you can simply shuffle between virtual desktops with programs intact in

each one. (If this doesn’t seem like much of an improvement, consider that with eight open

programs, a user might have to minimize and restore each of those eight programs multiple

times in turn. With eight virtual desktops, each program could stay open at all times, needing

only one click to change to the next, instead of two.) Virtual desktops can help reduce desktop

clutter.

There are several programs of this type available for Microsoft Windows users to buy or

download, but Linux users do not even have to look for such a program. Both KDE and

Gnome include virtual desktop support by default and users can specify how many desktops

they want to use—or disable them entirely. To switch between desktops, click on the buttons

on the Panel (for One, Two, Three, etc.), start one or more programs, then select another

virtual desktop, start more programs and so on. To cycle through all the desktops in turn, use

Ctrl-Tab.

Q. You said I could have eight virtual desktops, but I see only four.

Where are the rest?

The default setting is four, but you can easily change the number in increments of two (i.e., 2,

4, 6 or 8). To do this in KDE, click on the KDE icon on the Panel, then select Panel and

Configure. This will display the KPanel Configuration window. Use the Visible slider to change

the number of virtual desktops. (The Width slider lets you control how big the icons are on the

Panel.)

Preparing Today for Linux Tomorrow

21

If you are using the Gnome environment, from the Gnome icon on the Panel go to Program

and select Setting, then Gnome Control Center. When the Gnome Control Center panel

appears, click on Desktop, then Windows Manager and finally Workspaces. Select the desired

number of virtual columns or desktops and press OK to close the panel.

Q. Is it possible to share a program across multiple virtual desktops?

Yes. In the upper left-hand corner of a program window there is an icon that looks like a

pushpin. Pressing this button will “pin” that application in place, making it appear in all virtual

desktops, in the same position onscreen. To remove it from other virtual desktops, press the

button again and it will remain on only the virtual desktop from which it was “unpinned.”

Q. How can I change my desktop background color?

KDE users can click on the KDE icon on the Panel and select Settings, then Desktop and

finally Background. From the Display Settings dialog box you can pick which desktop (from

among the virtual desktops) to modify, then choose one or two colors and/or wallpaper to use.

To test out your choice, press the Apply button. When you are finished, press OK to save your

changes, or Default to go back to the original system default colors. (Cancel will not abort the

changes once you press Apply; it will only close the panel.)

Q. Is there a faster way to copy/cut & paste text than to use the pulldown

menu?

Yes. There is a quick way to copy text with the mouse. If you are using a three-button mouse,

first position the cursor where you wish to place the text, then select (highlight) the text as you

normally would with the mouse. Finally, click the middle mouse button. (If you have a twobutton

mouse set up to emulate a three-button mouse, press both the left and right mouse

buttons simultaneously to achieve the same effect.) The highlighted text will be copied to the

cursor position. This should work in most text editors and command line sessions, as well as

in word processors and other graphical programs. Alternatively, you can paste the text with

Shift-Insert (hold the Shift key while pressing the Insert key), rather than using the third

mouse button.

For a keyboard method, you can highlight the text (using the mouse or holding down the Shift

key while using the left and right arrow keys to “paint” the text) then use Ctrl-C to copy (or

Ctrl-X to cut) the text, then Shift-Insert (or the third mouse button) to paste; similarly to the

Ctrl-C/Ctrl-X/Ctrl-V trio used in Windows.)

Note: Because of all the different user interfaces, editors and applications used in Linux, not

all of these techniques will work in every program, so you may need to experiment to see what

works where.

Command Shell

The next series of questions are specific to using commands and command shells.

Q. If I want to issue a command, how do I open a command prompt?

In Linux parlance, it is generally referred to as a command shell, or simply a shell. Each Linux

distribution includes at least one shell. The most commonly used one today is bash (short for

Bourne Again SHell), an enhanced version of the older Bourne shell. To open the default shell

for your distribution, KDE users can click the Kvt icon on the Panel (the icon that looks like a

computer terminal), or press Ctrl-Alt-F1. This will provide a command line interface (CLI) from

which you can run commands as needed.

Preparing Today for Linux Tomorrow

22

Gnome users can go to the Gnome icon on the Panel, select System and open either a

regular or color Xterm (terminal) session, or command prompt window, by clicking on the

icons that look like a computer terminal with a large red or multicolored X in front of it,

respectively. Alternatively, you can right-click anywhere and open a new terminal by selecting

New, then Terminal.

If you need only a “quickie” command line, just long enough to execute one command and

then close itself, press the Alt-F2 keys. When the pop-up panel appears, type the command

and press Enter. Instead of a command, you can enter a data file name (with the path

necessary to find it) and Linux will launch the appropriate program, based on the file

association. (For example, typing: /home/username/.netscape/bookmarks.html will

cause the default browser to launch.) If you use a path to a directory instead of a file, Linux will

open the directory using the default file manager, such as KFM.

Q. What are the Linux equivalents to DOS/Windows commands?

There are a number of commands in Linux that are similar or identical to either the name or

function of DOS commands. Here are some common DOS commands with their Linux

counterparts:

Command Purpose DOS Command Linux Command

Change to the parent directory

cd.. or cd .. (short for

change directory)

cd ..

Change to the root directory cd\ or cd \ cd / (note the forward slash)

Clear the screen cls clear

Close a command prompt window exit exit

Compare the contents of two files fc (file compare) diff (difference)

Copy a file copy cp (copy)

Create a directory

mkdir or md (make

directory)

mkdir

Delete files del or erase rm (remove)

Delete directories rmdir or rd (remove dir) rmdir

Display file contents, a screen at

a time

more more or less

Display the amount of available

RAM

mem free

Display/change the date date date

Display/change the time time date

Echo output to the screen echo echo

Find a file by filename dir or attrib locate

Find a file by date or other file

attributes

dir (not by date) find

Find a text string in a file find grep

Format a floppy format

mke2fs (or mformat, for a

DOS/Windows floppy)

List files in directory dir (directory) ls (list) or dir

Move files move mv (move)

Rename a file ren (short for rename) mv

Show the current filepath cd pwd (print working directory)

Even though some of the commands are the same, the parameters for these commands may

differ between DOS/Windows and Linux. For example, let us look at the differences between

changing the date and time in Linux versus Windows.

Preparing Today for Linux Tomorrow

23

In Windows, at a command prompt you would type: date 12-31-2000 to change the date to

December 31, 2000.

Then, to change the time to 2:00 p.m., you would use: time 14:00:00 (or simply time

14:00).

In Linux, on the other hand, first you would have to be logged in as the Superuser (or use the

command: su – to temporarily grant yourself that authority), then you would use the

command: date 123114002000. Notice that the 14:00 is embedded in the date string,

between the day and the year. This is the way Linux wants it. You can’t specify seconds using

this command—just hours and minutes.

However, if you want to change only the time—but not the date—use the following command

instead:

date –s 1400

or, if you want to specify seconds:

date –s 14:00:35

(The colons are required when specifying seconds.) In both examples, the –s parameter tells

Linux that you wish to set the time.

For more on the su command, see the Root/User Accounts, Groups and Permissions section,

below.

Q. How do I get help for command parameters?

There are several options available. First, many common commands will have short “manual”

pages built into Linux. You can access them by typing: man, followed by the command name,

such as: man mv to see the parameters for the mv (move) command. Some utilities provide

more detailed (and sometimes newer) command help using the info tool; for example: info

mv. If these tools do not produce results, try following the command with –help or –h, as the

only parameter (as in mount -h or mv --help). Some commands, such as: mformat, will

display the list of available arguments whenever the command is used without parameters, or

with invalid parameters. When in doubt, try them all until you find the one that works.

To learn how to use the info command, type: info info (the tool uses itself to display the

tutorial). To learn more about man, use: man man and/or info man. (The tutorials are

different, so it is not a bad idea to consult both.) When you are finished reading the help

displayed by man or info, press the Q key to quit and return to the command shell.

Q. How do I repeat a command?

If you tend to use the same commands over and over, or recently typed in a rather lengthy set

of parameters you wish to use again, there are a number of ways you can repeat a command

without having to retype it. Linux stores the last 500 commands in a file (called .bash_history)

for quick retrieval. The simplest way to find a recent command is to use the up and down

arrow keys to scroll back and forth through the list until you find the one you want. If you wish

to change a command you used recently, use the up/down arrow keys until you find the

command you want, then use the left/right arrow keys to go to the part you wish to change.

Type in anything you need to add and use the Del key to delete unneeded text.

Alternatively, typing: !! (pronounced “bang, bang”) and pressing Enter will execute the last

command entered.

Preparing Today for Linux Tomorrow

24

If the command is too far back up the list for scrolling to be convenient and you know the

name of the command, you may prefer to jump to it directly, using a shortcut: ! string

(where string represents the command). For example: ! mcopy might find the previously

used command: mcopy –tnm something.txt c:/mydir and execute it directly.

If you are not sure of the command name or have used several variations of the command

and are not sure which one you want, you can view the entire history file using the command:

history (without parameters). The commands will be numbered in the order they were

executed. When you find the command you want, you can execute it simply by typing: ! 452

(or whatever the correct number is). If you do not want to view the entire 500 line history, you

can elect to see just the last x number of commands, such as: history 50 (to see the last

50).

If you need to search the entire 500 item list but do not want to read every line looking for a

command, you can use the grep command to search the contents. For example, to find that

mcopy command from earlier, type: history | grep mcopy (where |, the piping symbol, is

the Shift-Backslash character above the Enter key, on a standard 101-key keyboard). You

can even use partial-word searches with grep, such as: history | grep m (to find the

mformat, mdel and other commands starting with “m” that were executed previously), or even

wildcard searches (history | grep m*y). If none of these methods finds the command

you are looking for, then most likely it was executed more than 500 commands ago and has

“fallen out” of the .bash_history file.

Q. What can I do if I don’t remember the name of a command I need?

You can page through a manual looking for the command you want, but a quicker way is with

the apropos command. It allows you to search a database of available commands, using

keywords. For example, if you want to operate a floppy drive but do not remember what

command you used the last time (or perhaps this is your first time and you do not know where

to start), type: apropos floppy. You should see a result like:

fd (4) - floppy disk device

fdformat (8) - Low-level formats a floppy disk

mbadblocks (1) - tests a floppy disk and marks the bad blocks

in the FAT

mformat (1) - add an MSDOS filesystem to a low-level

formatted floppy disk

mkbootdisk (8) - creates a stand-alone boot floppy for the

running system

setfdprm (8) - sets user-provided floppy disk parameters

(The numbers in parentheses indicate the section in the man pages where this information

can be found, such as: man mformat to look at section 1 (the default) in the man pages for

the mformat command, or: man 8 mkbootdisk to go directly to section 8 to see the rmt

command.)

If you were to use the command: apropos diskette instead, Linux might return a “nothing

appropriate” message. This indicates that apropos doesn’t recognize the term “diskette.” If

this happens on a search, simply try another term to look for, such as “floppy.” It is also

possible that apropos won’t find every possible related command. For instance, if you search

for information on tape drives using: apropos tape, it would list a number of commands

related to operating the tape drive, including mt and rmt, but it would not include tar, which

can be used for tape backup, so you may need to be creative to find what you are looking for.

Preparing Today for Linux Tomorrow

25

Note: If the apropos command doesn’t work, it may mean that the whatis database (which is

accessed by the apropos command) has not yet been built. To create the database, first use

the: su – command (and type in your password when prompted) to log in as root, then enter:

/usr/sbin/makewhatis. This process may take several minutes. When it finishes, try the

apropos command again. For more on whatis, refer to the question, Is there online

documentation for most programs?

Q. I just used a command and got completely different results from the

last time I used it. Why?

Remember that Linux is case-sensitive. Verify the case of the parameters you used for the

command. For example, if you type: tar –xvf filename.tar one time, and: TAR –XVF

FILENAME.TAR on another occasion you will get different results, because x and X, v and V, f

and F, are all valid, yet different, parameters for the tar command. In fact, because

commands are case sensitive as well, you could have two completely different commands,

called tar and TAR—with different syntax and parameters—on the same system.

Q. Long pathnames are a pain to type in. Is there any sort of shortcut I

can use?

Yes, in some cases. If you are using the Bash shell, or other shell with similar capabilities, you

can take advantage of a feature called filename expansion, by using the Tab key. You can

type the first part of a directory name, then press Tab and it will complete the name for you (as

long as there are no other names starting with the same letters.

For example, if you want to list the /home/johnson/projects/2000 directory, you could type:

ls /ho[Tab]/jo[Tab]/pr[Tab]/2 and the shell will expand the pathname for you. But,

what happens if you have two directories under /home/johnson, called /projects and

/previews? If you know this ahead of time you could just change /ho/jo/pr/2 to /ho/jo/pro/2,

to eliminate the conflict. Alternatively, if pressing the Tab key after /pr doesn’t provide the

pathname expansion, pressing Tab a second time will bring up a list of all names that start

with “pr”. (In other words: ls /ho[Tab]/jo[Tab]/pr[Tab][Tab].) Then simply use the

keyboard up-arrow key to repeat the previous command and change “pr” to “pro”, or whatever

else is needed to create a unique match; then finish the command with the /2 at the end.

Q. Is there a way to use one command to start more than one program at

a time?

Yes. The command shell allows you to “stack” commands on one command line, to be

executed in order. For example, if you type: ls –l; cd ..; ls –a Linux will list the

current directory contents in “long form” (ls –l), then change directory to the parent of the

current directory (cd ..), and finally list all files in that directory (ls –a). The “semicolonspace”

separating the individual commands is how Linux knows where one command ends

and the next begins. If you wanted to copy a file from one directory to another and then to a

floppy (while changing its name), and then display the contents of the floppy, you could type:

cp /dir1/myfile.dat /dir2; cp /dir1/myfile.dat /dev/fd0/myfile2.dat; ls –a /dev/fd0

Stacking commands can be an efficient way of starting several programs that must run

sequentially, without having to stand around waiting for each to finish in turn. Simply type in

the stacked commands and walk away until the last one is done. Of course, if you need to

perform several tasks end to end on a recurring basis, it makes more sense to create a “script”

file (like a batch file, for you DOS/Windows users) containing those same statements. Then

you just have to type in the name of the script file, instead of a long multi-part command.

Preparing Today for Linux Tomorrow

26

Warning: Like many powerful tools, command stacking can be a double-edged sword. It can

hurt you as easily as help, if you are not careful. As an illustration of what can happen if you

are careless, years ago I was using the OS/2 operating system to write a book about OS/2,

which also supports command stacking (although without requiring the semi-colon between

commands). I decided to delete the existing files from an old diskette so that I could back up

my book chapters (one file per chapter) to it. I intended to type in the following command: del

a:\*.* which would have deleted all files from the root directory of the a: drive.

Unfortunately, what I actually typed was del a: *.* (a space where the backslash should

have been). OS/2 interpreted that as “delete all files from a: (del a:) and then delete all files

from the current directory (del *.*)”—all my original files! I realized what was happening

about halfway through the files on the hard drive and was able to cancel the job before the

rest were deleted. Fortunately, I had a backup from the night before, so I lost only a few hours

work, but it could have been much more serious. The moral of this story is be very careful with

command stacking (or script files), because a lot can happen when you run programs

unattended. If you were to issue a command to first copy a file to a floppy and then delete the

original, and the floppy copy was unsuccessful (the disk was full, or not formatted, or

defective), it is possible for the file to be deleted without having been backed up first.

Q. Is there a way to stack commands and have them execute

concurrently in other command sessions?

Yes. Running the stacked commands in the examples from the previous question will cause

them all to execute one after the other in the same session window, rendering it unavailable

until all the commands have finished running. If you would rather the commands launch

another command session and run the commands from there, simply append an ampersand

(&) symbol to the end of the first command, such as:

cp /dir1/myfile.dat /dir2&; cp /dir1/myfile.dat /dev/fd0/myfile2.dat; ls –a /dev/fd0

In this case, Linux would launch a new session for the first command, then continue to

execute the remaining commands in that session when the first one is finished. Meanwhile,

the original session is available for your use.

If for some reason you want each command to run in its own session, append the ampersand

to all of them, as follows:

cp /dir1/myfile.dat /dir2&; cp /dir1/myfile.dat /dev/fd0/myfile2.dat&; ls –a /dev/fd0&

Of course, if you are doing this just to free up the original session so you can keep working

while the other sessions are busy running those commands, a simpler solution might be to just

manually launch a second command session to work from while the first one is busy.

Launching several programs in different sessions offers possible advantages. If, for example

one program is doing heavy database updating while a second is performing spreadsheet

recalculations and a third is displaying complex graphics onscreen, each is primarily stressing

a different part of your computer’s hardware. (The database update is using the hard drive

heavily, the spreadsheet is grabbing a lot of processor cycles to calculate numbers and the

graphics program is mainly using the video controller.) Running them all at once could greatly

improve the performance of your computer by using system resources that would otherwise sit

idle until the current program finishes.

Bear in mind, however, that how useful this is will depend to a great degree on the kinds of

programs you are running and the type of hardware your computer has installed. For example,

if you run two programs at once that both make heavy use of your hard drives, people with

multiple IDE drives (or one SCSI drive) will likely see little or no performance improvement by

doing this. This is because the time spent jumping back and forth between hard drives, or

Preparing Today for Linux Tomorrow

27

even between areas on the same hard drive, offsets much of the time savings of running the

programs together. IDE devices are “dumb,” relying on the processor on the IDE controller to

handle all the disk drive instructions, but the controller can access only one drive at a time, so

it has to stop working on one drive, switch to the other, work for a while, then stop and return

to the first. This is very disruptive. On the other hand, for those computers with SCSI drives,

the situation is very different. SCSI devices are intelligent (which is why they typically cost so

much more than IDE drives) and the SCSI controllers can multiprocess, allowing all SCSI

devices to execute concurrently and independently of one another. So if you have two

programs accessing data on two different SCSI drives, they can both run full speed all the

time. Of course, regardless of disk type, if you do not have enough memory to run both of

these programs concurrently, Linux will have to alternate between them in memory, swapping

all or part of one program out to the hard disk temporarily. This extra disk activity will reduce

the amount of time that can be spent reading/writing the data files, again hurting performance.

Similarly, if one program is making heavy use of the processor and the other is primarily

graphics-oriented, there still may not be as much an advantage as you might think to running

them concurrently. If you have a high-end video card with lots of memory, it may be able to

process all of the graphics commands using the video controller’s onboard processor and

memory. However, many computers—especially those at the low end of the price range—use

inexpensive video controllers with little or no video memory (some share the computer’s

memory instead, using something called Uniform Memory Architecture, or UMA). This means

that the computer’s processor may have to process all of the spreadsheet calculations and the

graphics calculations at once, reducing the performance of both programs. Moreover, using

the main computer memory for both may again result in swapping, unless you have lots of

system RAM.

Still, it can’t hurt to try executing your stacked commands concurrently. If they all complete

faster than if run sequentially, terrific. If not, you can always go back to running them the “old

fashioned” way.

Logging In/Logging Out/Shutting Down

This section contains questions or problems involving shutting down Linux, or logging out of

an account.

Q. I can’t seem to log in, even though I’m using the correct password.

What’s wrong?

Linux is case-sensitive, meaning that a password of a1b2c3 is not the same as A1B2C3. Be

sure that the Caps Lock key is turned off before typing your password (unless, of course, your

password is all caps).

Q. Why do I need to use Shutdown? Can’t I just turn the power off?

Just as with Windows, using Shutdown allows the system to save open files, flush the system

cache and do other necessary system maintenance. Turning the power off abruptly

circumvents this housekeeping and can result in lost data and other problems. Also, because

the file system is left in a “dirty” state, it must be cleaned up the next time the system is

booted, slowing the reboot considerably.

Q. I can find a Logout option, but where is Shutdown?

Using the KDE user interface, click on the KDE icon (the large stylized K) on the Panel and

select Logout. When the Login panel pops up, click on Shutdown and then one of the three

options: Shutdown, Shutdown and restart or Restart X Server. Shutdown shuts down the

Preparing Today for Linux Tomorrow

28

operating system and turns the system power off; Shutdown and restart does a restart, and

Restart X Server restarts only the X Server process without restarting the system.

From the Gnome desktop, click on the Gnome icon (the large stylized G that looks like a funny

footprint) on the Panel and select Log out. When the Log Out Confirmation panel pops up,

select one of the three choices: Logout, Halt, or Reboot and press the Yes pushbutton. Logout

logs you out of your account and brings up the Login panel; Halt logs you out and turns off the

system; Reboot logs you out and restarts the system. (Halt and Reboot will require your

account password to proceed.) Pressing the No pushbutton will return you to your Gnome

session.

From a command line, use one of the following commands: shutdown –r now (to reboot

immediately), or shutdown –h now (to halt, or stop, the system). To set an interval before

shutting down, replace “now” with “+number”, such as: shutdown –r +5 (for a five minute

delay). You will be prompted for your account password before the system shuts down.

Q. Is there a faster way to “warm-boot” the system than using

Shutdown?

Yes. As with Windows, you can use the Ctrl-Alt-Del key combination to restart the system,

but first you must open a full-screen virtual console session. A simple way to do this is by

pressing Ctrl-Alt-F1. Once the text mode screen appears you can press Ctrl-Alt-Del. You will

not be asked whether you are sure; reboot is immediate. Be sure that you do not have any

files open before doing this, as you can lose data otherwise. If, after opening a virtual console

you change your mind, press Ctrl-Alt-F7 to close the console and return to the graphical

desktop.

Q. Do I have to use Shutdown if I am just turning over the system to

another user?

No. In this situation, the preference would be to simply use Logout, allowing the next user to

login without the time and effort of rebooting the system.

Q. I clicked on Logout and now the session is locked up. How do I log

out?

Just press Ctrl-Alt-Backspace to kill the session and return to the Login screen.

Q. How can I enable Linux to automatically restart applications that are

running when I use Shutdown or Logout?

On both the KDE Logout panel and the Gnome Log Out Confirmation panel there is an option

to Save current setup. Make sure these options are selected before logging out of these

environments.

Files and Directories

The following questions relate to working with files and directories.

Q. What is the root directory?

The roots of a tree form the foundation for the entire tree. The trunk of the tree has a few large

branches; these branches lead to smaller branches, which in turn have smaller and smaller

branches that eventually lead to leaves.

Preparing Today for Linux Tomorrow

29

Using this analogy, the root directory is the base (roots and trunk) from which all directories

(main branches) and subdirectories (smaller ones) branch-off. Inside these directories are

data files and programs (the leaves). This sort of arrangement (used by UNIX/Linux,

DOS/Windows, OS/2 and other operating systems) is often referred to as “tree-structured.”

Q. Can you explain more how the directory structure of Linux works?

The main difference between how this works in Linux versus Windows, is that Windows uses

backslashes (\) instead of slashes (/) in the directory pathnames. To illustrate, here is the

hierarchy of a series of directories branching off the root:

/

/home

/home/mark

/home/mark/.netscape

/home/mark/.netscape/cache

/home/mark/StarOffice51

/home/mark/StarOffice51/database

/home/mark/StarOffice51/gallery

/home/mark/StarOffice51/gallery/clipart

/home/susan

/home/susan/.netscape

/home/susan/.netscape/cache

/usr

/ust/etc

To show it another way, this is how it looks lining up those same directories by equivalent

levels of “depth”:

/

/home

/mark

/.netscape

/cache

/StarOffice51

/database

/gallery

/clipart

/susan

/.netscape

/cache

/usr

/etc

The / indicates the root, or base, directory. /home is a directory off the root and /home/mark

and /home/susan are directories branching off from /home. (These subdirectories hold

account-related files for user IDs “mark” and “susan”.) Within /home/mark there are

directories called .netscape and StarOffice51, which in turn have directories branching off

from them. Susan has a similar directory structure for her Netscape data files. Outside of the

/home directory structure, there is also a directory called /usr branching directly off the root.

To change analogies for a moment, if /mark (and its subdirectories) and /susan (and its

subdirectories) are each children (and grandchildren) of the /home directory, then /usr is a

sibling (or peer) directory of /home. Both are direct offshoots of the root. (This whole naming

convention is referred to as the “file namespace”.)

From the root directory, to delve deeper into directories and subdirectories, use the cd

(change directory) command. For example, cd /mark/StarOffice51 would immediately

Preparing Today for Linux Tomorrow

30

move you down the directory path from the root to the contents of the subdirectory

StarOffice51. (Using the command: ls –a at that point would show you the files and

subdirectories stored in StarOffice51.) If you then wanted to change to the cache directory

inside of StarOffice 51, you have two ways of doing so. You could type the “absolute” path of:

cd /home/mark/.netscape/cache (which says, “starting from the root, travel down these

directories”) to get there, or you could simply use the shorter “relative” path of: cd cache to

get to the same place. A relative path means, “starting from where we are now, go to the next

level directory, called cache.” (Had there also been a directory below cache, called etc, we

could get there from the StarOffice51 directory with the command: cd cache/etc).

Remember, preceding the pathname with a forward slash (/) tells Linux to start from the root

directory. Therefore a command of: cd /cache/etc would fail in the preceding example

(unless you also happen to have a cache directory branching off from the root, with its own

etc subdirectory). Why? Because it is looking for the cache directory starting from the root

rather than from the StarOffice51 directory.

Reversing our direction, if you use the cd .. command from within a directory it will step you

back up a directory level (such as from /home/mark/StarOffice51 to /home/mark). You can

repeat this command as often as necessary to return to the root directory (/). Alternatively, to

jump directly to the root, use the cd / command. (This is equivalent to cd\ or cd \ in

DOS/Windows.)

Q. There are a number of directories I don’t recognize in the root

directory. What are they?

These directories store essential system files and programs. For example, the /etc (et cetera)

directory contains configuration files, where system and application settings are stored.

Beneath that, the /etc/skel directory contains shell, or “skeleton” files used to create user

accounts. The /usr (user) directory stores other important files, including program libraries

(shareable system program modules) in /usr/lib, manual pages for the man utility in /usr/man

and other documentation in the /usr/doc and /usr/info directories. Other such system

directories include /lib (libraries: security files, system modules and libraries containing

software libraries and informational databases), /opt (optional: pre-loaded software packages

are often stored here) and /var (variables: spooling, logs and all messaging files). Unless you

have a specific reason, and know what you are doing, it is a good idea to leave those

directories alone.

Q. Is there a command line shortcut to the login directory?

Yes. From any shell prompt simply type: cd and press the Enter key.

Q. Some filenames are preceded by a dot. What does this mean?

A filename that starts with a dot—such as .bashrc or .netscape—is a hidden file. They are

often used to hold user preference settings, and other configuration information. These files

are hidden to make it less likely that they will be accidentally deleted. Hiding files also makes a

file listing shorter and less cluttered with files the user will rarely be interested in. There are

different ways to see these files. For example, the ls (list) command with no parameters won’t

display these files, but ls –a (list all) will.

On the other hand, if you are using the K File Manager (KFM) under KDE, simply select View,

then Show Hidden Files from the pull-down menu to see these files. (To start KFM, just click

on the Panel icon that looks like a house in front of a manila folder.)

Preparing Today for Linux Tomorrow

31

Gnome users can click on the Gnome icon (the funny G-shaped footprint) on the Panel, select

Programs, then File Manager. From the Gnome File Manager, choose Settings, then

Preferences; finally, click on Show hidden files.

Q. When I look at a list of files and directories, the names are followed by

something like -rw-rw-r-- or lrwxrwxrwx. What does this mean?

These cryptic notations actually describe the “permissions,” or access levels, assigned to

three groups: the file owner, groups and other users. The first position identifies what type of

object the item is. Possible types include a physical (actual) Directory/folder (d), a physical file

(-), a mere Link/alias (pointer) to a file or folder (l)—similar to a Windows shortcut, a Socket

(s), a pipe (=), or a device (b is for “Block” devices, such as disk drives, that handle data a

block at a time; and c is for “Character” devices, like serial and parallel ports, that deal with

data one byte, or character, at a time). The remaining nine positions are composed of three

groups of three characters each.

The first three apply to the file owner (usually its creator). The next trio describes the

permissions granted to any authorized groups of users and the final three characters denote

any access available to unspecified other users. Each triad of positions reveals whether the

user has Read (r), Write (w)—i.e., create/modify/delete, or Execute/run (x) permission, or no

permission to perform one of those actions (-).

Using the first example from the question, -rw-rw-r-- tells us that the object is a file (because

the first character is -). The first rw- indicates that the owner has read/write access to the file,

but not execute (so it can’t be a program, otherwise the owner would be able to run it).

Likewise, any groups that have been granted access to the file can Read and Write to it (the

second rw-). However, any “other” users (those not expressly added to the authorized group)

have only Read access to the file, as evidenced by the r-- at the end. If the permissions were

drw-rw-r-- instead, the only difference would be that the object is a folder/directory rather than

a file.

In the other example from the question, lrwxrwxrwx means that the object is a link to a file or

folder and all three groups have read, write and execute permission to access that object.

Execute permission means that if it is a program, script or other executable file, an authorized

user (in this case, anyone) can run it, and if it is a folder then the user can read the contents.

Q. The ls command doesn’t show everything in the directory. What’s

wrong?

The ls (lowercase L, not capital i) utility has many parameters to let you view the directory

contents in different ways. For example, ls –a shows all files and ls –al shows all files in

“long” form (with additional details), while ls –a --color adds a splash of color to

differentiate the various types of files. (For the list of parameters, use: ls --help or type:

man ls for a full description.)

Q. Can I use wildcard searches with the ls command, as I can with Dir in

DOS/Windows?

Sure. You can search for all files ending with the .txt extension using: ls *.txt, or all files

starting with “mc” and with any extension, using: ls mc*.*. If you are looking for a file

among a long list of files with similar names, you might limit the wildcard to just one character,

using the ? symbol. For example: ls hello?5.c would find files called hello05.c, hello95.c,

helloj5.c and so on, but not hello105.c or hellor7q5.c. You can even combine wildcard

characters for very specific searches, such as: ls hello?5.*. (Wildcards can also be used

with other commands, including cp (copy), mv (move), rm (remove), etc.)

Preparing Today for Linux Tomorrow

32

Q. I want to do a wildcard search on files with ? or * in the names. How

do I do that?

Unlike DOS/Windows, UNIX/Linux does allow those characters, as well as ) and ( and | and

other special characters in file and directory names. To distinguish between a wildcard search

using ? or * and a search for those particular characters, you merely need to insert a

backslash (\) before the wildcard character. For example: ls hello\?.txt or ls

myfile\*.c or ls mc\)127.h would find the files hello?.txt, myfile*.c and mc)127.h,

respectively. You can also combine these “regular expressions” with wildcards in searches,

such as ls hello\?.t?t (which would list hello?.txt and hello?.tst), or ls mc\)127.*

(which would list mc)127.h and mc)127.c, for example).

Q. How do I create or rename a file with special characters in the name?

As with the previous question, you merely need to insert a backslash before the special

character. For example: touch hello\?.txt would produce an empty file called hello?.txt;

touch myfile\*.c would result in myfile*.c; and touch mc\)127.h would create

mc)127.h. Similarly, mv hello.txt hello\?.txt would add a ? to the filename,

immediately before the dot. To use multiple special characters, simply insert a \ before each

one; for instance: touch myfile\(\*\*\).txt would produce myfile(**).txt. The

procedure is the same for any other special character. If you are not sure which characters

require the \ treatment, simply try the command without it first. If you receive a “sh: syntax

error near unexpected token ‘yourfilename.’” message (where ‘yourfilename’ is the name you

tried to create), then you need the backslash.

Important Note: Although you can include many special characters in this manner, using

some special characters, including the asterisk (*), question mark (?), hyphen (-), vertical

bar/piping symbol (|), circumflex or caret (^), apostrophe (‘) and ampersand (&, in a file name

is generally not a good idea, because they may be confused with wildcard, parameter

(“argument”) and other symbols by various commands. In addition, using a space in a

filename (such as my file.txt) may cause some commands to treat the name as two

filenames, or a parameter and a filename. (To avoid this problem, enclose the name in quotes,

as in “my file.txt”.) Any of these conditions will cause unintended results. At the very least,

these special symbols can make filenames more difficult to read. Unless you have a good

reason for doing so, it is probably best not to use them.

Q. How long can a filename be?

A filename can be up to 255 characters long, including numbers, letters and special symbols,

as well as a combination of upper and lower case (which are treated as different characters by

Linux/Unix). However, for the sake of readability and to make it easier to type from the

command line, much shorter names are preferable. This 255-character limit does not include

the full path. In other words, if a file called ThisIsMyVeryLongFilename.txt is in the

/user/mark/garbage/files directory, the filename alone can be up to 255 characters,

excluding the characters in the pathname. To illustrate, out of the following path:

/user/mark/garbage/files/ThisIsMyVeryLongFilename.txt

only the 28 characters (bolded) following the final / comprise the actual filename (including the

dot before “txt”).

Q. The directory listing is too long and scrolls off the page. Is there a

way to view a page at a time?

Preparing Today for Linux Tomorrow

33

Yes. There are programs, called “pagers” to do this. Just as in DOS/Windows, where you

could use: dir c:\ | more to list the contents of the root directory, in Linux you can type:

ls –a / | more

Or, using an alternative utility:

ls –a / | less

Using less, press the Spacebar to move ahead a page at a time; to back up, use the B key.

When you are done, press Q to quit.

Q. Is there a way to find files from a command shell?

Just as Windows has a Find feature, Linux has the locate command. It will find data files,

programs, directories and other objects whose names match your search argument. For

example, locate myfile will find myfile.txt, /myfile and other matches. (For more on

locate, including search parameters, use: man locate.) Locate searches a database (called

slocate.db) on your hard drive used for this purpose, which is updated overnight. If you are

searching for a new file that locate is unable to find (or you regularly shut the system down

overnight, so the database doesn’t get updated often), you can force a manual database

update. To do this, use the: su command to temporarily login as root, then from the shell

prompt type: updatedb. Wait a few minutes for the database update to complete and try the

locate command again.

Note: Linux does also have a find command, but for performance reasons locate is better for

searching on filenames. If you have a need to search by file date or other attributes or would

like to automatically execute a program using the found file as a parameter, or any of a large

number of other interesting uses, find is the command to use. For more on find, use: info

find.

As an alternative, if you are merely looking for the binary, source and manual pages for a

command, you might try the whereis command. To illustrate the difference between whereis

and locate try the following two commands: whereis passwd and locate passwd. As you

can see, the whereis command found only a few files, while the locate command listed

dozens. That is because whereis was looking for a few specific files (all called passwd.*),

while locate was busy seeking any file or directory name containing “passwd” in the name

(including gpasswd.1.gz, autopasswd, passwd-1.html, etc.) For another example, try:

whereis *.doc and locate *.doc. As before the locate command came up with many

files sporting a .doc extension. The whereis command, however, found nothing. Why?

Because there is no Linux command called “*.doc” or even “doc”. Remember, whereis works

only on files associated with commands, not just any old data file or program.

Q. Is there a way to browse through a text file from the command line?

Yes. Perhaps the best way is to open the file with a text editor, such as Pico, Emacs, Vi or

others, and scroll or page through the file. However, if you are trying to do the browsing from

the command line without opening the file first, you can use the head and tail utilities, or the

more or less commands. For example, head myfile.txt would display the first 10 lines of

the file onscreen, by default. The command: head –40 myfile.txt would show the first 40

lines. (You can substitute larger or smaller numbers for “40”.) Similarly, tail displays the last

10 lines of a file, as in: tail myfile.txt. (If the file is short, but you are not sure how many

lines long, you could use the cat command (short for concatenate) to display the entire file on

the screen, such as: cat myfile.txt.)

Preparing Today for Linux Tomorrow

34

Obviously, this is fine if you know approximately how close to the beginning or end of a file the

text string is, but not if it is somewhere in the middle of a large file. In that situation more or

less would be more productive. (See the question, The directory listing is too long and scrolls

off the page. Is there a way to view a page at a time? in this section, for information on those

commands.)

Q. Is there a command to search text files for a specific character string?

Yes. Naturally, you can open a file with a text editor and use its search function. However, if

you prefer to search from the command line, you can use the grep utility. It is a very powerful

text file search tool. You can perform wildcard searches on a specific file, but more

importantly, you can search many files at once, also with wildcards. For example, say you

have a directory full of text files and you know that one of them contains the phrase, “Mary had

a little lamb”, but you do not know which file it is. Using the command: grep “Mary had a

little lamb” *.txt might result in the following output:

myfile.txt: Mary had a little lamb. Its fleece was white as

snow. And everywhere that Mary

(Note the use of quotation marks around the phrase to identify the search string when multiple

words are involved.) The grep command shows the entire line of text containing the search

string to make it easier for you to determine whether it is the correct text (because there may

be multiple matches).

Note: The grep utility is by default case-sensitive, so searching for “Mary” would not find mary

or MARY. If you wish to perform a case-insensitive search, add the –i parameter in the

preceding example. Then it will find Mary, mary, MARY, mARy, or any other mixture of case.

For example, a case-insensitive wildcard search such as: grep –i mar* *.txt might yield

this result instead:

myfile.txt: Mary had a little lamb. Its fleece was white as

snow. And everywhere that Mary

personnel.txt: Candidates for a pay increase this year include

Johnson, Martin and Littlefield.

personnel.txt: Due to Smith’s impending marriage, she will be

taking a two-week honeymoon in

Not only were there “hits” in two different files, but there were two separate occurrences of

“mar” in the personnel.txt file as well.

The results of a search can even be copied to another text file or printed, using the piping

symbol (|). (See the question, The directory listing is too long and scrolls off the page. Is there

a way to view a page at a time? in this section, for information on piping.) Search results can

also be redirected to a file using the redirection and append symbols (> and >>). (See the

question, Is there online documentation for most programs? in the General Usage section, for

information on redirection.)

There is much more that can be done with the grep command. For example, the –c parameter

tells grep to display only the count of the number of times a string appears in a file, rather than

the text of the matches (such as personnel.txt:2). For more information, read the manual

page (command: man grep).

Preparing Today for Linux Tomorrow

35

Q. What are “symbolic” and hard links, and how can I identify them?

Symbolic (soft) links work much like “shortcuts” in Windows, as pointers to programs, data

files or directories located elsewhere. Links allow you to start a program from more than one

folder (or the Desktop) without having to duplicate the files in multiple places. Links are

independent files—only a few bytes in size—that can be renamed or moved without affecting

the original programs or files they point to. Conversely, if the original file is moved, deleted or

renamed it will break the link, because it no longer matches the filename and location pointer

stored in the link. (If a link is broken this way, it should be deleted—as it is no longer useful—

and a new link created, if needed, for the new filename and/or location. On the other hand, if

you rename the original file back to what the link is expecting, or return it to its original

location, the link will “magically” work again.)

Symbolic links can be identified, using the K File Manager (kfm) or other graphical file

manager, by a small arrow in the lower right corner of an icon, pointing at the icon. From the

command line, one command you can use is: ls –F (capital F, not lowercase). When the

filenames are listed, the symbolic links will be followed by an @ symbol. For example, if you

were to list the files in the /bin directory, you might see:

arch*

ash*

ash.static*

aumix-minimal*

awk@

basename*

bash*

bash2*

bsh@

and so on, where awk@ and bsh@ are the symbolic links to files in other directories. (The *

following the other names indicates that they are “original” files.) Alternatively, you could use

the: ls -il command (see below).

Link files specific to the KDE user interface will have .kdelnk filename extensions, such as

Autorun.kdelnk.

Another type of link is the “hard” link. This is similar in function to a symbolic, or soft, link

except that renaming, deleting or moving the original file won’t break the link (because it

actually links to the physical file on disk, not just the file pathname in the disk directory

structure). Hard links apply only to data files or programs, though, not to directories.

All files have at least one hard link (the actual filename in the directory listing). Adding another

hard link increments the hard link count, which you can display using the: ls –il command.

For example:

619880 -rw-rw-rw- 2 ownerid groupid 428 Apr 14 19:42 myfile.txt

145389 -rw-rw-r-- 1 ownerid groupid 7285 Sep 30 10:17 coffee.txt

268394 -rw-rw-rw- 1 ownerid groupid 8912 Nov 4 19:42 tea.txt

619880 -rw-rw-rw- 2 ownerid groupid 428 Apr 14 19:42 person.txt

(The –i parameter says to display the “inode” number—explained below, and the l argument

tells Linux to show the directory list in long form, including the permissions, owner and group

Ids, file sizes, and creation date and times.) There are four different filenames listed, but

notice some key similarities between two of them: the files myfile.txt and person.txt have

exactly the same date, time, file size and properties. In addition, they both show “2” for the

number of hard links, but all of these similarities could just be a coincidence (after all, two

unrelated files of the same size and type could have been created within a minute of one

Preparing Today for Linux Tomorrow

36

another). The real clincher, however is in the set of numbers preceding the file permissions

listings. (For an explanation of file/directory permissions, see the question, How do I display

the permissions for a file or directory?) The “619880” number is the inode, or physical disk

address of the file. Only one file can occupy a given block of disk storage (just as only one car

can occupy a particular parking space at any one time). Therefore, these “two” files must in

fact be only one physical file with two hard links (filenames) to the file.

Again, unlike soft (symbolic) links, deleting either of these two files doesn’t affect the other.

Another difference between the two types of links is that hard links can’t span disk drives. In

other words, a hard link can’t be created on /dev/hdb to link to a file on /dev/hda.

Q. How do I create links (symbolic or hard)?

The ln (link) command can be used to create both types of links. For example, to create a

hard link called myfile2.txt to a file called myfile.txt, type: ln myfile.txt myfile2.txt.

This will create the link in the same directory as the original file. To create a symbolic link

called myfile3.txt to the same original file, use: ln –s myfile.txt myfile3.txt (the –s

parameter is what tells Linux to make the link symbolic).

If you use the: ls -il command to list the directory contents, you should see something like

the following:

619880 -rw-rw-rw- 2 ownerid groupid 428 Apr 14 19:42 myfile.txt

619880 -rw-rw-rw- 2 ownerid groupid 428 Oct 2 10:18 myfile2.txt

224516 lrwxrwxrwx 1 ownerid groupid 6 Oct 2 10:18 myfile3.txt -> myfile

Note that all details of the hard link (myfile2.txt), including the inode address (619880), are

identical to that of the original file (myfile.txt) except for the creation date and time. It is

treated as a physical file (as verified by the file size and the permission type of -), but at the

same location as the original file (same inode address) with the same read/write permissions.

The 2 following the permissions reflects the number of hard links to the physical file (the

directory listing for the original file being the first hard link). Conversely, virtually every aspect

of the symbolic link (myfile2.txt) is different. The inode address differs because there is a

physical file created elsewhere on the disk that contains a pointer to the original file. Likewise

the permissions differ, with the symbolic link showing a file type of link (the l leading off the

permissions) and including execute permissions for all user types. The 1 following the

permissions demonstrates that this is not a hard link. Finally, the filename is followed by “->

myfile”, which reveals the name of the original file to which it points.

Note that creating a hard link for this file in the same directory probably would not be the

normal usage of a hard link. More likely, you would create it in another directory so that you

could access the file from either place (or several places, if you make multiple links). For

example: ln myfile.txt /user/mark/myfile2.txt would put the new link in the

/user/mark directory.

Linux itself makes use of hard links. In many cases Linux continues to use programs and files

that were first used in earlier versions of Linux, which can sometimes cause problems. For

example, if the X Window System was first provided in a directory called /usr/X11R4, Linux

software which used X Windows would look for those files in that directory. But when a newer

version of Linux comes out that uses a later version of X Windows, the files might be stored in

/usr/X11R5 or /usr/X11R7 or /usr/X11R10. So how to keep from breaking all those programs

that are expecting the files to be stored in /usr/X11R4? Simple. Put hard links from one

directory into the other. This way, whichever directory the application software looks in for

those files, it will find what it needs.

Preparing Today for Linux Tomorrow

37

As an alternative to the command line interface, some graphical file managers (such as GNU

Midnight Commander), offer options to create either or both types of links by right-clicking on a

file icon.

Q. Can you summarize the differences between symbolic and hard links

and differentiate between using links and simply duplicating a file?

Sure. If you merely copy a file from one directory to another, you have doubled the disk space

used by the file, and editing one file doesn’t affect the other (because they are in no way

connected to one another). This is fine if it is what you intended (so that you can keep a

pristine original while modifying another copy, or if you made a backup copy for safekeeping.)

If you copy a directory instead of a file, you also copy the entire directory’s contents, which

can result in a lot of disk space used. A file or directory copy can be put anywhere on any disk,

either directly attached to the system or on a network or Internet/Intranet drive somewhere

else entirely. Because the original and the copy are unconnected, deleting one has no effect

on the other.

On the other hand, if you create a symbolic link it takes only a few bytes of space and can be

located on any mounted device that you can type in a path for. If you delete, rename or move

the original, you break the link (although recreating the original in the same place will restore

the link). Using the link to access the file or directory, any changes you make to the file or to

the directory contents will affect the original files/directories, because those are what you are

actually touching.

Alternatively, if you create a hard link instead, no additional disk space is used, however the

link can only be created on the same physical hard disk (but multiple partitions on that disk),

not on other local or remote devices). Moving or renaming the original file won’t hurt the link; it

will reflect the change. When you “delete” the original file, you are actually deleting only the

original hard link (the directory name). So, as long as at least one other hard link exists, the

file is still accessible. Hard links can be created for files but not for directories. Because the

permissions indicate that a hard link is a physical file, any software that tries to access these

files will think it is accessing the original files (which, in fact, it is—through the link).

Q. I recognize a number of file types, such as .JPG, .GIF, .WAV, .TXT,

.HTM and .ZIP from Windows, but I see many other file types I don’t

know. What are they for?

There are a number of file extensions that are common in Linux/UNIX but not typically seen in

the Windows world. Here are some of them:

.a – Archive file .png – Image file (like .jpg/.gif)

.au – Audio file (like .wav) .ps – PostScript printer-formatted file

.bzip2, .bz2 – Archive file compressed with

bzip2

.rpm – RPM Package Manager file

.c – C programming language source file .so – Program library file

.conf – Configuration file .tar – Archive file

.cpp – C++ language source file .tar.bzip2, .tar.bz2 – Archive file

compressed with bzip2

.gz, .gzip – File compressed with gzip .tar.gz, .tar.Z – Archive file compressed with

gzip

.h – C or C++ language header file .tga – Image file

.html – HTML file (same as .htm) .tgz – Archive file compressed with gzip

.o – Program object file .xpm – Image file

.pl – Perl script file .z, .Z – Older gzip file

Preparing Today for Linux Tomorrow

38

If you encounter a file type you do not recognize (such as one with no file extension), you can

use the file command to find out more about it; for example: file smith.xyz or file

smith (if there is no file extension).

Q. Should I back up my entire system?

That is not as easy a question to answer as it may sound. A fully configured system with

operating system, many large applications, data files and perhaps a library of multimedia files

(music, video, photographs, etc.) can amount to many gigabytes of information. Unless you

have a high-capacity, high-speed backup option (such as a 4mm, 8mm or DLT tape drive, or

an Iomega Jaz removable disk cartridge, for example), it just is not practical to back up

everything. On the other hand, because you probably installed all your software from a few

CDs, it is not absolutely necessary to back up the operating system and applications. If you

back up only your data files, setup files, account files and others that have been created or

modified since installation, you can always reinstall the software from CD, then restore the

backed up user files.

Of course, the disadvantage to this, in the event of catastrophic disk failure, is the time and

effort needed to install all that software individually, rather than just starting a restore program,

inserting a tape or Jaz cartridge and walking away. But if you do not have a high-capacity

backup solution at your fingertips, a partial backup is the most effective method for all but a

complete system rebuild. Each application will have its own set of configuration files that

should be backed up, as well as data files, but you will have to find out what they are from the

software documentation or the vendors.

From a Linux standpoint, the directories you should be sure to back up include:

/etc

/home

/opt

/usr/lib

/usr/local

/usr/src/linux (if you have modified any of the kernel programming)

/usr/X11R6/lib/X11 (if you are using X Windows)—Case is important in this folder name!

/var/spool/mail

Of course, you should also back up any directories containing important user data files. If you

lack large-capacity storage, you can always back up each application’s files to its own set of

floppies using an archiving/compression utility, such as tar, gzip, bzip2 or zip. These and

other tools can span more than one disk or tape to store all the data in one related archive.

This method may not be as quick or efficient as a tape drive, but at least you will have a copy

of your essential files. It is not necessary to back up the program files themselves, as you can

always just reinstall the applications from scratch, but you might want to back up the files that

contain the user setup information (preferences), such as default margins and tabs for a word

processor. (One clue as to which files these are is to look at the file dates. Generally, the user

setup files will have much newer dates than the files created when the program was first

installed. If in doubt about what to back up, contact the software vendor for the filenames.)

Q. How often should I back up my files?

There is no one right answer to this question either. Every user is different. One way to

answer the question for yourself is to use the “ouch” test. Consider how much work you could

Preparing Today for Linux Tomorrow

39

afford to lose before it hurts. If you are a home user, perhaps a once-a-week backup would be

adequate (right after you pay bills, for example). In a high-performance office environment,

once or twice a day—even hourly—may be required.

It is also a good idea to use a “grandparent-parent-child” strategy of rotating backup media. (In

other words, use three or more sets of tapes or cartridges and alternate among them.) This

way, if for some reason your most recent backup is corrupted, at least you have the next older

one to fall back on. Plus, if you discover that you accidentally deleted a file a few days ago—or

it was damaged by a virus—you can restore the file from a backup made before the deletion.

Another option is to back up only what has changed since the last backup (some archival

programs track this information from backup to backup). The advantage is that often very little

has changed since the last time, making for very quick backups. The disadvantage is that you

must keep copies of all the intervening backups since the last complete archive. Losing even

one partial backup along the way can result in the loss of important information. Thus, even

with a policy of incremental backups, it is a good idea to do full backups periodically.

Q. What backup software should I use?

There are a large number of commercial and free programs available for use, some primarily

for tape drives and others for more general usage (magnetic and optical disks, network drives,

etc). Many of these have graphical interfaces to make them easier to use. It is a good idea to

try out a few different programs to see what you like best.

There are too many available tools to try to describe them all here. But there are a few

common commands and utilities—likely to ship with your Linux distribution—that you can start

with:

tar tar was the earliest and most common “packaging” tool for Unix/Linux (it does the

unpacking of files as well—there is no “untar” command). The tar command creates a file that

contains all the other files and directories, optionally in a compressed state (using gzip or

bzip2), to save space. If you have used zip/unzip or PKzip with DOS/Windows, then you are

already familiar with the concept. Files packaged with tar typically end with a .tar extension. If

also compressed with gzip, the extension may be .tar.gz, .tar.Z or .tgz. Tar files compressed

with bzip2 generally have a .tar.bz2, .tar.bz, .tbz2 or .tbz extension. The gzip and bzip2

compression utilities can also be used independently of the tar command to compress and

decompress files (see below). There are many different parameters available for the tar

command (which does the unpacking of files as well), so it is best to read the manual page for

tar using the command: info tar. Note: It is not advisable to compress tar files on a tape

backup, because tar would not be able to recover from tape errors.

gzip/gunzip gzip (GNU zip) is the tool traditionally used for compressing tarred files and its

companion gunzip is used to decompress those files. More recent tools, such as PKunzip,

can generally uncompress files created by gzip as well as those compressed by other tools,

such as PKzip and zip. Due to this flexibility and because PKzip and zip are also available on

other operating system platforms, they have become more popular than gzip. Files

compressed with gzip usually end with .gz, or in the case of some older files, .z or .Z. You can

read more about the gzip/gunzip commands using: info gzip.

bzip2/bunzip2 — Think of bzip2 as a newer, faster version of gzip. It has a very similar

command structure (including many of the same parameters), but it tends to be faster at

compressing and decompressing than gzip/gunzip. Bzipped files end with a .bz2 or .bz

extension. Learn more about bzip2/bunzip2 from: info bzip2.

PKzip/PKunzip — PKzip is a popular shareware/commercial packaging and compression

tool, primarily in the DOS/Windows world. PKzip is very fast and offers varying degrees of

Preparing Today for Linux Tomorrow

40

compression vs. speed. Newer versions include a graphical front user interface. PKunzip is

compatible with files created by PKzip, zip, gzip and tar, as well as the UUencode,

XXencode, MIME and BinHex file formats. PKzip files end with a .zip extension. For more

information, read the documentation that comes with PKzip.

zip/unzip zip and unzip are a pair of command-line tools that will package and compress

(and decompress) files and directories. In addition to being very fast, they are free and

available for other platforms, including DOS/Windows, OS/2 and other UNIX OSes, including

SCO. The unzip command can also unpack files created by PKzip. Like PKzip, zipcompressed

files end with a .zip extension. The zip and unzip utilities may be included with

your Linux distribution; if so, read their manuals using the following commands: info zip

and info unzip.

Other utilities you can obtain separately include Arkeia, Backup Edge, BRU2000, Catchup, CTAR,

Drive Image, Kbackup, KDat, PerfectBACKUP+, Sitback, Taper and many more.

For a lot more on this topic, see the related white paper entitled, Installing Linux Applications

for the First Time, available from the same sources as this paper.

Root/User Accounts, Groups and Permissions

These are questions revolving around administering accounts, passwords and permissions.

Q. Sometimes instructions say that I must “be root.” What does this

mean?

It means that you must be logged in as the root user, or superuser. (Sorry, but you do not get

a cape with a big S on it!) There are two ways to do this. If you will be working as root

extensively, you should logout as yourself and login as root. When you are done, reverse the

process and log back in as yourself.

On the other hand, if you need to be root only long enough to execute a command, you can

open a command shell and issue the command: su (substitute user) to temporarily login as

another user, while still inside “your” login shell. You will be prompted for the root password.

Once that is provided you will “be root” and can issue commands as needed until you end the

root session by typing: exit and pressing Enter or by closing the shell.

Some commands won’t work unless you have logged in as root (i.e., su won’t work, because

Linux “knows” it is still you in charge). An alternative is to use the su – command (su followed

by a hyphen, with a space separating them). This makes you root with the root’s login shell, as

if you had logged off and logged back in as root.

Q. What is the root account and how does it differ from a user account?

When you installed Linux, you were asked to provide a root password. Later you were

prompted for a user account name and password. The root account is equivalent to the

system-level access you are given under Windows, with the ability to delete, create and format

partitions, create/delete directories and files, or do anything else your heart desires. Linux

operates like a network client/server system. The root account is like a system administrator,

able to control what access authority the various clients (users) have. There can be many

different user accounts set up on the same Linux system, each with its own set of

permissions, configuration options, choice of user interface and so on.

This is very useful in a business environment where multiple people share the same system,

as each user account can be tailored for each individual user. On the other hand, it can be a

Preparing Today for Linux Tomorrow

41

nuisance when there is only one user, because there are some system functions that can be

performed only by the root account, necessitating that the user log out of the user account and

log in to the root account long enough to perform the needed operation, then log out of the

root account and back into the user account. (Fortunately there is a shortcut you can use in

some situations as an alternative. See the description of the su - command in the earlier

question Sometimes instructions say that I must ‘be root’. What does this mean?.)

As compensation, however, doing things this way makes it much less likely that the user will

accidentally delete or corrupt important system files that they have no business playing with in

the first place.

Important Note: Most, if not all, Linux distributions require that you create a user account in

addition to the root account when you install Linux. While it is tempting to log on as root and

use the root account for everything, this is a Very Bad Idea. There are too many ways in which

you can accidentally (or someone else can maliciously) corrupt up a system from the root

account. By running mostly from the user account, your system is protected to a great degree

from most disasters. (It won’t prevent a disk crash, of course, but at least you can’t

accidentally delete your /usr/lib directory, for example.) If the Linux distribution you installed

required you to create a user account, use it. If you did not create one during installation,

create one now—and use it!

Q. Why would I want to add other user accounts to my system?

If you are the only one who uses your system, there may be no need to set up other user

accounts (besides your own). On the other hand, if you share your computer with other people

(second and third shift workers, perhaps; or you share a common work area; or other

members of your family use your computer), or even if you wish to make your printer or other

devices available to others on the same network, you will need to set up individual user

accounts and possibly group accounts.

Q. How do I add users?

There are a number of tools available for doing this. For instance, Red Hat Linux 6.2 includes

the graphical Red Hat Disk Management tool (linuxconf). For occasions where you are not

running a graphical interface, or prefer a command line tool, a couple of text-mode programs

that are often included with Linux are adduser and useradd. Despite the similarity of their

names and purpose, adduser is the more functional of the two.

To use linuxconf:

1. Run: linuxconf from a command line under either KDE or Gnome. (Linuxconf is not

located on a menu anywhere.)

In order to use Linuxconf and similar system-level tools, you will need to first be logged in

as root. To do this, use the su – command and enter the root password when prompted.

2. Once the linuxconf panel opens, scroll down to the heading called Users accounts.

Immediately below, there is a subheading called Normal, and beneath it User accounts.

3. Double-click on User accounts to open a panel that lists all existing accounts.

4. To create a new account, click on the Add button at the bottom of the panel. You will see

a subpanel with four tabs: Base info, Params, Mail settings and Privileges.

5. When you are done filling in the necessary information, press the Accept button to save

your changes (or Cancel to reject the changes and not create a new account).S

Preparing Today for Linux Tomorrow

42

Users of other distributions besides Red Hat have other graphical user administration tools at

their disposal. For instance, Caldera OpenLinux 2.3 users have Webmin and COAS.

Although neither individually can do everything linuxconf can do, together they offer similar

functionality.

To add users with the COAS tool:

1. From the KDE menu, select Settings, then COAS, then System and finally Accounts. A

panel will appear.

2. On the tool bar, select User and then Create user.

3. When the menu appears, begin customizing as many users as you need.

If your distribution doesn’t offer a graphical tool, or if you prefer to use the command line

interface, you can use adduser. As with linuxconf, before using adduser you must login as

root. Then type: adduser newusername (where newusername is the user name you wish to

create).

The program will assign the next available ID for both the user and default group, then remind

you to set a password for this new account. (To add the password, see below.) This will

supply the minimum information necessary to create a user. To add personal information to

the account record, such as the user’s name, address and phone number, use the chfn

(Change Finger Name) command (see below).

Q. How do I delete users?

This is a multistep process:

1. Log in as root.

2. Use the userdel command with the name of the user you wish to delete, as in: userdel

mary. Note, however, that while this deletes the user account name from the /etc/passwd

file, it doesn’t delete all associated files.

3. Follow up with the groupdel command to remove the user’s UPG entry (the default

group), such as: groupdel groupname.

4. Remove any other group affiliations for the user (besides the UPG), using: usermod –G

username username. (Note that the –G parameter is capitalized.)

5. Use a text editor to remove the login ID from the /etc/group file.

6. Delete the user’s home directory and mailbox using: rm –R /home/username

/usr/spool/mail/username. (Note that –R is capitalized.)

Q. Is there any way to change a user ID?

Yes. To change a user ID (login name), use the usermod command. For example, to change

an account name from “mary” to “Mary_Jones”, use: usermod –l Mary_Jones mary. If

you change a login name, you should also change the user home directory, where all the user

account information is stored. To do this, use the command: usermod –d

/home/Mary_Jones –m mary to move the user account information to the directory

/home/Mary_Jones from /home/mary. (The –l parameter tells usermod that you are

changing the login name; –d identifies the directory you are changing; and –m means to move

the contents to the specified directory.)

Preparing Today for Linux Tomorrow

43

Q. Is there a way to disable a user account?

Yes. If you are using “shadow” passwords (see the question What is a shadow password?, in

this section, for an explanation), the simplest way to disable an account is via the usermod

command. Merely assign an expiration date that has already passed, such as: usermod –e

01/01/92 mary. (See below for an explanation of shadow passwords.)

As an alternative, experienced users can edit the /etc/passwd file. To disable the account,

find the line for the appropriate user and insert an asterisk (*) in front of the encrypted

password. The password is located between the first and second colon separators, following

the user name. For example:

mary:*Ms.2jbeTWmUYi:500:Mary Jones:/home/mary:/bin/bash

Warning: This alternative approach should be used only as a last resort, by a proficient Linux

user, because manually editing this file can cause major problems if not done correctly!

Q. How do I add or change personal information in an account?

If you wish to add name, address and telephone number information to your account or

change information already there, there is the chfn (Change Finger Name) command. You will

be prompted for your password, then shown the data fields for the information above.

To change other user accounts, login as root. Then specify which user you wish to change the

information for, such as: chfn fred, and make the additions or changes.

If you prefer a graphical tool, Red Hat Linux 6.2 users running KDE can click on the KDE

menu (the big K on the Panel) and select the Red Hat option, then System and finally About

Myself. This will bring up a panel with entry fields for all the information accepted by the chfn

command. I am not aware of any such graphical tools for desktop environments other than

KDE, so if you are not using KDE you will have to use the chfn command line option.

Q. How do I add groups?

Default groups are automatically created when you add users. Should you need to add groups

manually you can do so with the groupadd command. Normally, group IDs (GIDs) are

automatically supplied (by adding 1 to the last number used) when a group is created.

However, because you are creating a group manually you will need to specify a group ID

yourself. The maximum GID number is 65536, so you might want to specify something very

large (say, 50000 or higher) to keep from possibly running into one already assigned by the

system. To create a group called “mygroup” with a GID of 50000, type: groupadd –g 50000

mygroup.

Q. How do I add/delete users in a group?

To add users, use the passwd program with the –a (add) parameter. For example, to add

user “mary” to group “mygroup” type: gpasswd –a mary mygroup.

To delete users, simply replace the –a parameter with the –d (delete) parameter, such as:

gpasswd –d mary mygroup.

Q. How do I change a password?

To change your own account password, Red Hat 6.2 users running KDE can click on the KDE

menu and select Red Hat, then System and finally Change Password. This will bring up a

panel prompting you for the current password (for the logged in user). If the correct password

Preparing Today for Linux Tomorrow

44

is supplied, you will be prompted for a new password to use. (If it is too short or invalid for

some other reason, the prompt panel will reappear.) I am not aware of any graphical password

management tools for desktop environments other than KDE, so if you are not using KDE you

will have to do it from the command line.

From the command line, simply use the passwd command. It will prompt you for your current

password and then the new password twice, for verification.

To change another password, you must be logged in as root. Then tell the program which user

you wish to change the password for, such as: passwd fred. You won’t be required to know

the current password; simply enter the new password twice.

Q. What is a shadow password?

Shadow passwords are used to protect system passwords (for user accounts) by making the

file containing those passwords (/etc/shadow) readable by the root operator only. When

shadow passwords are used they replace the encrypted password in the /etc/passwd file with

asterisks. (Moving the passwords to /etc/shadow makes it less likely that the encrypted

password can be decrypted, because only the root operator has access to the file.) To see if

you have shadow passwords enabled on your system, use the command: ls /etc/shadow.

If you receive a message like: ls /etc/shadow: No such file or directory, the

files have not yet been installed. For more information on shadow passwords, read the manual

page: man 5 shadow.

Q. How do I display the permissions for a file or directory?

From a command line, use the ls command with the –l parameter. For example, ls –a –l

*.txt would display all .txt files in the current directory, with their permissions, such as:

-rw-rw-rw- 1 ownerid groupid 1428 Apr 2 19:42 myfile.txt

-rw-rw-r-- 1 ownerid groupid 914 Sep 30 10:17 personnel.txt

The first 10 characters (or “switches”) on each line contain the permissions for that particular

file, directory, folder or other object. For an explanation of what the characters mean, see the

question, When I look at a list of files and directories, the names are followed by something

like -rw-rw-r-- or lrwxrwxrwx. What does this mean?

If you are using the K File Manager (KFM) under KDE (just click on the Panel icon that looks

like a house in front of a manila folder), simply select View, then Long View, from the pulldown

menu to display all objects with their permissions. Gnome users will have to use the

command line method.

Q. How do I change permissions?

If you are the system administrator (root), or the owner of a file, directory or other object, you

have the authority to grant or remove permissions for other users and groups, using the

chmod command. The operative symbols to remember are u for User (owner), g for Group, o

for Other, a for All, r for Read, w for Write and x for eXecute. Precede the r/w/x characters

with a plus sign (+) to add permission or a minus sign(-) to deny permission.

For example, to grant Read/Write access for the file myfile.txt to Groups and Others, use the

command: chmod go+rw myfile.txt. To remove Write and eXecute access from all

accounts, use: chmod ugo-wx myfile.txt or chmod a-wx myfile.txt. (Note that a,

for All, is a convenient shortcut for ugo.)

Preparing Today for Linux Tomorrow

45

Communications

These questions relate to configuring or using communications features of Linux.

Q. How do I set up my system for dial-up Internet access?

This is a multipart process. Before you begin you should contact your Internet Service

Provider (ISP). There is some information you will need to provide to Linux that only your ISP

can provide. (A technician who is conversant with Linux can probably step you through the

entire process, but because you may not find a Linux expert at your ISP, here are the steps

necessary to do it yourself.)

If you are using KDE, use the Kppp utility to start the configuration process.

! Log in as the root operator, then use your favorite text editor to open the

/etc/ppp/options file. If you see a statement with the option “lock” you will need to

“comment it out” to disable it. (Kppp handles locking the connection and the hardware,

so Lock is redundant.) To disable the lock option, insert a # symbol in front of it, such

as: #lock. Save the file and exit the editor. Log out as root and log back in as

yourself.

! To start Kppp, go to the KDE Application Starter menu (the big K icon on the Panel)

and select Internet, then Kppp.

! When the Kppp Configuration panel appears, press the Setup button to create a new

ISP connection record.

! From the Accounts tab, press the New pushbutton.

# When the Edit Account panel appears, you will be in the Dial tab. Enter whatever

you want to use as the ISP name where it says Connection Name. Enter the dialup

connection phone number in the next field (including area code, or anything

needed to dial out of the switchboard, such as 9,). The default authentication type

is PAP. Use that unless your ISP tells you otherwise. (The remaining fields are for

experienced users. Unless you have a reason to enter information in those fields,

leave them blank.)

# Click on the IP tab. When that panel appears either choose Dynamic IP Address,

or enter a static address. Your ISP will have to tell you which option to use, but

generally the ISP will assign a temporary IP address each time you connect, so

most likely the ISP will tell you to select Dynamic IP Address. If you are setting up

a connection inside a firewall, you will probably be using a static address. The

administrator in charge of the firewall will assign you a static address and tell you

the subnet mask to enter in the appropriate fields. Use the “Auto-configure

hostname from this IP” checkbox if you are connecting to a DHCP server or a

Bootp server. (Your network administrator will tell you if you need this.)

# If you are connecting from home, you can skip the DNA and Gateway tabs. If you

are connecting in an office environment, your network administrator will tell you if

you need to enter anything in those tabs. Unless told otherwise, you should not

need to enter anything in the Login Script tab either. If you live outside the United

States or Canada and your ISP charges by bytes transferred, use the Accounting

tab to select the country, the company and whether you are charged by incoming

data, outgoing, or both; otherwise ignore it. Click the OK button to close the Edit

Account panel and return to the Kppp Configuration panel.

! Click on the Device tab to set up your modem connection. If the modem was set up

correctly during installation, you should have to select only the port to use. COM1

through COM4 are mapped respectively to /dev/ttyS0 through /dev/ttyS3. Use the

one that corresponds to the port to which your modem is connected. An internal

Preparing Today for Linux Tomorrow

46

modem may be mounted as /dev/modem. For Flow Control, use CRTSCTS to enable

hardware flow control. For Line Termination, choose CR/LF. For a 14.4Kbps modem,

choose a connection speed of 57,600bps. For faster modems, select 115,200bps. If

you would like to prevent a second program from disconnecting one already using the

modem, check the Use Lock File box.

! In the Modem tab, you will configure the modem. Use the Busy Wait box to specify

how long to wait for a busy modem or dirty phone line before disconnecting. The

Modem volume slider lets you decide how loud to make the connection tones. Use the

Modem Commands button to set the default control codes for certain functions. The

Query Modem button can be used to test the modem, and the Terminal pushbutton

pops up a mini-terminal for entering control codes manually.

! Click the OK button at the bottom of the panel to close the KPPP Configuration panel

and return to the KPPP panel.

! In the Connect to field, select the ISP for which you just created a record. Then enter

the Logon ID and Password you were assigned. Make sure the Show Log Window

box is checked. This will let you see the progress of the logon process, which is

helpful in case there are problems logging on. Then press the Connect button to dial

the ISP. If you are unable to connect, verify all of the information you entered in

previous steps. If you do not find anything wrong, contact the ISP or network

administrator for further assistance.

If you are using Gnome rather than KDE, there is nothing packaged with the standard

Linux distributions, but there is a downloadable tool you might try called Gnome Dialup.

As of this writing, it is still under development but worth a try if you are looking for a

graphical dial up access setup tool for Gnome. Gnome Dialup can be found at

http://tor-pw1.netcom.ca/~phantom/gnome_dialup/index.html. Other such tools may exist

as well.

From the command line, you can use the pppd command to start the PPP daemon. This

approach is not for the faint of heart, however. There are many parameters that need to

be set via this command, so unless you are quite knowledgeable about Point to Point

Protocol setup or know someone who is, this probably is not the best approach for you.

For more on the pppd command, read the instructions at: info pppd.

If you need help getting connected to the Internet via your office network, contact your help

desk. If you are trying to set up Linux for DSL or cable modem (non-dialup) access at home,

contact your DSL or cable modem provider for assistance (and hope someone there has ever

heard of Linux).

Miscellaneous

This section contains questions or problems that did not fit into any of the other categories.

Q. What is the difference between Linux and UNIX?

UNIX began as a proprietary operating system developed by Bell Laboratories in the 1960s. It

eventually spawned a number of mutually incompatible commercial versions from such

companies as Apple (Mac OS X), Digital (Digital UNIX), Hewlett-Packard (HP-UX), IBM

(AIX® ), NeXT (NeXTSTEP) and others.

Linux is an attempt to create a nonproprietary operating system for the masses. It is a free,

open source, UNIX-like operating system, originally begun by Linus Torvalds in 1991. “Linux”

really refers to only the operating system kernel, or core. More than 200 people have

contributed to the development of the Linux kernel. The rest of a Linux “distribution” package

Preparing Today for Linux Tomorrow

47

consists of various utilities, device drivers, applications, a user interface and other tools that

generally can be compiled and run on other UNIX-based operating systems as well.

Q. Why does Linux seem so haphazard?

You may have heard the old saw that a camel is a horse designed by committee, illustrating

the difficulty of getting a number of people to agree on the design of anything, and the results

of compromise. If anything, Linux illustrates a horse designed by complete anarchy, with a

healthy helping of Darwinian natural selection thrown in for good measure. Thousands of

programmers over the years have written applications, utilities, games, device drivers, user

interfaces and other software for Linux. In the absence of a central authority to dictate a

mandatory “look and feel” each programmer had his or her idea of what was the best design

for software and developed the programs accordingly. Over time certain software became

more popular than others, which in turn spawned “work-alikes” and “near-clones,” taking

features of the previous products and adding to them, or offering slightly different variations.

Eventually, companies such as Red Hat, Caldera, TurboLinux and SuSE took the Linux kernel

and added what they considered the best available utilities, user interfaces, etc., to form a

“distribution,” or packaged deliverable. Because each distribution chose from among this

programming chaos, it was inevitable that the various programs selected for a deliverable

looked and worked differently from one another, and that each deliverable looked and, to

some extent, worked differently from other deliverables. This is the reason for the

inconsistencies between programs in a deliverable. The flip side is that because the

distribution companies were free to choose from among all available programs, not just those

that slavishly conformed to an arbitrary style, the deliverables were able to include the very

best programs—even the ugly or nonconformist ones.

Q. Where can I download or buy Linux software?

There are quite a few sources for free or commercial Linux software if your local software

store doesn’t carry what you are looking for. Here are just a few of them:

For free software, try:

DLR Fresh Archive (http://www.go.dlr.de/fresh/linux/src)

Freshmeat (http://freshmeat.net; love the name!)

Linux Apps (http://www.linuxapps.com)

Linux Archives (http://home.linuxarchives.com/software.html)

Linux Game Tome (http://www.happypenguin.org)

Linux Games (http://www.linuxgames.com)

Linux Software Encyclopedia (http://stommel.tamu.edu/~baum/linuxlist/linuxlist/linuxlist.html)

Linuxberg/Tucows Linux (http://linux.tucows.com)

Slashdot (http://slashdot.org)

If you see some commercial software that you would like to buy, there are several Web sites

in the United States with extensive Linux inventories:

Indelible Blue (http://www.indelibleblue.com)

Linux Mall (http://www.linuxmall.com)

The Linux Store (http://www.thelinuxstore.com)

Post a Comment

Previous Post Next Post