Sunday, 9 September 2007

Top 10 Tips for Linux Users

Top 10 Tips for Linux Users:
Everyone develops their favorite tips and tricks for using Linux based on their
own experience and the kind of work they are doing. Here are some of mine. These
tips may seem simple, but I've found it's often the simple tricks that are the
most useful in day-to-day work.

1. Switch to another console.
Linux lets you use "virtual consoles" to log on to multiple sessions
simultaneously, so you can do more than one operation or log on as another user.
Logging on to another virtual console is like sitting down and logging in at a
different physical terminal, except you are actually at one terminal, switching
between login sessions.
Virtual consoles are especially useful if you aren't
running X, but you can use them even if you are.

In early versions
of the kernel (pre-1.1.54), the number of available virtual consoles was
compiled into the kernel. With more recent kernels, 63 virtual consoles are
available, with 6 set up by default in the file /etc/inittab.

Use
the key combination Alt+Fn to switch between virtual consoles, where Fn is one
of the function keys F1-F6. (If you are in X, you'll probably need to use
Ctrl-Alt-Fn instead.) Alt+F7 gets you back to your X session, if one is running.
You can rotate between consoles with the Alt-right arrow and Alt-left arrow key
combinations.

2. Temporarily use a different shell. Every user
account has a shell associated with it. The default Linux shell is bash; a
popular alternative is tcsh. The last field of the password table (/etc/passwd)
entry for an account contains the login shell information. You can get the
information by checking the password table, or you can use the finger command.
For example, the command "finger ellen" shows, among other things, that I use
/bin/tcsh.

The command chsh changes the login shell for all future
logins; that is, it changes the account entry in the password table to reflect
the new shell. However, you can also temporarily use another shell at any time
by simply running the new shell. For example, if I want to try something out in
bash, I can type "bash" at the prompt and be put into a bash shell. Typing
either Ctrl-d or exit gets rid of that shell and returns me to my tcsh
session.

3. Print a man page. Here are a few useful tips for
viewing or printing manpages:
To print a manpage, run the command:

man col -b lpr

The col -b
command removes any backspace or other characters that would make the printed
manpage difficult to read.

Also, if you want to print a manpage
that isn't in a standard man directory (i.e., it's in a directory that isn't
specified in the MANPATH environment variable), you can specify the full
pathname of the manpage, including the full filename:

man
/work/myapp/mymanpage.1

If you use the Emacs editor, you can view
a manpage with the command Meta-x man; Emacs then prompts you for the name of
the manpage. You can view the page or print it as you would any other Emacs
buffer.

As a last resort, you can format the manpage directly with
the groff command. However, the default output is a PostScript file, so you'll
want to either send it to a PostScript printer or to a viewer such as ghostview:

groff -man /work/myapp/mymanpage.1 ghostview -i

You can get ASCII output with the -a option, but the result is
unformatted text. Not pretty to read, but it might suffice if nothing else
works.

4. Use command substitution to simplify complex operations.
Command substitution lets you use the output of one command as an input argument
to another command. To use command substitution, determine what command will
generate the output you want, put that command in backquotes, and use it as an
argument to another command. For example, I often use command substitution to
recursively grep the files in a directory tree:
grep 'Title' `find /work
-type f -name 'chap*' -print` > chaptitles

The portion of this
command in backquotes is a find command that builds a list of chapter files in
the /work directory. That list is then used to provide the set of input files
for grep to search for titles. The output is saved in a file called chaptitles.

5. Look inside a non-text file. Sometimes you really want to see
inside a binary file. Maybe there isn't a manpage and you're looking for usage
information, or perhaps you're looking for information about who wrote a program
or what application a file is associated with.
The strings command is
perfect for that purpose--it searches through a file looking for sequences of
printable character strings and writes them to standard output. You can pipe the
output through a pager like more, or if you are looking for particular text, you
can pipe the output to the grep command.

6. Use the locate
command. Looking for an easier way to find files than the find command? Try
using locate. In contrast to find's complexity, locate is the ultimate in
simplicity. The command:
locate

searches an
internal database and prints the pathnames of all files and directories that
contain the given string in their names. You can narrow down the search by
piping the output to grep. For example, the following finds all files containing
the string "kde" that are in bin directories:

locate kde grep
bin

The strings don't have to be complete names; they can be
partial strings, such as "gno" instead of spelling out "gnome". The -r option
lets you use a regular expression (in quotes):

locate -r 'gno*'

One thing to be aware of is that locate is case-sensitive:
Searching for HOWTO and for howto will give you different results.

Rather than searching the disk each time, as find does, locate
depends on the creation and maintenance of a database. Because it only has to
search the database, not the disk, locate is faster than find. On the other
hand, the results are only as current as the database.

The locate
database is generally updated daily by a cron job, but you can update it
manually by running the command updatedb (usually as root). If you are adding
new applications or deleting old files and you don't want to wait for the next
day to have an up-to-date database, you might want to run it manually.

7. Use dmesg to view startup messages. The dmesg command provides
an easier way to see the boot messages than trying to read them before they
scroll off the screen. When Linux boots, the kernel startup messages are
captured in a buffer known as the kernel ring buffer; dmesg prints the contents
of that buffer. By default, dmesg prints its output to the screen; you can of
course redirect the output to a file:
% dmesg > bootmsg

8.
Find out what kernel version you are using. Do you ever need to know what
version of the Linux kernel is running on your system? You can find out with the
uname command, which prints information about the system. Issued with the -r
option, uname prints the kernel version:
% uname -r
2.2.14-5.0

Other uname options provide information such as the machine type,
the name of the operating system, and the processor. The --all option prints all
the available information.

9. Use df and du to maintain your disk.
Use the df (display filesystem) command to keep an eye on how much space each of
your filesystems occupies and how much room is left. It's almost inevitable that
if you like to download new software and try it out, you'll eventually fill up
your disk. df has some options, but running it without options provides the
basic information--the column labeled Use% tells you how full each filesystem
is:
% df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda3
1967156 1797786 67688 96% /

Oops, time to clean house... and
that's where du (disk usage) comes in handy. The du command provides the
information you need to find the big space users, by printing the amount of disk
space used for each file, subdirectory, and directory. You can specify the
directory du is to start in, or let it default to the current directory.

If you don't want to run du recursively through subdirectories,
use the -s option to summarize. In that case, you need to specify all the
directories you are interested in on the command line. For example:

% du -s /usr/X11R6
142264 /usr/X11R6

% du -s
/usr/X11R6/*
34490 /usr/X11R6/bin
1 /usr/X11R6/doc
3354
/usr/X11R6/include

97092 /usr/X11R6/lib
7220
/usr/X11R6/man
106 /usr/X11R6/share

With the information provided by du, you can start in the directories that occupy the most disk space and delete or archive files you no longer actively use.

10. Permit non-root users to mount or unmount drives. While hard drives are normally mounted automatically when the system is booted, other drives such as the floppy
drive and the CD-ROM are generally not mounted until they are going to be used,
so that disks can be inserted and removed. By default, root privileges are
required for doing the mount (or unmount). However, you can modify the entries
in the filesystem table, /etc/fstab, to let other users run the mount command.
Do this by adding the option "user" to the appropriate entry:
/dev/fd0
/mnt/floppy auto noauto,user 0 0 /dev/cdrom /mnt/cdrom iso9660
noauto,ro,user,unhide 0 0

You can see what filesystems are
currently mounted, and what options they were mounted with, by looking at the
file /etc/mtab or by running the mount command with no options or arguments.

No comments: