Notes for the UNIX Clueless:
1. LINUX IS CASE-SENSITIVE. For example: Mozilla, MOZILLA,
mOzilla, and mozilla would be four different commands
(but of the four, only mozilla is available 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, "." (dots), "_" (underscores), "-" (dashes), 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 "dot" 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-view tree.
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 with #. Always insert a short comment describing
what you have done (for your own benefit!).
7. Linux is inherently multi-user. Your personal settings (and all
other personal files) 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 typically be 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 an
&) to start a command in the background. This is usually the preferred
way of starting a program from the X-window terminal.
<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"). In text terminal (outside X), you can
also use <Alt><Fn> (the key <Ctrl>
is not needed).
tty
Print the name of the terminal in which you are typing this command.
If you prefer the number of the active terminal (instead of its name),
it can be printed using the command fgconsole (="foreground console").
<Ctrl><Alt><F7>
Switch to the first GUI terminal (if X-windows is running on the
7th terminal, where it typcially is).
<Ctrl><Alt><Fn> (n=7..12)
Switch to the nth GUI terminal (if a GUI terminal is running on screen
n-1). On default, the first X server is running on terminal 7.
On default, nothing is running on terminals 8 to 12--you can start subsequent
X server there.
<Tab>
(In a text or X terminal) Autocomplete the command if there
is only one option, or else show all the available options. On newer systems
you may need to press <Tab><Tab>. THIS SHORTCUT
IS GREAT, it can truely save you lots of time.
<ArrowUp>
(In a text or X terminal) Scroll and edit the command history. Press
<Enter> to execute a historical command (to save on typing).
<ArrowDown> scrolls back.
<Shift><PgUp>
Scroll terminal output up. This works also at the login prompt, so
you can scroll through your bootup messages. The amount/usage of your
video memory determines how far back you can scroll the display. <Shift><PgDown>
scrolls the 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 resolution determines the size of the "virtual screen"):
Modes "1024x768" "800x600" "640x480" "512x384" "480x300" "400x300"
"1152x864"Z
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). XFdrake (Mandrake configuration
utility) can do it from GUI. See also the commands xvidtune and
xvidgen.
<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>
(in text terminal) 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 with 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. See the previous command.
<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, this command
will make you exit the second shell, and you will be back in the first
shell, not logged out. Then use another exit to logout.)
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, but it still will work.
<MiddleMouseButton>
Paste the text which is currently highlighted somewhere else. This
is the normal "copy-paste" operation in Linux. It a fast and powerful
supplement to the widely-known GUI "copy-paste" menu-based operation.
(It doesn't work inside older versions of Netscape which use the Mac/MS
Windows-style "copy-paste" exclusively. It does work in the text terminal
if you enabled "gpm" service using "setup". It also works inside any
dialog boxes, etc.--really convenient!) It is best used with a Linux-ready
3-button mouse (Logitech or similar) or else set "3-mouse button emulation".
The <MiddleMouseButton> is normally emulated on a 2-button mouse
by pressing both mouse buttons simultanously.
~
(tilde character) 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 ~". I keep
all my files in my home directory.
.
(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.
Some additional KDE keyboard shortcuts (useful, but non-essential)
<Alt><Tab> Walk through windows. To walk
backwards: <Alt><Shift><Tab>
<Ctrl><Tab> Walk through desktops.
To walks backwards: <Ctrl><Shift><Tab>
<Ctrl><Esc> Show the table of processes running
on my system. Allow me to kill any of the processes I started (or send
other signals to them).
<Alt><F1> Access the K-menu ("Equivalent
to MS Windows "Start" menu).
<Alt><F12> Emulate the mouse using the
arrow keys on the keyboard.
<Alt><LeftMouseButton> Drag a window to
move it. Normally, I move a window by dragging its top title bar, but
occassionally I manage to get it off the screen. With this shortcut, I
can drag by any part of the window.
<Alt><PrintScreen> Take a snapshot of
the current window into the clipboard.
<Ctrl><Alt><PrintScreen> Take a snapshot
of the entire desktop into the clipboard.
<Ctrl><Alt><l> Lock the desktop.
<Ctrl><Alt><d> Toggle hide/show the desktop
(great to hide the Solitaire game when your boss walks in).
<Alt><SysRq><command_key>
(Non-essential.) This is a group of key combinations implemented
at the Linux kernel level (a 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 (mostly developers); you should
try other, safer solutions first. The key <SysRq> is also knows
on PC as <PrintScreen>. The combinations can be enabled/disabled
by setting the relevant kernel variable to "1" or "0", e.g. : echo "1"
> /proc/sys/kernel/sysrq
<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 than 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. Your will likely end up with
filesystem errors.
<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 unsupported <Alt><SysRq><key>
combination will display the same help.
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/share/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 somewhat 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 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 all 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
kdehelpcenter
(in X-terminal, two commands, use the one that works on your system).
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.
hostname
Print the name of the local host (the machine on which I am 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 the operating system current date, time and timezone. For an
ISO standard format, I have to use: date -Iseconds
I can change the date and time to 2000-12-31 23:57 using this command:
date 123123572000
or using these two commands (easier to remember):
date --set 2000-12-31
date --set 23:57:00
To set the hardware (BIOS) clock from the system (Linux) clock, I
can use the command (as root): setclock
The international (ISO 8601) standard format for all-numeric date/time has the form: 2001-01-31 (as in Linux default "C" localization). You can be more precise if you wish using, for example: 2001-01-31 23:59:59.999-05:00 (representing I milisecond before February 2001, in a timezone which is 5 hours behind the Universal Coordinated Time (UTC)) . The most "kosher" representation of the same point in time could be: 20010131T235959,999-0500. See the standard at ftp://ftp.qsl.net/pub/g1smd/8601v03.pdf.time
clock
hwclock
(two commands, use either). Obtain date/time from the computer hardware
(real time, battery-powered) clock. You can also use one of this commands
to set the hardware clock, but setclock may be simplier (see 2
commands above). Example: hwclock --systohc --utc sets
the hardware clock (in UTC) from the system clock.
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 . One can
use finger with any networked computer that exposes the finger
service to the world, e.g., I can do (try): finger @finger.kernel.org
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
my system. It did not work on my system, so got it started with:
touch /var/log/btmp
"There's a good reason why /var/log/btmp isn't available on any sane set-up - it's a world-readable file containing login mistakes. Since one of the most common login mistakes is to type the password instead of the username, /var/log/btmp is a gift to crackers." (Thanks to Bruce Richardson). It appears the problem can be solved by changing the file permissions so only root can use "lastb":history | more
chmod o-r /var/log/btmp
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 on my computer, sorted
by cpu usage (top processes first). Press <Ctrl>c when done.
PID = process identification.gtop
USER=name of the user who owns (started?) the process.
PRI=priority of the process (the higher the number, the lower the priority, normal 0, highest priority is -20, lowest 20.
NI=niceness level (i.e., if the process tries to be nice by adjusting the priority by the number given). The higher the number, the higher the niceness of the process (i.e., its priority is lower).
SIZE=kilobytes of code+data+stack taken by the process in memory.
RSS=kilobytes of physical (silicon) memory taken.
SHARE=kilobytes of memory shared with other processes.
STAT=state of the process: S-sleeping, R-running, T-stopped or traced, D-uniterruptable sleep, Z=zombie.
%CPU=share of the CPU usage (since last screen update).
%MEM=share of physical memory.
TIME=total CPU time used by the process (since it was started).
COMMAND=command line used to start the task (careful with passwords, etc., on command line, all permitted to run "top" may see them!
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.
XFree86 -version
Show me the version of X windows I have on my system.
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 shows 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 (in full). Normally too much to
bother.
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 (see the previous command).
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.
quota
See my disk quota (the limits of disk usage).
sysctl -a |more
Display all the configurable Linux kernel parameters.
runlevel
Print the previous and current runlevel. The output "N5" means:
"no previous runlevel" and "5 is the current runlevel". To change the runlevel,
use "init", e.g., init 1 switches the system to a single user
mode.
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:sar
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 .
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 me one directory up (very useful).
./program_name
Run an executable in the current directory. The ./ is needed when
the executable is not on my PATH. An executable which is on my PATH is
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 (the small icon with padlock in KDE, the keyboard
shortcut <Ctrl><Alt><l>).
mcopy source destination
Copy a file from/to a DOS filesystem (no mounting of the DOS 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
do 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 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 (more often than hard links), 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 for a
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). According to some computer dinosaurs, this is
the best file manager ever.
konqueror &
(in X terminal) Launch the KDE file manager. Perhaps this is the
utltimate for file managment. Much better that the MS "Windows Explorer".
It embeds web browsing, pdf viewing, and more. Really cool.
xwc
(in X terminal). Another excellent file manager (called "X Win Commander").
Faster than konqueror, but not as loaded with features.
nautilus &
(in X terminal). A really cool file manager. Slower than konqueror,
but offers me goodies like icon-preview of the content of files (!). It
even "previews" the contents of sound files! Speedwise, it runs great on
my 1.33 GHz computer, but I don't use it on my 133MHz computer.
cat filename | less
less filename
(two commands, use either) Scroll a content of a text file. Press
q when done. "less" is roughly an equivalent to "more" , the command you
know from DOS, but often "less" is more convenient than "more" because it
lets me scroll both up and down.
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. A
brand new clone of pico (GPLed) is nano.
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!
kate
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 terminal) "Code" editor, i.e., plain text editor 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 work.
look thermo
Look up the dictionary on your system (/usr/share/dict/words)
for words which start with "thermo".
wvHtml ms_word_document.doc > filename.html
Convert a MS Word document to the html file format.
The find command is very powerful. It has many options that will let you search for files in a variety of ways e.g., by date, size, permissions, owner, .... Yet some search queries can take you more than a minute to compose. See info find. Here are some more complex examples for using find to accomplish some useful tasks.
find $HOME -name core -exec rm -f {} \;locate filename
The above command finds files named "core", starting from your home directory. For each such file found, it perform the action "rm -f" (force-deleting the file). The {} stands for the file found, and the "\" terminates the command list.find /dev -user "peter" |more
The above command prints the filename for all devices owned by user "peter". Printing the filename is the default "action" of find, so it does not have to be specified if this is all I need.find /home/peter -nouser -exec ls -l {} \; -ok chown peter.peter {} \;
Find files without a valid owner in the /home/peter directory. List the file in a long format. Then prompt to change the ownership to the user "peter" and the group "peter". You probably need to be root to hand over the ownership of a file.
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 mozilla
on my system produces:
/usr/bin/mozilla
whereis command
Print the locations for the binary, source, and manual page files
of the command "command".
rgrep -r 'celeste' . |more
grep -r 'celeste' . |more
(Two commands, use the one that works on your system.) Search all
files in the current directory and all its subdirectories (the option "-r"
stands for "recursive") for the example 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 X terminal remains available.
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 Xwindows. I like the popular ones: konsole and kvt
(both come with kde) and gnome-terminal (comes with gnome).
If you need something more fancy-looking, try Eterm. For something
plain and fast, I could select rxvt.
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.
mozilla -display host:0.0 &
(in X terminal) Run mozilla 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 browser,
it is light-weight, almost always works, and does not require any configuration,
as long as your networks is functional.
konqueror &
(in X terminal) File manager and web browser in one. Very nice,
in many very comptetitive to mozilla. Comes with KDE.
pine
A good, old-fashioned, text-mode mail reader. Another old-fashioned
and standard one is elm. Your mozilla 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.
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. I use kmail, it is much better
than netscape mail. I can have multiple accounts and retrieve mail from
the smtp (local) server and pop3 servers (internet service provider) to
the same mailbox. Simple and elegant. Supports digital signatures.
licq &
(in X terminal) An icq "instant messaging" client. Another good one
is kxicq. Older distributions don't have an icq client installed,
you may have to do download one and install it.
knode &
(in X terminal) Start my favourite newsgroup (usenet) reader.
It is MUCH better than 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. talk
is one of the old-fashioned "standard" UNIX tools, yet it still can be cool
and useful in some situations.
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 moves through the networks in open text, even your password!
A competent system administrator on a computer "on-route" can read what
you type. Use ssh (requires some setup) for encrypted transmission.
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 servername -l username
(=secure shell) Connect to a server (remote login) using a secure
connection. ssh is secure because encrypts all the data transfered
over the network using a pair of RSA"public-private" keys. If you don't
specify the username, your current user name is assumed.
Both the client and the server must have ssh service (daemon) running. They are normally available on newer Linux distributions (e.g., RH7.0). Before using ssh, some setup may be necessary. The user creates his/her RSA key pair (for encryption) 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. To allow automatic login, the user should 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 automathic 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 serverFrom: Benjamin Smith <bens@benjamindsmith.com> (edited for space):
I recently got openssh 2.9.2p1 up and running, along with the password-free login option. It took some doing and none of the howtos covered this. Would you like the "magic tidbit" that makes it all work? Here it is: "the default is to SSH2 and DSA keys, which you generate with 'ssh-keygen -d' and it goes into ~/.ssh/id_dsa.pub, which you would copy to remotehost:.ssh/authorized_keys2" Use this instead of the usual "authorized_keys" file given in the howtos, and VOILA! It actually works.
wget -m --no-parent 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.
The option "--no-parent" limits the retrieval to the files in the given
directory and its subdirectories.
minicom
Minicom program for serial port "terminal emulation". Looks and works
like "Procomm" or "Telix". It is useful for testing and debugging your
serial communication.
rx
Receive files using the Zmodem, Ymodem, or Xmodem protocol. Xmodem
requires a filename. Use rx --help for more info. Who uses these
protocols any more anyway?
"I use Zmodem regularly. I have two computers running (SuSE) Linux, a laptop and a desktop. The desktop computer does not have access to an internet connection. So, in order to get files I downloaded from one computer to the other, I send them over via a null-modem cable, using Minicom and the Zmodem protocol. This way I can even connect my laptop from work running Win2000 to my linux machine using Reflexion (a win32 terminal emulation prog)" (from Berry Vos, B.Vos@getronics.com, 2001 08 28).
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. This won't include
"dotfiles" (the files or directories with names starting with a dot) in
my tarball. To tar everything, I would do:
tar cvzf filename.tgz * .[a-zA-Z]*
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. Note the funny pronounciation of "gun zip".
zcat filename.gz | more
(=zip cat) Display the contents of a compressed file. Other
utilities for operating on compressed files without prior decomprssion
are also available: zless, zmore, zgrep, ...
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.
zip filename.zip filename1 filename2
Compress two files "filename1" and "filename2" to a zip archive called
"filename.zip".
unarj e filename.arj
Extract the content of an *.arj archive.
lha e filename.lha
Extract the content of an lharc 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.
ar -x my_archive.a file1 file2
(=archiver). Extract files file1 and file2 from
an archive called my_archive.a. The archiver utility ar
is mostly used for holding libraries.
ark &
(in X terminal). A GUI (Qt-based) archiver application. Perhaps that's
everything what you need to manage your compressed files. An alternative
is gnozip.
any_command &
Run any command in the background (the symbol "&" means "run
the preceding 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. I use "&" often when starting a GUI program
from an X-terminal.
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 exactly as if it had
been started with &. This will restart a stopped background process.
The 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
at>updatedb<Ctrl>d
Run any command (usually one that is going to take more time to complete)
when the system load is low. I can logout, and the process will
keep running. When the command completes, an email will be sent to me with
the output. In the example above, the "at>" represents a prompt, the
command to run is updatedb, and the <Ctrl><d>
terminates my input to batch (I could start many commands to run, separated
by <Enter>).
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. For example, killall pppd
will disconnect your dialup network.
nohup program_name
(=no hungup). Run program_name so that it does not
terminate when you log out. Output is redirected to the file nohup.out
in your home directory. You surely do not want to run an interactive
program under nohup.
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 first console
if I use lsof /dev/tty1 . To list only network files (useful
for a security audit), I would do lsof -i (as root).
watch -n 60 my_command
Execute my_command repeatedly at 60-second intervals
(the default interval is 2 seconds).
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 evoked 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 for your account. Use unalias alias_name to
remove an alias.
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.
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 .
linuxconf
(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 linuxconf, therefore it is simpler and sometimes
easier to use.
mouseconf
(as root). Simple tool to configure your mouse (after the initial
installation). Mandrake includes also an alternative mousedrake.
kudzu
(as root). Automatically determines and configures your hardware.
If having mysterious problems with your mouse (or other serial hardware),
you may want to disable kudzu, so it does not run on the system startup
(kudzu messed up my system so I could not have my mouse working). You can
run it manually when you need it.
timeconfig
(as root) Set the timezone for your system. My computer hardware
clock (BIOS setup) keeps time in UTC (Coordinated Universal Time, which
was once called GMT or the Greenwich Mean Time). This way, I avoid any
possible problems associated with switching timezones due to the daylight
savings time, transfering files across the globe through the network, or
a physical travel. It is customary to keep time on a server computers
in UTC to avoid time ever going "backwards" (which could cause problems).
Timestamps on files are always kept in UTC and displayed in the local time
using the time zone information. For example, many applications (e.g.,
compilers, databases) depend on being able to distinguish a newer file
from an older one by comparing their timestamps. It is important to keep
the timezone correct. The only reason why I could select to keep BIOS time
in the local time is to avoid problems when when dual booting from the same
computer, and when the other operating system (MS Windows?) does not know
how to handle UTC. Then, I let my Linux server know about this by checking
the box "Hardware clock set to GMT", so that Linux can backcalculate
the UTC which it needs.
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
dateconfig&
(in X-terminal, as root else you will be asked for the root password).
An excellent GUI utility to set my operating system and hardware clock
and timezone, and tell my BIOS to keep time in UTC. I don't need the previous
two commands.
xvidtune
(in X-terminal). Adjust the settings for your monitor 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. On newer monitors, you
may really prefer to adjust your monitor using the built-in monitor settings--xvidtune
is for older monitors which do not have the capability to remember their
settings.
kvideogen
(in X-terminal). Generate "modelines" for customized resolutions
of your screen. After you generated the setup text (the "modelines"),
you can copy-paste it to the X-windows setup file /etc/X11/XF86Config
(or /etc/X11/XF86Config-4 if you use X-server version 4.xx). See also
the keyboard shortcut <Ctrl><Alt><+>
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.
SuperProbe
(as root). A utility to determine the type of the video card and
the amount of its memory.
cat /var/log/XFree86.0.log
A log file for X that can be useful to determine what is wrong with
your X setup. The "0" in the filename stands for "display 0"--modify
the filename accordingly if you need log for displays "1", "2", etc.
lspci
Show info on your motherboard and what cards are inserted into the
pci extension slots. My older computer has ISA slots (or EISA) slots,
no pci.
lsdev
Display info about your hardware (DMA, IRQ, IO ports).
lsof|more
List files opened on your system.
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. Almost every possible
module/feature can be compiled on linux as either "hard wired" (perhaps
a bit faster, but non-removable), "module" (maybe a bit slower, but loaded/removable
on demand), or "no" (no support for this feature at all). The modules which
your kernel supports (with which it was compiled) are all as files under
the directory /lib/modules (and the subdirectories) so browsing
it may give you a clue if you are lost. If your kernel does not support
a module you require, you may need to re-compile your kernel with this module
enabled (this is rare because the "stock" RedHat or Mandrake Linux kernels
come with almost all common and non-experimental modules pre-compiled.
Still, if you have a bleeding edge hardware ... ).
modprobe sb
Load the soundblaster (sb) module. Use the previous command to find
other kernel modules there are to load.
insmod parport
insmod ppa
(as root) Insert modules into the kernel (a module is roughly an
equivalent of a DOS device driver). Normally, I use "modprobe" (see the
previous command) to insert modules. This example shows how to insert
the modules for support the external parallel-port 100-MB 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). For the 250-MB external zip, I use the imm
module instead of ppa.
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.
/sbin/chkconfig --level 123456 kudzu off
(as root)A tool to check/enable/disable system services which will
automatically start under different runlevels. Typically, I just use
RedHat ntsysv utility if I need to enable/disable a service
in the current runlevel, but chkconfig does give me an extra flexibility.
An alternative tool is tksysv (X-based). The example above
shows how to disable kudzu service so it does not start up at any runlevel
(it messes up mouse on one of my computers). To list all the services
started/stopped under all runlevels, I use:
chkconfig --list | more
To check the current status of services, I may use:
service --status-all
To start a service right now, I may use something like (starts an
ftp server):
service wu-ftpd start
To re-start samba networking (e.g., after I changed its configuration),
I may use:
service smb restart
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).
cd /usr/src/linux-2.4.7-10
make xconfig
(as root in X terminal). A nice GUI front-end for configuration
of the kernel options in preparation for compilation of your customized
kernel. (The directory name in the example contains the version of
my Linux kernel so you may need to modify the directory name if your Linux
kernel version is different than 2.4.7-10 used in this example. You
need the "Tk" interpreter to run "make xconfig", 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/share/doc/HOWTO/Kernel-HOWTO for more information.
After configurating the options for the new kernel with "make xconfig",
I may proceed with compilation of the new kernel by issuing the following
commands:
make clean (this is optional; it cleans the
old object files, may lengthen compilation, may prevent problems in some
situations)
make dep
make bzImage
The last command will take some time to complete (maybe 10 min or
2 h, depending on your hardware). It produces the file arch/386/boot/bzImage,
which is your new Linux kernel. Next:
make modules
make modules_install
Now you have the new modules installed in /lib/modules/KernelName.
Don't rename the module directory if you want to run multiple kernels--the kernel must be able to find its "matching" modules. If I want to change the kernel name, I have to edit the main kernel makefile (e.g., /usr/src/linux-2.2.14/Makefile) and change the lines right at the top. Mine (default RH7.2) are:Now I can install the new kernel. The installation involves copying the new kernel (while renaming it) into the /boot directory:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 7
EXTRAVERSION = -10custom
The kernel name for the currently running kernel can be displayed using uname -r . Mine (default RH7.2) is "2.4.7-10custom".
The configuration for my "original" RedHat kernel is in the file /boot/config-2.4.18-14 (RedHat 8.0), while some addtional "custom" kernel configurations are in the directory /usr/src/linux-x.x.x/configs. I can load any of those from a dialog box in available from "make xconfig".
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.
cfdisk /dev/hda
(as root) Hard drive partitioning utility, menu-based. Easier to
use then the plain-vanilla fdisk (see the previous command).
Physical drives can contain primary partitions (max 4 per disk), and
logical partitions (no restriction on number). A primary partition
can be bootable. Logical partitions must be contained within "extended
partitions"; extended partitions are not usable by themselves, they are
just a container for logical partitions. When partitioning a disk,
I typically: (1) create a primary partition (2) make the primary partition
bootable (3) create an extended partition, (4) create logical partition(s)
within the extended partition.
sfdisk -l -x |more
(as root) List the partition tables (including extended partitions)
for all drives on my system.
parted /dev/hda
A partition manipulation utility for Linux (ext2), and DOS (FAT and
FAT32) hard drive partition. It is for creation, destroying, moving, copying,
shrinking, and extending partitions. You should really like to
backup your data and carefully read info parted before using
it.
fdformat /dev/fd0H1440
mkfs -c -t ext2 /dev/fd0
(=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. I can also format floppies to different (also non-standard)
densities; try ls /dev/fd0<Tab> .I am also able to format
to the default density (normally 1440k) using fdformat /dev/fd0.
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. badblocks
can be also used to check the surface of a hard drive but I have to unmount
the filesystem first to do a full read-write check:
mount
[to find out which device contains the disk partition I wish to check
for bad blocks]
umount /dev/hda8 [unoumnt
the selected partition]
badblocks -n /dev/hda8 [check the selected partition in
a non-destructive read-write mode, so that my data is not erased!]
mount /dev/hda8 [mount
the partition back since no info on bad blocks was printed]
If bad blocks are found, they can be marked on the hard drive so
that will not be used using:
e2fsck -c /dev/hda8
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 unmount the partitions or 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.
tune2fs -j /dev/hda2
(as root, only for kernel that support ext3--RH7.2) Adjust the tuneable
parameter of an ext2 filesystem. The example above shows how to add a journal
to a disk partition (hda2 in this example), effectively converting the
file system to ext3 (journaling) filesystem. To complete the transition,
you must also edit the file /etc/fstab and change the filesystem
type from ext2 to ext3, else you may run into problems--ext2 will not
mount an uncleanly shut down journaled filesystem! To check what
is the type of the filesystem use mount (with no arguments) or
cat /etc/mtab. If you need more information on ext3 setup,
try: http://www.symonds.net/~rajesh/howto/ext3/ext3-5.html.
Other options of tune2fs let you me add a volume label, adjust the
number of mounts after which the filesystem check is performed (maximal
mount count), or turn on time-based filesystem checks instead (less
often used).
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".
mkbootdisk --device /dev/fd0 2.4.2-3
Make an emergency boot floppy. You are typically asked if you would
like to make a boot disk during the system installation. The above command
shows how to make it after install, on the first floppy drive (/dev/fd0).
Your kernel name (needed in the command, here 2.4.2-3) can be determined
either by running uname -a or ls /lib/modules .
ls -l /home/peter
useradd peter -u 503 -g 503
(as root). Create an account to match an existing directory
(perhaps from previous installation). If the user ID and the group
ID (shown for each file) were both 503, I create an account with a matching
user name, the user ID (UID) and the group ID (GID). This avoids the
mess with changing the ownership of user files after a system upgrade.
userdel user_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). There is also groupdel
to delete groups.
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", usinggroups
groupadd 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 permission:
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.
usermod
groupmod
(as root) Two command-line utilities to modify user accounts and
groups without manual editing of the files /etc/passwd /etc/shadow
/etc/group and /etc/gshadow. Normally non-essential.
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_name
(= "change age"). Set the password expiry to 100 days for the user
named login_name .
quota username
setquota username
quotaon /dev/hda
quotaoff /dev/hda
A set of commands to manage user disk quotas. Normally not used on
a home computer. "Disk quota" means per-user limits on the usage
of disk space. The commands (respectively) display the user quota, set
the user quota, turn the quota system on the for a given filesystem (/dev/hda
in the above example), turn the quota system off. "Typical" Linux
distros I have seen set on default: no limits for all users, and the quota
system is off on all filesystems.
kuser
(as root, in X terminal) Manage users and groups using a GUI.
Nice and probably covering most of what you may normally need to manage
user accounts.
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):Also try here for more info.
chmod a+r junk
This command will remove the permission to execute the file junk from others:
chmod o-x junk
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).
sudo /sbin/shutdown -h now
(as a regular user, I will be prompted for my user password) Run
the command "shutdown" (or another command which you have been given
permission to run by your system administrator). With sudo, the administrator
can give selected users the rights to run selected commands, without handing
out the root password. The file /etc/sudoers must be configured
to contain something like:
my_login_name my_host_computer_name = /sbin/shutdown
pwck
grpck
(as root, two commands). Verify the integrity of the password and
group files.
pwconv
grpconv
(as root) Unlikely you need these commands. They convert old-style
password and group files to create the more-secure "shadow" files.
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 ''
To find a particular package, try:
rpm -qa | grep -i the_string_to_find
(The option -i makes grep ignore the case of the characters, so upper
or lower case letters will match.)
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,
3 commands) 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).
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. No setup in /etc/fstab
is necessary because you supplied the command with all the information
required and you are a root. The type of the filesystem will be autodetected.
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.
mount /mnt/hda1 /mnt/dos_drive1
Mount a DOS (MS Windows) partition from your local hard drive.
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.
host host_to_find
nslookup host_to_find
dig ip_to_find
(Three commands, use any.) 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 your messages trace 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 setup works.
iptables -L
Linux kernel 2.4.x uses new firewalling "iptables". The above example
lists the firewall rules.
firewall-config
(as root, in Xterm). A GUI for building your custom firewall.
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).
/etc/rc.d/init.d/network restart
Restart the network using its normal initialization script (the same
which is used during bootup). Useful if you just have manually made changes
to your network configuration. Any other service listed in init.d
can be stopped, started, or restarted in a similar way (call the script
with an options stop, start or restart).
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 (and their ISPs)
don't like their computer ports being scanned (they view it as possbily
probing before an attack) so they may complain if they find out--learn
how to use nmap on your own computers else you will soon hear from your
ISP (the complaints will go to them). How do I know this?
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 in some situations, and unauthorized use
in the workplace could be a fireable offence.
tcpdump -i ppp0 -a -x
(as root) Print all the network traffic going through the first over-the-phone
interface (ppp0) as ascii and hexadecimal. Probably too much printout.
tcpdump is a rather raw tool and it can be useful for building
more "customized" tools for listening to/log what you need.
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 a parallel-port (external) 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. You may need to download and install it yourself (standard
Linux distributions avoid supplying it because of disagreement about patents
on the mp3 compression technique).
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.
grip&
(in X terminal) A GUI to ripping (see the previous command).
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 terminal) Sound mixer.
studio&
(in Xterminal) Sound Studio--edit sound files, add effects, etc.
Available on the on the PowerTools CD, RH7.x.
extace&
(in Xterminal) Sound visualization utility.
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" language interpreter), as in this example (bold
represents the prompt):
festival
festival>(SayText "good dog, really good dog")
festival> (quit)
xpdf my_file.pdf
(in X terminal) View a pdf file. For viewing pdf files, I prefer
the Adobe Acrobat Reader for Linux (it is faster):
acroread my_file.pdf
It can be downloaded from: http://www.adobe.com/products/acrobat/readstep2.html
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 simpler (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. You can
also type display & and select file from the menu to view
the image, rotate it , change its colour, apply certain effects, etc.
display is part of ImageMagick package, together with several other
utilities described below.
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.
convert -geometry 60x80 my_picture.gif out_small_picture.gif
Scale a picture to a size 60x80 pixels. See a few line down for an
example how to use convert to convert between different graphical file
formats.
animate -delay 6x5 pic1 pic2 pic3
Keep showing 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.
combine pic1 pic2 combined_pic.miff
Combine two or more images to another image. You can for example
put a logo on every image.
montage -geometry 800x600+0+0 my_picture montage.miff
Create a tiled image from my_picture so that the total size
is 800x600 pixels, with 0x0 border. The output goes to the file montage.miff.
zgv my_picture
Display a picture for viewing on a vga screen (no X necessary).
giftopnm my_file.giff > my_file.pnm
pnmtopng my_file.pnm > my_file.png
Convert the proprietary 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. Unde KDE, you can also
use the keyboard shortcuts <Alt><PrintScreen>
or <Ctrl><Alt><PrintScreen> to copy the current
window or the entire desktop into the clipboard.
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 giving it 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.
xine frankenstein.avi &
(in X terminal). Watch the movie from the file "frankenstein.avi".
Looks better than on a TV :))
kpat
(in X terminal) Patience card game. sol (fast) and
pysol (slow but loaded) are two other choices. My favourite
is: sol --variation=freecell&
xboing
(in X terminal). Very nice, pin-ball game.
xboard
(in X terminal) Chess. Plays too well for me :(
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