LINUX NEWBIE ADMINISTRATOR GUIDE
ver. 0.120 2001-03-16 by Stan and Peter Klimas
The latest version of this guide is available at http://sunsite.dk/linux-newbie.
Copyright (c) <1999,2000,2001> by Peter and Stan Klimas. Your feedback, comments, corrections, and improvements are appreciated. Send them to linux_nag@canada.com This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0, 8 or later http://opencontent.org/openpub/ with the modification noted in lnag_licence.html.

Quick navigation:

Part 5: Linux Shortcuts and Commands


Contents:
5.1 Linux essential shortcuts and sanity commands
5.2 Help commands
5.3 System info
5.4 Basic operations
5.5 File management
5.6 Viewing and editing files
5.7 Finding files
5.8 Basics of X-windows
5.9 Network apps
5.10 File (de)compression
5.11 Process control
5.12 Basic administration commands
5.13 Program installation
5.14 Accessing drives/partitions
5.15 Network administration tools
5.16 Sound-related commands
5.17 Graphics-related commands
5.18 Small games


Intro. This is a practical selection of the commands we use most often. Press <Tab> on the empty command line to see the listing of all available commands (on your PATH). On my small home system, it says there are 3786 executables on my PATH.  Many of these "commands" can be accessed from your favourite GUI front-end (probably KDE or Gnome) by clicking on the right menu or button. They can all be run from the command line (unless you didn't install one, but they all came on our CDs).  Programs that require GUI have to be run from under the GUI, for example from a terminal opened in kde or gnome (xterm). Some more advanced tools are described in the Part Learning with Linux of this Guide.

Legend:
<> = single special or function key on the keyboard. For example <Ctrl> indicates the "control" key.
italic = name of the file or variable you probably want to substitute with your own.
fixed width = in-line Linux commands and filenames.

Notes for the UNIX Clueless:
1. LINUX IS CASE-SENSITIVE. For example: Netscape, NETSCAPE and nEtscape would be three different commands (but of the three, only netscape is avialable on my system). Also my_filE, my_file, and my_FILE are three different files. Your user login name and password are also case sensitive. (This goes with the tradition of UNIX and the "c" programming language being case sensitive.)
2. Filenames can be up to 256 characters long and can contain letters, numbers, "." (dot), "_" (underscore), "-" (dash), plus some other non-recommended characters.
3. Files with names starting with "." are normally not shown by the ls (list) or dir command. Think of these files as "hidden". Use ls -a  (list with the option "all") to see these files.
4. "/" is an equivalent to DOS "\" (root directory, meaning the parent of all other directories, or a separator between a directory name and a subdirectory or filename). For example, try cd /usr/doc
5. Under Linux, all directories appear under a single directory tree (there are no DOS-style drive letters).  This means directories and files from all physical devices are merged into this single file system.
6. In a configuration file, a line starting with # is a comment.  When changing a configuration file, don't delete old settings--comment out the original lines. Always insert a short comment describing what you have done.
7. Your personal settings are in your home directory which is /home/your_user_login_name. Many settings are kept in files with names starting with a dot "."so as to keep them out of your way (see point 3 above).
8. System-wide settings are kept in the directory /etc .
9. Under Linux, as in any multiuser operating system, directories and files have an owner and set of permissions. You will be typically allowed to write only to your home directory which is /home/your_user_login_name. Learn to use the file permissions else you will be constantly annoyed with Linux.
10. Command options are introduced by a dash, "-", followed by a single letter (or -- when the option is more than one letter). Thus "-" is an equivalent of DOS's switch "/". For example, try rm --help.
11. Type command& (the command name followed by the & sign) to start a command in the background. This is usually the preferred way of starting a program from the X-window terminal.

5.1 Linux essential shortcuts and sanity commands

<Ctrl><Alt><F1>
Switch to the first text terminal. Under Linux you can have several (6 in standard setup) terminals opened at the same time.

<Ctrl><Alt><Fn> (n=1..6)
Switch to the nth text terminal. (The same could be accomplished with the rarely used command chvt n.  "chvt" stands for "change virtual terminal").

tty
Print the name of the terminal in which you are typing this command.  The number of the active terminal can be printed using the command fgconsole.

<Ctrl><Alt><F7>
Switch to the first GUI terminal (if X-windows is running on this terminal).

 <Ctrl><Alt><Fn> (n=7..12)
Switch to the nth GUI terminal (if a GUI terminal is running on screen n-1). On default, nothing is running on terminals # 8 to 12, but you can run another server there.

 <Tab>
(In a text terminal) Autocomplete the command  if there is only one option, or else show all the available options. THIS SHORTCUT IS GREAT! It even works at LILO prompt!

 <ArrowUp>
Scroll and edit the command history. Press <Enter> to execute.

 <Shift><PgUp>
Scroll terminal output up. Work also at the login prompt, so you can scroll through your bootup messages.

 <Shift><PgDown>
Scroll terminal output down.

 <Ctrl><Alt><+>
(in X-windows) Change to the next X-server resolution (if you set up the X-server to more than one resolution). For multiple resolutions on my standard SVGA card/monitor, I have the following line in the file /etc/X11/XF86Config (the first resolution starts on default, the largest determines the size of the "virtual screen"):
Modes "1024x768" "800x600" "640x480" "512x384" "480x300" "400x300" "1152x864"
Of course, first I had to configure the X server, either by using Xconfigurator, xf86config, or manually by edition the file /etc/X11/XF86Config, so that it supports the above resolutions (mostly the matter of uncommenting the line that defines my video chipset, and specifying the synchronization frequencies my monitor supports).

<Ctrl><Alt><->
(in X-windows) Change to the previous X-server resolution.

<Ctrl><Alt><Esc>
(in X-windows, KDE) Kill the window I am going to click with my mouse pointer (the pointer changes to something like a death symbol). Similar result can be obtained with the command xkill (typed in X-terminal).  Useful when an X-window program does not want to close (hangs?).

<Ctrl><Alt><BkSpc>
(in X-windows) Kill the current X-windows server. Use if the X-windows server cannot be exited normally.

<Ctrl><Alt><Del>
Shut down the system and reboot. This is the normal shutdown command for a user at the text-mode console. Don't just press the "reset" button for shutdown!

<Ctrl>c
Kill the current process (works mostly a small text-mode applications).

<Ctrl>d
(pressed at the beginning of an empty line) Log out from the current terminal.  See also the next command.

<Ctrl>d
Send [End-of-File] to the current process. Don't press it twice else you also log out (see the previous command).

<Ctrl>s
Stop the transfer to the terminal.

<Ctrl>q
Resume the transfer to the terminal. Try if your terminal mysteriously stops responding.

<Ctrl>z
Send the current process to the background.

exit
Logout. I can also use logout for the same effect.  (If you have started a second shell, e.g., using bash, the second shell will be exited and you will be back in the first shell, not logged out.)

reset
Restore a screwed-up terminal (a terminal showing funny characters) to default setting. Use if you tried to "cat" a binary file. You may not be able to see the command as you type it.

<MiddleMouseButton>
Paste the text which is currently highlighted somewhere else. This is the normal "copy-paste" operation in Linux.  (It doesn't work with Netscape and WordPerfect which use the MS Windows-style "copy-paste". It does work in the text terminal if you enabled "gpm" service using "setup".) Best used with a Linux-ready 3-button mouse (Logitech or similar) or else set "3-mouse button emulation").

~
(tilde) My home directory (normally the directory /home/my_login_name). For example, the command cd ~/my_dir will change my working  directory to the subdirectory "my_dir" under my home directory.  Typing just "cd" alone is an equivalent of the command "cd ~".

.
(dot) Current directory. For example, ./my_program will attempt to execute the file "my_program" located in your current working directory.

..
(two dots) Directory parent to the current one. For example, the command cd .. will change my current working directory one one level up.

<Alt><SysRq><command_key>
(Non-essential.) This is a group of commands implemented at the Linux kernel level (low level). It means, chances are these key combinations will work most of the time. The combinations are meant for debugging purposes and in an emergency; you should try other, safer solutions first. The key <SysRq> is also knows on PC as <PrintScreen>.
<Alt><SysRq><k>  Kill all processes (including X) which are running on the currently active virtual console.  This key combination is know as "secure access key" (SAK).
<Alt><SysRq><e>  Send the TERM signal to all running processes except init, asking them to exit.
<Alt><SysRq><i>  Send the KILL signal to all running processes except init. This may be more successful in killing runaway processes  then the previous key combination, but it may cause some of them to exit abnormally.
<Alt><SysRq><l> Send the KILL signal to all processes, including init. The system will not be functional.
<Alt><SysRq><s>  Run an emergency sync (cache write) on all mounted filesystems. This can prevent data loss.
<Alt><SysRq><u>  Remount all mounted filesystems as read-only. This has the same effect as the sync combination above, but with one important benefit: if the operation is successful, fsck won't have to check all filesystems after a computer hardware reset.
<Alt><SysRq><r>  Turn off keyboard raw mode. This can be useful when your X session hangs. After issueing this command you may be able to use <CTRL><ALT><DEL>.
<Alt><SysRq><b>  Reboot immediately without syncing or unmounting your disks.
<Alt><SysRq><o>   Shut the system off (if configured and supported).
<Alt><SysRq><p>   Dump the current registers and flags to your console.
<Alt><SysRq><t>   Dump a list of current tasks and their information to your console.
<Alt><SysRq><m>   Dump memory info to your console.
<Alt>SysRq><digit>   The digit is '0' to '9'. Set the console log level, controlling which kernel messages will be printed to your console. For example, '0' will cause only emergency messages like PANICs or OOPSes displayed on your console.
<Alt><SysRq><h>    Display help. Also, any other unsuported <Alt><SysRq><key> combintation will display help.

5.2 Help commands

any_command --help |more
Display a brief help on a command (works with most commands).  For example, try cp --help |more. "--help" works similar to DOS "/h" switch. The "more" pipe is needed when the output is longer than one screen.

man topic
Display the contents of the system manual pages (help) on the topic. Press "q" to quit the viewer. Try man man if you need any advanced options.  The command info topic works similar to man topic, yet it may contain more up-to-date information. Manual pages can be hard to read--they were written for UNIX programmers. Try any_command --help for a brief, easier to digest help on a command. Some programs also come with README or other info files--have a look to the directory /usr/doc. To display manual page from a specific section, I may use something like: man 3 exit (this displays an info on the command exit from section 3 of the manual pages) or man -a exit (this displays man pages for exit from all sections).  The man sections are:  Section 1-User Commands, Section 2-System Calls, Section 3-Subroutines, Section 4-Devices, Section 5-File Formats, Section 6-Games, Section 7-Miscellaneous, Section 8-System Administration, Section 9, Section n-New.  To print a manual page, I use:  man topic | col -b | lpr  (the option col -b removes any backspace or other characters that could make the printed manpage difficult to read).

info topic
Display the contents of the info on a particular command. info is a replacement for man pages so it contains the most recent updates to the system documentation. Use <Space> and <BkSpace> to move around or you may get confused. Press "q" to quit.  A replacement for the for the bit confusing info browsing system might be pinfo - try if you like it any better.

apropos topic
Give me the list of the commands that have something to to do with my topic.

whatis topic
Give me a short list of commands matching my topic. whatis is similar to apropos (see the command above)--they both use the same database. But whatis searches keywords, while apropos also searches the descriptions of the keywords.

help command
Display brief info on a bash (shell) built-in command. Using help with no command prints the list of bash built-in commands.

The shortest list of bash built-in commands would probably include: alias, bg, cd, echo, exit, export, fg, help, history, jobs, kill, logout, pwd, set, source, ulimit, umask, unalias, unset.
kdehelp
(in X-terminal). Browse the whole system help using the graphical KDE help navigator. Normally, KDE help is invoked by pressing the appropriate icon on the KDE control panel.  Use gnome-help-browser for the GNOME equivalent.

5.3 System info

pwd
Print working directory, i.e., display the name of my current directory on the screen.

hostname
Print the name of the local host (the machine on which you are working). Use netconf (as root) to change the name of the machine.

whoami
Print my login name.

id username
Print user id (uid) and his/her group id (gid), effective id (if different than the real id) and the supplementary groups.

date
Print or change the operating system date and time. E.g., I could change the date and time to 2000-12-31 23:57 using this command:
date 123123572000
To set the hardware (BIOS) clock from the system (Linux) clock, use the command (as root) setclock

time
Determine the amount of time that it takes for a process to complete + other info. Don't confuse it with the date command (see previous entry). E.g. I can find out how long it takes to display a directory content using:
time ls

who
Determine the users logged on the machine.

w
Determine who is logged on the system, find out what they are doing, their processor ussage, etc. Handy security command.

rwho -a
(=remote who) Determine users logged on other computers on your network. The rwho service must be enabled for this command to run. If it isn't, run setup (RedHat specific) as root to enable "rwho".

finger user_name
System info about a user. Try: finger root

last
Show listing of users last logged-in on your system.  Really good idea to check it from time to time as a security measure on your system.

lastb
("=last bad") Show the last bad (unsuccessful) login attempts on your system.

history | more
Show the last (1000 or so) commands executed from the command line on the current account. The "| more" causes the display to stop after each screenful.  To see what another user was doing on your system, login as "root" and inspect his/her "history".  The history is kept in the file .bash_history in the user home directory (so yes, it can be modified or erased).

uptime
Show the amount of time since the last reboot.

ps
(="print status" or "process status") List the processes currently run by the current user.

ps axu | more
List all the processes currently running, even those without the controlling terminal, together with the name of the user that owns each process.

top
Keep listing the currently running processes, sorted by cpu usage (top users first). Press <Ctrl>c when done.

gtop
ktop
(in X terminal) Two GUI choices for top. My favourite is gtop (comes with gnome). In KDE, ktop is also available from the "K"menu under "System"-"Task Manager".

uname -a
(= "Unix name" with option "all") Info on your (local) server. I can also use guname (in X-window terminal) to display the info more nicely.

cat /etc/issue
Check what distribution you are using. You can put your own message in this text file--it's displayed on login. It is more common to put your site-specific login message to the file /etc/motd ("motd"="message of the day").

free
Memory info (in kilobytes).  "Shared" memory is the memory that can be shared between processes (e.g., executable code is "shared"). "Buffered" and "cashed" memory is the part that keeps parts of recently accessed files--it can be shrunk if more memory is needed by processes.

df -h
(=disk free) Print disk info about all the filesystems (in human-readable form).

du / -bh | more
(=disk usage) Print detailed disk usage for each subdirectory starting at the "/" (root) directory (in human legible form).

cat /proc/cpuinfo
Cpu info--it show the content of the file cpuinfo. Note that the files in the /proc directory are not real files--they are hooks to look at information available to the kernel.

cat /proc/interrupts
List the interrupts in use.  May need to find out before setting up new hardware.

cat /proc/version
Linux version and other info.

cat /proc/filesystems
Show the types of filesystems currently in use.

cat /etc/printcap |more
Show the setup of printers.

lsmod
(= "list modules". As root. Use /sbin/lsmod to execute this command when you are a non-root user.) Show the kernel modules currently loaded.

set|more
Show the current user environment.

echo $PATH
Show the content of the environment variable "PATH". This command can be used to show other environment variables as well. Use "set" to see the full environment.

dmesg | less
Print kernel messages (the content of the so-called kernel ring buffer). Press "q" to quit "less". Use less /var/log/dmesg  to see what "dmesg" dumped into this file right after the last system bootup.

chage -l my_login_name
See my password expiry information.

sysctl -a |more
Display all the configurable Linux kernel parameters.

stat filename
Print general info about a file (the contents of the so-called inode).

runlevel
Print the previous and current runlevel.  The output "N5" means: "no previous runlevel" and "5 is the current runlevel".

Runlevel is the mode of operation of Linux. Runlevel can be switched "on the fly" using the command init. For example init 3 (as root) will switch me to runlevel 3. The following runlevels are standard:
     0 - halt (Do NOT set initdefault to this)
     1 - Single user mode
     2 - Multiuser, without NFS (The same as 3, if you do not have networking)
     3 - Full multiuser mode
     4 - unused
     5 - X11
     6 - reboot (Do NOT set initdefault to this)
The system default runlevel is set in the file: /etc/inittab .

5.4 Basic operations

ls
dir
List the content of the current directory. The command dir is an alias to ls so this two commands do exactly the same thing. The file listing is normally color-coded: dark blue= directories, light grey = regular files, green = executable files, magenta = graphics files, red = compressed (zipped) files, light blue = symolic links, yellow = device files, brown = FIFO ("First-In First-Out" named pipes).

ls -al |more
List the content of the current directory, all files (also those starting with a dot), and in a long form. Pipe the output through the "more" command, so that the display pauses after each screenful.  The ls command has several very useful options.  Some of these may have shortcuts (aliases) to avoid clumsy typing. Try ll (="long ls", an alias to ls -l). Another option I use quite often is ls -ad (list all the subdirectories in my current directory, but don't list their contents).

cd directory
Change directory. Using "cd" without the directory name will take you to your home directory. "cd - " will take you to your previous directory and is a convenient way to toggle between two directories. "cd .." will take you one directory up (very useful).

./program_name
Run an executable in the current directory. The ./ are needed when the executable is not on my PATH. Executables which are you your PATH are simply run using:  program_name

shutdown -h now
(as root) Shut down the system to a halt. Mostly used for a remote shutdown. Use <Ctrl><Alt><Del> for a shutdown at the console (which can be done by any user).

halt
reboot
init 6
(as root, three commands) Halt or reboot the machine. Used for remote shutdown, simpler to type than the previous command. Also great if the computer "hangs" (I lose control over the keyboard)--I telnet to it from another  machine on the network and remotely reboot it.  I use <Ctrl><Alt><Del> for normal shutdown at the console of a local computer.

vlock
(Not present on older versions of RedHat.)  Lock a local (text mode) terminal. I can also use vlock -a to lock all terminals (probably not a good idea). The best is probably to log out.  You don't use vlock in GUI--the windows managers come with password-protected screensaver and a locking utility (e.g., the small icon with padlock in KDE).
 

5.5 File management

cp source destination
Copy files. E.g., cp /home/stan/existing_file_name .  will copy a file to my current working directory. Use the "-r" option (for recursive) to copy the contents of whole directories, e.g. , cp -r my_existing/dir/ ~  will copy a subdirectory under my current working directory to my home directory.

mcopy source destination
Copy a file from/to a DOS filesystem (no mounting of the filesystem is necessary). E.g., mcopy a:\autoexec.bat ~/junk.  See man mtools for other commands that can  access DOS files without mounting: mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....  We don't use the mtool commands that often--operations on DOS/MS Windows files can be performed using regular Linux commands after you mount the DOS/MS Windows filesystem.

mv source destination
Move or rename files. The same command is used for moving and renaming files and directories.

rename string replacement_string filename
Flexible utility for changing parts of filenames. For example:
rename .htm .html *.htm

ln source destination
Create a hard link called destination to the file called source. The link appears as a copy of the original files, but in reality only one copy of the file is kept, just two (or more) directory entries point to it. Any changes to the file are automatically visible throughout. When one directory entry is removed, the other(s) stay(s) intact. The limitation of the hard links are: the files have to be on the same filesystem, hard links to directories or special files are impossible.

ln -s source destination
Create a symbolic (soft) link called "destination" to the file called "source". The symbolic link just specifies a path where to look for the "real" file. In contradistinction to hard links, the source and destination don't not have to be on the same filesystem. In comparison to hard links, the drawback of symbolic links are: if the original file is removed, the link is "broken"--it points to nowhwere; symbolic links can also create circular references (like circular references in spreadsheets or databases, e.g., "a" points to "b" and "b" points back to "a").  In short, symbolic links are a great tool and are very often used, but they can create an extra level of complexity.

rm files
Remove (delete) files. You must own the file in order to be able to remove it (or be "root"). On many systems, you will be asked or confirmation of deletion, if you don't want this, use the "-f" (=force) option, e.g., rm -f *  will remove all files in my current working directory, no questions asked.

mkdir directory
Make a new directory.

rmdir directory
Remove an empty directory.

rm -r files
(recursive remove) Remove files, directories, and their subdirectories. Careful with this command as root--you can easily remove all files on the system with such a command executed on the top of your directory tree, and there is no undelete in Linux (yet). But if you really wanted to do it (reconsider), here is how (as root):
rm -rf /*

rm -rf files
(recursive force remove). As above, but skip the prompt for confirmation, if one is set on your system. Careful with this command particularly as root--see the command above.

mc
Launch the "Midnight Commander" file manager (looks like "Norton Commander" for Linux).

konqueror &
Launch the KDE file manager. Perhaps this is the utltimate for file managment. Much better that the MS "Windows Explorer".

5.6 Viewing and editing files

cat filename | more
View the content of a text file called "filename", one page a time. The "|" is the "pipe" symbol (on many American keyboards it shares the key with "\"). more makes the output stop after each screenful. For long files, it is sometimes convenient to use the commands head and tail that display just the beginning and the end of the file. If you happened to use cat a binary file and your terminal displays funny characters afterwards, you can restore it with the command reset.

cat filename | less
less filename
(two commands, use either) Scroll through a content of a text file. Press q when done. "less" is roughly equivalent to "more" , the command you know from DOS, but often "less" is more convenient than "more".

head filename
Print first 10 lines of the (long) text file.

tail filename
Print last 10 lines of a long or growing text file. Use tail -f filename for tail to follow the file as it grows--really handy for continuing inspection of log files.

pico filename
Edit a text file using the simple and standard text editor called pico.  Use <Ctrl>x to exit.  There are many text editors for Linux, including several GUI-based.

pico -w filename
Edit a text file, while disabling the long line wrap. Handy for editing configuration files, e.g. /etc/fstab.

kwrite
(in X terminal) Very nice, "advanced text editor". Supports veritical text selection!

kedit
gedit
(in X terminal). Simple yet nice text editors (GUI based).

gxedit
(in X terminal) Another multi-purpose, feature packed text editor. This one even has timed backup.

latte
(in X termina) "Code" editor, i.e.,  plain text meant for writing programs.

nedit
(in X terminal)  Another programmer editor. Very nice and loaded.

bluefish
(in X terminal) html editor (source with syntax highlighting and maaaany tools and options).

ispell filename
Spell check an ASCII text file.  AbiWord, WordPerfect, StarOffice and other word processors come with "as-you-type" spellchecking, so you really don't have to worry about the simple ispell unless you need it.  Newer Linux distributions (e.g., RH7.0) contain an improved spellchecking module called aspell, yet the above command will still works.

touch filename
Change the date/time stamp of the file filename to the current time. Create an empty file if the file does not exist.
 

5.7 Finding files

find / -name "filename"
Find the file called "filename" on your filesystem starting the search from the root directory "/". The "filename" may contain wildcards (*,?).

locate filename
Find the file name of which contains the string "filename". Easier and faster than the previous command but depends on a database that normally rebuilds at night.

which executable_name
Show me the full path to the executable that would run if I just typed its name on the command line. For example, this commmand:
which netscape
on my system produces:
/usr/bin/netscape

whereis command
Print the locations for the binary, source, and manual page files of the command "command".

rgrep -r 'celeste'  . |more
Search all files in the current directory and all its subdirectories (the option "-r" stands for "recursive") for the string "celeste". Print the filename and the line in the file that contains the searched string.

kfind &
(in X terminal). A GUI front-end to find and grep. Very nice.  The & at the end of the command makes kfind run in the background so that the console remains available.

5.8 Basics of X-windows

xinit
Start a barebone X-windows server (without a windows manager).

startx
Start an X-windows server and the default windows manager. Works like typing "win" under DOS with Win3.1

startx -- :1
Start another X-windows session on the display 1 (the default is opened on display 0). You can have several GUI terminals running concurrently. Switch between them using <Ctrl><Alt><F7>, <Ctrl><Alt><F8>, etc.

xterm
(in X terminal) Run a simple X-windows terminal.  Typing exit will close it.  There are other, more advanced "virtual" terminals for X-windows. I like the popular ones: konsole and kvt (both come with kde) and gnome-terminal (comes with gnome).  If you need something really fancy-looking, try Eterm.

startkde
gnome-session
xfce
afterstep
AnotherLevel
fvwm2
fvwm
(in X terminal, 7 different commands, use the one which starts your fav windows manager) Start your favourite windows manager in an X terminal on bare X server.

5.9 Network apps

netscape
(in X terminal) Run netscape (requires a separate Netscape installation). The current versions of Netscape (4.x) are known to be big and buggy. They occasionally crash by vanishing (no other harm done). Also, when not connected to the network , Netscape likes to refuse to do anything (looks like it hanged)-it revives when you connect.

netscape -display host:0.0
(in X terminal) Run netscape on the current machine and direct the output to machine named "host" display 0 screen 0. Your current machine must have a permission to display on the machine "host" (typically given by executing the command xhost current_machine_name in the xterminal of the machine host. Other X-windows program can be run remotely the same way.

lynx file.html
View an html file or browse the net from the text mode. Although lynx's look or convenience of use is not as great as GUI-based broser, it is light-weight, almost always works, and does not require any configuration, as long as your networks is functional.

pine
A good text-mode mail reader. Another good and standard one is elm. Your Netscape mail will read the mail from your Internet account. pine will let you read the "local" mail, e.g. the mail your son or a cron process sends to you from a computer on your home network. The command mail could also be used for reading/composing mail, but it would be inconvenient--it is meant to be used in scripts for automation.

elm
A good tex-mode mail reader. See the previous command.

mutt
A really basic but extremally useful and fast mail reader.

mail
A basic operating system tool for e-mail. Look at the previous commands for a better e-mail reader. mail is good if you wanted to send an e-mail from a shell script.

kmail
(in X-terminal) Nice, GUI mail program.

licq
(in X terminal) An icq "instant messaging" client. Another good one is kxicq. Older distributions don't have an icq client installed, you have to do download one and install it.

knode
(in X terminal)  Start my favourite newsgroup (usenet) reader. It is MUCH better that the netscape's built-in reader.

talk username1
Talk to another user currently logged on your machine (or use "talk username1@machinename" to talk to a user on a different computer) . To accept the invitation to the conversation, type the command "talk username2". If somebody is trying to talk to you and it disrupts your work, your may use the command "mesg n" to refuse accepting messages. You may want to use "who" or "rwho" to determine the users who are currently logged-in.

telnet server
Connect to another machine using the TELNET protocol. Use a remote machine name or IP address. You will be prompted for your login name and password--you must have an account on the remote machine to login. Telnet will connect you to another machine and let you operate on it as if you were sitting at its keyboard (almost). Telnet is not very secure--everything you type goes in open text, even your password!

rlogin server
(=remote login) Connect to another machine. The login name/password from your current session is used; if it fails you are prompted for a password.

rsh server
(=remote shell) Yet another way to connect to a remote machine. The login name/password from your current session is used; if it fails you are prompted for a password.

ssh server
(=secure shell) Connect to a server (remote login) using a secure connection. ssh is secure because it checks identity of the person connecting, and encrypts all the data transfered over the network using your pair of RSA"public-private" keys.

Both the client and the server must have ssh service (daemon) running. This is normally available on newer Linux distributions (e.g., RH7.0). Before using ssh, some setup is necessary.  The user creates his/her RSA key pair by running the command ssh-keygen.  This stores the private key in the file $HOME/.ssh/identity and the public key in $HOME/.ssh/identity.pub in the user's home directory.  The user should then copy the identity.pub to $HOME/.ssh/authorized_keys in his/her home directory on the remote machine  After this, the user can log in without giving  the password.  The most convenient way to use RSA authentication may be with an authentication agent.  See man 1 ssh-agent for more information. If authomatic authentication methods fail, ssh prompts the user for a password.  The password is sent to the remote host for checking; however, since all communications are encrypted, the password cannot be seen by someone listening on the network.
ftp server
Ftp another machine. (There is also ncftp which adds extra features and gftp for GUI .) Ftp is good for copying files to/from a remote machine. Try user "anonymous" if you don't have an account on the remote server. After connection, use "?" to see the list of available ftp commands.  The essential ftp command are: ls (see the files on the remote system), ASCII, binary (set the file transfer mode to either text or binary, important that you select the proper one ), get (copy a file from the remote system to the local system), mget (get many files at once), put (copy a file from the local system to the remote system), mput (put many files at once), bye (disconnect). For automation in a script, you may want to use ncftpput and ncftpget, for example:
ncftpput -u my_user_name -p my_password -a remote.host.domain remote_dir *local.html
For keeping mirrors of ftp directories, one can use fmirror

wget -m http://sunsite.dk/linux-newbie
Copy files from web sites. The example above uses the option -m (=mirror) to retrieve a complete set of files from the master site of this guide.

minicom
Minicom program (looks like "Procomm for Linux").

rx
Receive files using the Zmodem, Ymodem, or Xmodem protocol. Xmodem requires a filename. Use rx --help for more info.

5.10 File (de)compression

tar -zxvf filename.tar.gz
(=tape archiver) Untar a tarred and compressed tarball (*.tar.gz or *.tgz) that you downloaded from the Internet.

tar -xvf filename.tar
Untar a tarred but uncompressed tarball (*.tar).

tar czvpf /var/backups/mybackup.tar.gz /home
cd /; tar xzvpf /var/backups/mybackup.tar.gz '*/myfile.rtf'
(as root) Create a backup of /home to a compressed file. The second command shows how to restore a file from the backup.

gunzip filename.gz
Decompress a zipped file (*.gz" or *.z). Use gzip (also zip or compress) if you wanted to compress files to this file format.

zcat filename.gz | more
(=zip cat) Display the contents of a compress file.

bunzip2 filename.bz2
(=big unzip) Decompress a file (*.bz2) zipped with bzip2 compression utility. Used for big files.

unzip filename.zip
Decompress a file (*.zip) zipped with a compression utility compatible with PKZIP for DOS.

unarj e filename.arj
Extract the content of an *.arj archive.

uudecode -o outputfile filename
Decode a file encoded with uuencode.  uu-encoded files are typically used for transfer of non-text files in e-mail (uuencode transforms any file into an ASCII file).

cat filename | mimencode  -o filename.mime
cat filename.mime |mimencode -u -o filname
(2 commands.) Encode and then decode back a file to/from the mail-oriented Internet standard for 7-bit data transfer called "mime".  On older distributions, the command that does the work (mimencode) is called mmencode.  Usually, you don't have to bother with these commands, your mailer should do the mime encoding/decoding in a transparent way.

5.11 Process control

ps
(="print status" or "process status") Display the list of currently running processes with their process IDs (PID) numbers. Use ps axu to see all processes currently running on your system (also those of other users or without a controlling terminal), each with the name of the owner. Use "top" to keep listing the processes currently running.

any_command &
Run any command in the background (the symbol "&" means "run the proceeding command in the background").  The job_number is printed on the screen so you can bring the command in the foreground (see below) if you want.

jobs
List my background or stopped processes and show their job numbers.

fg job_number
Bring a background or stopped process to the foreground.

bg job_number
Place a process in the background, so it is exactely as if it had been started with &. This will restart a stopped background process. Current foreground process can often be stopped with <Ctrl>z.  If you have stopped or background jobs, you have to type exit twice in row to log out.

batch any_command
Run any command (usually one that is going to take more time) when the system load is low. I can logout, and the process will keep running.

at 17:00
Execute a command at a specified time.  You will be prompted for the command(s) to run, until you press <Ctrl>d.  The associated commands are atq (display the queue of processes started with at) and atrm (remove a process from the "at queue").

kill PID
Force a process shutdown. First determine the PID of the process to kill using ps.

killall program_name
Kill program(s) by name.

xkill
(in X terminal) Kill a GUI-based program with mouse. (Point with your mouse cursor at the window of the process you want to kill and click.)

kpm
(in X terminal) KDE process manager.

lpc
(as root) Check and control the printer(s). Type "?" to see the list of available commands.

lpq
Show the content of the printer queue. Under KDE (X-Windows), you may use GUI-based "Printer Queue" available from "K"menu-Utilities.

lprm job_number
Remove a printing job "job_number" from the queue.

nice program_name
Run program_name adjusting its priority. Since the priority is not specified in this example, it will be increased by 10 (the process will run slower), from the default value (usually 0). The lower the number (of "niceness" to other users on the system), the higher the priority. The priority value may be in the range -20 to 19.  Only root may specify negative values. Use top to display the priorities of the running processes.

renice -18 PID
(as root) Change the priority of a running process to minus 18. Normal users can only adjust processes they own, and only up from the current value (make them run slower). One could also renice +10 -u peter to make user peter use fewer cpu clicks so that other user don't suffer when he runs his computing-intensive tasks.

<Ctrl>c, <Ctrl>z, <Ctrl>s, and <Ctrl>q also belong to this chapter but they were described previously. In short they mean: stop the current command, send the current command to the background, stop the data transfer, resume the data transfer.

lsof
List the opened files. If I am a root, all files will be listed. I can limit myself to files opened by processes owned by the second console if I use lsof /dev/tty1 .

5.12 Basic administration commands

printtool
(as root in X-terminal) Configuration tool for your printer(s). Settings go to the file /etc/printcap and (strangely) /var/spool/lpd.

setup
(as root) Configure mouse, soundcard, keyboard, X-windows, and system services. There are many distibution-specific configuration utilities, setup is the default on RedHat. Mandrake 7.0 offers very nice DrakConf .

linuxconfig
(as root, either in text mode or in the X terminal). You can access and change hundreds of network setting from here. Very powerful--don't change too many things at the same time, and be careful with changing entries you don't understand.  ReadHats network configuration utility netconf is a subset of linuxconfig, therefore it is simplier and sometimes easier to use.

timeconfig
(as root) Set the timezone for your system.

setclock
(as root). Set your computer hardware clock from the current linux system time. Use the command "date" first to set up the linux system time. E.g., I could change the date and time to 2000-12-31 23:57 using this command:
date 123123572000
and then write the time to the hardware clock using:
setclock

xvidtune
(in X-terminal). Adjust the settings of the graphical display for all resolutions so as to eliminate black bands, shift the display right/left/up/down, etc. (First use the knobs on your monitor to fit your text mode correctly on the screen.) Then use xvidtune to adjust the monitor frequencies for each resolution so it fits well in your secree. To make the changes permanent, display the frequencies on the screen and then transfer them to the setup file /etc/X11/XF86Config.

alias ls="ls --color=tty"
Create an alias for the command "ls" to enhance its format with color. In this example, the alias is also called "ls" and the "color" option is only envoke when the output is done to a terminal (not to files). Put the alias into the file /etc/bashrc if you would like the alias to be always accessible to all users on the system. Aliases are a handy way to customize your system. Type "alias" alone to see the list of aliases on your system. Use unalias alias_name to remove an alias.

adduseruser_name
useradd user_name
(Two commands doing the same. Use either.) Create a new account (you must be root). E.g.,  adduser barbara  Don't forget to set up the password for the new user in the next step. The user home directory is /home/user_name.

userdeluser_name
Remove an account (you must be a root). The user's home directory and the undelivered mail must be dealt with separately (manually because you have to decide what to do with the files).

groupadd group_name
(as root) Create a new group on your system. Non-essential on a home machine, but can be very handy even on a home machine with a small number of users.

For example, I could create a group "friends", then edit the file /etc/group, and add my login name and the names of my friends to the line that lists the group, so that the final line might look like this:
friends:x:502:stan,pete,marie
Then, I can change the permissions on a selected file so that the file belongs to me AND the group "friends".
chgrp friends my_file
Thus, the listed members of this group have special access to these files that the rest of the world might not have, for example read and write permissions:
chmod g=rw,o= my_file
The alternative would be go give write permission to everybody, which is definitely unsafe even on a home computer.


groups
List the groups to which the current user belongs.

userconf
(as root) Menu-driven user configuration tools (password policy, group modification, adding users, etc). Part of linuxconf package, but can be run separately.

passwd
Change the password on your current account. If you are root, you can change the password for any user using:  passwd user_name

chfn
(="change full name"). Change the information about you (full name, office number, phone number, etc). This information is displayed when the finger command is run on your login_name.

chage -M 100 login_nam
(= "change age"). Set the password expiry to 100 days for the user named login_name .

chmod perm filename
(=change mode) Change the file access permission for the files you own (unless you are root in which case you can change any file). You can make a file accessible in three modes: read (r), write (w), execute (x) to three classes of users: owner (u), members of the group which owns the file (g), others on the system (o). Check the current access permissions using:
ls -l filename
If the file is accessible to all users in all modes it will show:
rwxrwxrwx
The first triplet shows the file permission for the owner of the file, the second for the group that owns the file, and the third for others ("the rest of the world"). A "no" permission is shown as "-".
When setting permissions, these symbols are used: "u"(=user or owner of the file), "g"(=group that owns the file), "o"(=others), "a" (=all, i.e., owner, group and others), "="(=set the permission to), "+"(=add the permission), "-"(=take away the permission), "r"(=permission to read the file), "w"=(write permission, meanning the permission to modify the file), "x"(=permission to execute the file).

For example, this command will add the permission to read the file junk to all (=user+group+others):
chmod a+r junk
This command will remove the permission to execute the file junk from others:
chmod o-x junk
Also try here for more info.
You can set the default file permissions for the news files that you create using the command umask (see man umask).

chown new_ownername filename
chgrp new_groupname filename
Change the file owner and group. You should use these two commands after you copy a file for use by somebody else.  Only the owner of a file can delete it.

lsattr files
List attributes for the file(s). Not very often used because the most interesting attributes are still not implemented. The attributes can be changed using the chattr command. The attributes are: A (=don't  update  atime when the file is modified), S (=synchronous updates), a (=append only possible to this file), c (=file compressed on the kernel level, not implemented yet), i (=immutable file),  d (=no  dump), s (=secure deletion), and u (undeletable, not implemented yet). An interesting usage may be to make a file undeletable even by root (until s/he clears the attribute).

su
(=substitute user id) Assume the superuser (=root) identity (you will be prompted for the password). Type "exit" to return you to your previous login. Don't habitually work on your machine as root. The root account is for administration and the su command is to ease your access to the administration account when you require it. You can also use "su" to assume any other user identity, e.g. su barbara will make me "barbara" (password required unless I am the superuser).

cat /var/log/httpd/access_log
Show who connected to your http (apache) server since the last time the log file was "rotated" (normally rotated once a day, when cron runs). The previous log file is access_log.1, the yet previous access_log.2, etc.

cat /var/log/secure
(as root) Inspect the important system log. It is really a good idea to do it from time to time if you use Internet access.

ftpwho
(as root) Determine who is currently connected to your ftp server.

SVGATextMode 80x25x9
SVGATextMode 80x29x9
(as root) Change the text resolution in the text terminal. In the above example (second line) I changed the text screen to 80 columns x 29 lines with characters 9 pixels high. The first line defines a resolution that always works, so that if the second command did not work on my system, I can press <ArrowUP> twice and <Enter> to regain control over my screen.  The possible modes depend on your video card and your monitor synchronization frequencies--I needed to edit (as root) the file /etc/TextConfig and (un)comment the proper lines to let SVGATextMode know what my system supports.

kernelcfg
(as root in X terminal). GUI to to add/remove kernel modules. Module is like a device driver--a piece of Linux kernel that provides support for a particular piece of hardware or functionality. You can do the same from the command line using the command insmod.

lsmod
(= list modules). List currently loaded kernel modules. A module is like a device driver--it provides operating system kernel support for a particular piece of hardware or feature.

modprobe -l |more
List all the modules available for your kernel. The available modules are determined by how your Linux kernel was compliled. Every possible module/feature can be compiled on linux as either "hard wired" (fast, non-removable), "module" (maybe slower, but loaded/removable on demand), or "no" (no support for this feature at all). The modules with which your kernel supports (with which it was compiled) are all as files under the directory /lib/modules so browsing it may give you a clue if you are lost.

modprobe sb
Load the soundblaster (sb) module.

insmod parport
insmod ppa
(as root) Insert modules into the kernel (a module is roughly an equivalent of a DOS device driver). This example shows how to insert the modules for support of the external parallel port zip drive (it appears to be a problem to get the external zip drive to work  in any other way under RH6.0 and 6.1).

rmmod module_name
(as root, not essential). Remove the module module_name from the kernel.

depmod -a
(as root) Build the module dependency table for the kernel. Not essential unless you modified /etc/modules and don't wish to reboot.

setserial /dev/cua0 port 0x03f8 irq 4
(as root) Set a serial port to a non-standard setting. The example here shows the standard setting for the first serial port (cua0 or ttyS0). The standard PC settings for the second serial port (cua1or ttyS1) are: address of i/o port 0x02f8, irq 3. The third serial port (cua2 or ttyS2): 0x03e8, irq 4. The forth serial port (cua3 or ttyS3): 0x02e8, irq 3. Add your setting to /etc/rc.d/rc.local if you want it to be set at the boot time. See man setserial for good a overview.

tunelp
(as root, rarely needed) Tune up your parallel ports.

fdisk /dev/hda
(= "fixed disk". As root.) Linux hard drive partitioning utility (DOS has a utility with the same name). In the example above, I specified that I would like to partition the first harddrive on the first IDE interface, hence hda. If I were you, i would backup my data before using fdisk on any partition. I do not not know anybody who likes fdisk (either Linux or DOS edition)--I prefer easier to use cfdisk, see next command.

cfdisk /dev/hda
(as root) Hard drive partitioning utility, menu-based. Easier to use then the plain-vanilla fdisk (see ther previous command).

cd /usr/src/linux-2.2.14
make xconfig
(as root in X terminal). Nice GUI front-end for configuration of the kernel options in preparation for compilation of your customized kernel.  (The directory name contains the version of your Linux kernel so you may need to modify the directory name if your Linux kernel version is different than 2.2.14 used in this example. Also, you  need the "Tk" interpreter and the kernel source code installed.) The alternatives to  "make xconfig" are: "make config"  (runs a scripts that asks you questions in the text mode) and "make menuconfig" (runs a text-based menu-driven configuration utility). Try: less /usr/doc/HOWTO/Kernel-HOWTO for more information.
After configurating the options for the new kernel, you may choose to proceed with kernel compilation of the new kernel by issuing the following commands:
make dep
make bzImage
The last command will take some time to complete (maybe 0.5 h or 2 h, depending on your hardware). It produces the file "bzImage", which is your new Linux kernel. Next:
make modules
make modules_install
Now you the new kernel and modules so you can install them--installation involves copying the new files into the /boot directory and making changes to /etc/lilo.conf so you can select at the boot time which kernel (old or new) to boot. See this for details on kernel upgrade.  It may also be helpful to read: /usr/doc/HOWTO/Kernel-HOWTO and perhaps man depmod. Configuration, compilation and installation of a new kernel is not difficult at all but it CAN lead to problems if you don't know what you are doing (tough luck, if you cannot boot and are really unable to fix things after booting from the floppy, you may need to re-install). Compilation of a kernel is also a good way to test your hardware, because it involves massive amount of computing. If your hardware is "flaky", you will most likely receive the "signal 11" error (read the beatiful /usr/doc/FAQ/txt/GCC-SIG11-FAQ).

ldconfig
(as root) Re-create the bindings and the cache for the loader of dynamic libraries ("ld"). You may want to run ldconfig after an installation of new dynamically linked libraries on your system. (It is also re-run every time you boot the computer, so if you reboot you don't have to run it manually.)

mknod /dev/fd0 b 2 0
(=make node, as root) Manually create a device file. This example shows how to create a device file associated with your first floppy drive and could be useful if you happened to accidentally erase it. The options are: b=block mode device, c=character mode device, p=FIFO device, u=unbuffered character mode device. The two integers specify the major and the minor device number. I normally wouldn't know the parameters which mknod requires. So to make devices, I first read man MAKEDEV to figure the name of the device and then run the script /dev/MAKEDEV which knows about Linux devices by their names--see the next command.  If the mentioned manual page does not help, I may refer to the ultimate documentation included with the kernel source code:
less /usr/src/linux/Documentation/devices.txt

cd /dev
./MAKEDEV audio
(as root). Restore the "audio" device that I just somehow screwed up. Also see the previous command.

fdformat /dev/fd0H1440
mkfs -c -t ext2
(=floppy disk format, two commands, as root) Perform a low-level formatting of a floppy in the first floppy drive (/dev/fd0), high density (1440 kB). Then make a Linux filesystem (-t ext2), checking/marking bad blocks (-c ). Making the filesystem is an equivalent to the high-level formatting.

badblocks /dev/fd01440 1440
(as root) Check a high-density floppy for bad blocks and display the results on the screen. The parameter "1440" specifies that 1440 blocks are to be checked. This command does not modify the floppy.

fsck -t ext2 /dev/hda2
(=file system check, as root) Check and repair a filesystem, e.g., after an "unclean" shutdown due to a power failure. The above example performs the check on the partition hda2, filesystem type ext2. You definitely want to boot Linux in the "single mode" to perform this (type "linux single" at the LILO prompt or use init 1 as root to enter the single user mode). If errors are found during the filesystem checkup, I accept the defaults for repair.

dd if=/dev/fd0H1440 of=floppy_image
dd if=floppy_image of=/dev/fd0H1440
(two commands, dd="data duplicator") Create an image of a floppy to the file called "floppy_image" in the current directory. Then copy floppy_image (file) to another floppy disk. Works like DOS "DISKCOPY".

/sbin/chkconfig
A tool to check/enable/disable system services under different runlevels. Typically, I just use RedHat setup utility if I need to enable/disable a service, but chkconfig does give me extra flexibility should I ever need it.

SuperProbe
(as root). A utility to determine the type of the video card and the amount of its memory.

symlinks -r -cds /
(as root) Check and fix the symbolic links on my system. Start from / and progress through all the subdirectories (option -r="recurse")  and change absolute/messy links to relative, delete dangling links, and shorten lengthy links (options -cds).  If my filesystem spreads over different hard drive partitions, I need to re-run this command for each of them (e.g., symlinks -r -cds /usr).

5.13 Program installation

rpm -ivh package_name-version.platform.rpm
(as root) Install a package (option "i", must be the first letter after the dash), while talking to me a lot (option "v'=verbose) and printing "hashes" to show installation progress (option "h"). rpm stands for "Redhat Package Manager".

rpm -Uvh package_name-version.platform.rpm
(as root) Upgrade (option "U", must be the first letter after the dash) a package, while being verbose (option "v") and displaying hashes ("h").

rpm -ivh --force --nodep package_name-version.platform.rpm
(as root) Install the package ignoring any possible conflicts and package dependency problems.

rpm -e package_name
(as root) Uninstall (option "e"=erase) the package package_name. Please note the absence of  "-version.platform.rpm" at the end of the package name (the package name is the same as the name of the *.rpm file from which the package was installed but without the dash, version, platform and "rpm").

rpm -qpi package_name-version.platform.rpm
Query (option "q", must be the first letter after the dash) the yet uninstalled package (option "p") so that it displays the info (option "i") which the package contains.

rpm -qpl package_name-version.platform.rpm
Query (option "q", must be the first letter after the dash) the yet uninstalled package (option "p") so that it displays the listing (option "l") of all the files the package contains.

rpm -qf a_file
Find the name of the installed package to which the file "a_file" belongs or belonged. Useful if I accidentally erased a file and now I need to find the right package and re-install it.

rpm -qi package_name
Query the already installed package so that it displays the info about itself. Please note the absence of  "-version.platform.rpm" at the end of the package name.

rpm -qai | more
Query all the packages installed on my system so that they display their info. On my simple system, I have ~600 packages installed so obviously, I must have a lot of time to read all their info.  To count your packages, try: rpm -qa | grep -c ''

rpm -Va
Verify (the option "V") all the packages (option "a") installed on my system. This lists files that were modified since the installation. Here is the legend for the output:
.      Test passed
c      This is a configuration file
5      MD5 checksum failed
S      File size is different
L      Symbolic link has changed
T      File modification time changed
D      Device file is modified
U      User that owns the file has changed
G      Group that owns the file has changed
M      File mode (permissions and/or file type) has been modified

kpackage
gnorpm
glint
(in X terminal, as root if you want to be able to install packages) GUI fronts to the Red Hat Package Manager (rpm). "glint" comes with RH5.2 and seems obsolete now. gnorpm is the "official" RedHat GUI package installer, older versions are very slow and confusing but the newer version (the one that comes with RH7.0) is vastly improved.  kpackage is the "official" KDE program and has been pretty good all along. Use any of them to view which software packages are installed on your system and the what not-yet-installed packages are available on your RedHat CD, display the info about the packages, and install them if you want (installation must be done as root).
 

5.14 Accessing drives/partitions

mount
See here for details on mounting drives.  Examples are shown in the next commands.

mount -t auto /dev/fd0 /mnt/floppy
(as root) Mount the floppy. The directory /mnt/floppy must exist, be empty and NOT be your current directory.

mount -t auto /dev/cdrom /mnt/cdrom
(as root) Mount the CD. You may need to create/modify the /dev/cdrom file depending where your CDROM is. The directory /mnt/cdrom must exist, be empty and NOT be your current directory.

mount /mnt/floppy
(as user or root) Mount a floppy as user. The file /etc/fstab must be set up to do this. The directory /mnt/floppy must not be your current directory.

mount /mnt/cdrom
(as user or root) Mount a CD as user. The file /etc/fstab must be set up to do this. The directory /mnt/cdrom must not be your current directory.

umount /mnt/floppy
Unmount the floppy. The directory /mnt/floppy must not be your (or anybody else's) current working directory. Depending on your setup, you might not be able to unmount a drive that was mount by somebody else.
 

5.15 Network administration tools

netconf
(as root) A very good menu-driven setup of your network.

ping machine_name
Check if you can contact another machine (give the machine's name or IP), press <Ctrl>C when done (without <Ctrl>c, the command keeps going). As all Linux commands, ping has options, including the  "ping of death" attack, when it seems you can ping some servers so they die--try the the opitons -f and -s.

route -n
Show the kernel routing table.

nslookup host_to_find
Query your default domain name server (DNS) for an Internet name (or IP number) host_to_find. This way you can check if your DNS works. You can also find out the name of the host of which you only know the IP number.

traceroute host_to_trace
Have a look how you messages trave to host_to_trace (which is either a host name or IP number).

mtr host_to_trace
(as root) A powerful and nice tool that combines the functionality of the older ping and traceroute (RH7.0)

nmblookup -A ip_address
Status of a networked MS Windows machine (with an NetBIOS name).  This command is an equivalent of Windows nbtstat command.

ipfwadm -F -p m
(for RH5.2, see the next command for RH6.0) Set up the firewall IP forwarding policy to masquerading. (Not very secure but simple.) Purpose: all computers from your home network will appear to the outside world as one very busy machine and, for example, you will be allowed to browse the Internet from all computers at once.

echo 1 > /proc/sys/net/ipv4/ip_forward
ipfwadm-wrapper -F -p deny
ipfwadm-wrapper -F -a m -S xxx.xxx.xxx.0/24 -D 0.0.0.0/0
(three commands, RH6.0). Does the same as the previous command. Substitute  the "x"s  with digits of your class "C" IP address that you assigned to your home network. See here for more details.

ipchains -P forward DENY
ipchains -A forward -s xxx.xxx.xxx.0/24 -d 0.0.0.0/0 -j MASQ
(two commands, RH7.0).  Same as previous commands, but works under RH7.0.

ipchains -L
List all firewall rules. Use to check if your firewalling works.

ifconfig
(as root) Display info on the network interfaces currently active (ethernet, ppp, etc). Your first ethernet should show up as eth0, second as eth1, etc, first ppp over modem as ppp0, second as ppp1, etc. The "lo" is the "loopback only" interface which should be always active. Use the options (see ifconfig --help) to configure the interfaces.

ifup interface_name
(/sbin/ifup to run as a user) Startup a network interface. E.g.:
ifup eth0
ifup ppp0
ifup ppp1
Users can start up or shutdown the ppp interface only when the permission is given in the ppp setup (using netconf ). To start a ppp interface (dial-up connection), I normally use kppp available under the KDE "K" menu (or by typing kppp in an X-terminal).

ifdown interface_name
(/sbin/ifdown to run it as a user). Shut down the network interface. E.g.: ifdown ppp0 Also, see the previous command.

netstat | more
Displays a lot (too much?) information on the status of your network.

/usr/sbin/mtr --gtk
(as root, in X windows if you wish the nice gtk-based interface). Network diagnostic tool combining the capabilities of traceroute and ping.   Comes with RH7.0.

nmap ip_number
Map the ports on the machine with ip_number.  REALLY useful to establish the security of your network configuration as you can see the opened ports. nmap is included on the RH7.0 "Linux PowerTools" CD, as is a convenient GUI front end, "nmapfe". nmap can also do operating system "fingerprinting". Normally, people don't like their computer ports being scanned by nmap so they may complain.

ethereal
(as root, in Xterminal) Network analyzer--view the network trafic going through your computer. Included on the RH7.0 "Linux PowerTools" CD.  Using ethereal may be unethical is some situations, and unauthorized use at workplace would probably be a fireable offence.

5.16 Music-related commands

cdplay play 1
Play the first track from a audio CD.  Use cdplay to play the whole CD. Use cdplay stop when had enough.

eject
Get a free coffee cup holder :))).   (Eject the CD ROM tray). This command defaults to the cdrom, but could be used to eject other removable media by specifying the mount point or device. E.g., I can eject the zipdisk from the zipdrive (as root) using: eject /dev/sda4

play my_file.wav
Play a wave file.

rec my_file.wav
Record a wave file from my microphone.

mpg123 my_file.mp3
Play an mp3 file.

mpg123 -w my_file.wav my_file.mp3
Create a wave audio file from an mp3 audio file. Useful if you wanted to write a regular audio CD from mp3s--you have to convert the mp3s to the *.wav format first. Don't be surprised the conversion is slow--decompressing mp3s is very processor intensive.

xmms
(in X terminal) Nice GUI mp3 player.

freeamp
(in X terminal) Another GUI mp3 player.

lame input_file output_file
MP3 encoder.

knapster
(in X terminal) Start the program to downoload mp3 files that other users of napster have displayed for downloading. You may share your mp3s too. Really cool, while it lasts. Gnutella and FreeNet will soon replace them->it gets even cooler.

cdparanoia -B  "1-"
(CD ripper)  Read the contents of an audio CD and save it into wavefiles in the current directories, one track per wavefile.  The "1-" means "from track 1 to the last". -B forces putting each track into a separate file.

playmidi my_file.mid
Play a midi file.  playmidi -r my_file.mid  will display text mode effects on the screen.

sox audio_file another_format_audio_file
(="SOund eXchange") Convert from almost any audio file format to another (but not mp3s).  See man sox for the list of supported audio file formats (many). sox also lets you add special effects to your sound file.

kscd
(in X terminal) CD player.

kmidi
(in X terminal) MIDI player.

kmid
(in X terminal) MIDI/caraoke player.

kmix
(in X terminl) Sound mixer.

studio
(in Xterminal) Sound Studio--edit sound files, add effects, etc. Available on the on the PowerTools CD that comes with RH7.0.

festival --tts my_file.txt
Say the content of the my_file.txt file (ascii text).  "festival" is a speach synthesizer that comes on the RedHat 7.0 "Linux PowerTools" CD. To say something from the command line, you need to start up "festival" and  then, at the "festival>" prompt, type the appropriate command (scheme interpreter), as in this example (bold represents the prompt):
festival
festival>(SayText "good dog, really good dog")
festival> (quit)

5.17 Graphics-related commands

kghostview my_file.ps
(in an X-terminal) Display a postscript file on screen.  I can also use the older-looking ghostview or gv for the same end effect. I can print the postscript file from the viewer too.

enscript my_file.txt -U 2
Convert a text file to postscript and print it to the default printer. I could also send the output to a postscript file:
enscript my_file.txt -U 2 -o my_file.ps
The option -U 2 makes enscript print 2 logical pages on one physical page which saves me paper, and creates more convenient, compact printouts. You may also select four pages per page, more makes the printout kind of difficult to read. enscript is really flexible, see man enscript to select from among the many formatting options.

ps2pdf my_file.ps my_file.pdf
Make a pdf (Adobe portable document format) file from a postscript file.

mpage -2 my_file.ps > new_file.ps
Print the postscript file my_file.ps, outputting two logical pages on one physical page. Save the output to the file new_file.ps.

ps2ps file.ps new_file.ps
psnup -nup 2 -pletter new_file.ps new_file2.ps
Another way of making a postscript file containing 2 logical pages on one physical page. First, I used the "postscript distiller" ps2ps to make the postscript file simplier (at the cost of it becoming much larger). Then, I used the psnup utility to make new_file2.ps which contains 2 logical pages per one physical page.  I could have also put 4 or 8 logical pages per one physical page.

gimp
(in X terminal) A humble looking but very powerful image processor. Takes some learning to use, but it is great for artists, there is almost nothing you can't do with gimp. Use your mouse right button to get local menus, and learn how to use layers. Save your file in the native gimp file format *.xcf (to preserve layers for future editing) and only then flatten it and save as png (or whatever) for use. "Learning how to make proper selection is the key."

gphoto
(in X terminal) Powerful photo editor and camera image acquisition program.

kpaint
(in X terminal) Simple bitmap paint program ("paintbrush"-type).

xfig
(in X terminal) A simple drawing program. Useful for making elementary sketches or diagrams.

dia
(in X terminal) A tool for drawing diagrams from pre-built components.

display my_picture
(in X terminal) Display a picture for viewing only. Part of ImageMagick package (together with several other utilities descrbied here).

giftopnm my_file.giff > my_file.pnm
pnmtopng my_file.pnm > my_file.png
Convert the propriatory giff graphics into a raw, portable pnm file. Then convert the pnm into a png file, which is a newer and better standard for Internet pictures  (better technically plus there is no danger of being sued by the owner of giff patents).

xwd -out my_cupture_screen_file.xwd
(in X terminal) Capture the contents of X-windows screen into a graphics X-windows "dump" file (*.xwd). You can later convert the xwd file into your favourite format using the convert utility.

convert my_capture_screen_file.xwd my_capture_screen.jpg
Convert the X-windows screen dump file (*.xwd) into the *.jpg file format.  The convert utility can convert graphics from/to many different file formats.

import -display 192.5.100.10:0 -window root my_file.jpeg
Capture the contents of the root screen from X-windows runnning on server 192.5.100.10 display 0. The output file is my_file.jpeg (change the file format by it giving an appropriate filename extension). You need to have the permission to write to the screen in order to be able to capture its content (the permission to everybody can be given by running xhost + in the X-terminal).  See man import for options.

ksnapshot
(in X terminal)  GUI-based utility to capture screen contents.

identify -verbose my_picture
Give me a description of an image file my_picture: format, type, class, size in pixels, number of colours, size in bytes, etc.

animate -delay 6x5 pic1 pic2 pic3
Keep showing pictures two or more pictures in sequence.  In the example above, the picture files are named pic1, pic2 and pic3, the delay between pictures is 0.06 second, and the whole presentation sequence is repeated in 5 seconds.

5.18 Small games

Many small games are probably installed on your system. Here are a few I like--they installed from my standard Linux distribution CD.

kpat
(in X terminal) Patience card game.  sol (fast) and pysol (slow but loaded) are two other choices.

xboing
(in X terminal). Very nice, pin-ball game.

xboard
(in X terminal) Chess.

konquest
(in X terminal) Compete with your son in a conquest of a galaxy. Nice board game.

kmines
(in X terminal) Minesweeper.

civserver
civclient
(in X terminal) Startup server for the FreeCivilization game (first command). Afterwards, when the server is already running, start up the client (second comamand).  Somebody else starts another client--and you play. FreeCiv came on my RH7.0 CDs.

fgfs
"Flight Gear" flight simulator.

Go to Part 6: Essential Linux applications (proprietary or not)
Back to Top Page