Under UNIX there are some widely used applications to archive and compress
files. tar is used to make archives---it's like PKZIP but it
doesn't compress, it only archives. To make a new archive:
$ tar -cvf <archive_name.tar> <file> [file...]
To extract files from an archive:
$ tar -xpvf <archive_name.tar> [file...]
To list the contents of an archive:
$ tar -tf <archive_name.tar> | less
You can compress files using compress, which is obsolete and shouldn't
be used any more, or gzip:
$ compress <file>
$ gzip <file>
that creates a compressed file with extension .Z (compress) or .gz
(gzip). These programs can compress only one file at a time. To
decompress, use:
$ compress -d <file.Z>
$ gzip -d <file.gz>
RMP.
The unarj, zip and unzip (PK??ZIP compatible) utilities are
also available. Files with extension .tar.gz or .tgz (archived
with tar, then compressed with gzip) are as common in the UNIX
world as .ZIP files are under DOS. Here's how to list the contents of a
.tar.gz archive:
$ gzip -dc <file.tar.gz> | tar tf - | less
or, equivalently,
$ tar -ztf <file.tar.gz> | less
First of all: installing packages is root's work. Some Linux applications
are distributed as .tar.gz or .tgz archives, specifically prepared
so that they can be decompressed from / typing the following command:
# gzip -dc <file.tar.gz> | tar xvf -
or, equivalently,
$ tar -zxf <file.tar.gz>
The files will be decompressed in the right directory, which will be created
on the fly. Users of the Slackware distribution have a user-friendly
pkgtool program; another is rpm, which is available on all
distributions thanks to Red Hat.
Most programs shouldn't be installed from /; typically, the archive will
contain a directory called pkgname/ and a lot of files and/or
subdirectories under pkgname/. A good rule is to install those
packages from /usr/local. Besides, some programs are distributed as
C or C++ source files, which you'll have to compile to create the binaries.
In most cases, all you have to do is issue make. Obviously, you'll need
the gcc or g++ compiler.
Command completion: pressing <TAB> when issuing a command will
complete the command line for you. Example: you have to type gcc
this_is_a_long_name.c; typing gcc thi<TAB> will
suffice. (If you have other files that start with the same characters,
supply enough characters to resolve any ambiguity.)
Backscrolling: pressing SHIFT + PAG UP (the grey key) allows you to backscroll a few pages, depending on how much video memory you have.
Resetting the screen: if you happen to more or cat a binary
file, your screen may end up full of garbage. To fix things, blind type
reset or this sequence of characters: echo CTRL-V ESC c RETURN.
Pasting text: in console, see below; in X, click and drag to select the
text in an xterm window, then click the middle button (or the two
buttons together if you have a two-button mouse) to paste. There is also
xclipboard (alas, only for text); don't get confused by its very slow
response.
Using the mouse: install gpm, a mouse driver for the console.
Click and drag to select text, then right click to paste the selected text.
It works across different VCs.
Messages from the kernel: have a look at /var/adm/messages or
/var/log/messages as root to see what the kernel has to tell you,
including bootup messages. The command dmesg is also handy.
This list reflects my personal preferences and needs, of course. First of
all, where to find them. Since you all know how to surf the Net and how to
use archie and ftp, I'll just give you three of the most important
addresses for Linux:
ftp://sunsite.unc.edu,
ftp://tsx-11.mit.edu, and
ftp://nic.funet.fi. Please use your nearest mirror.
at allows you to run programs at a specified time;
awk is a simple yet powerful language to manipulate data files
(and not only). For example, being data.dat your multi field data file,
$ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat
prints out fields 1 and 4 of every line in data.dat whose second field
contains ``abc''.
cron is useful to perform tasks periodically, at specified date
and time;
delete-undelete do what their name means;
df gives you info about all mounted disk(s);
dosemu allows you to run several (not all) DOS
programs---including Windows 3.x, with a bit of hacking;
file <filename> tells you what filename is
(ASCII text, executable, archive, etc.);
find (see also Section
dir) is one of the
most powerful and useful commands. It's used to find files that match
several characteristics and perform actions on them. General use of
find is:
$ find <directory> <expression>
where <expression> includes search criteria and actions. Examples:
$ find . -type l -exec ls -l {} \;
finds all the files that are symbolic links and shows what they point to.
$ find / -name "*.old" -ok rm {} \;
finds all the files matching the pattern and deletes them, asking for your
permission first.
$ find . -perm +111
finds all the files whose permissions match 111 (executable).
$ find . -user root
finds all the files that belong to root. Lots of possibilities here---RMP.
gnuplot is a brilliant program for scientific plotting;
grep finds text patterns in files. For example,
$ grep -l "geology" *.tex
lists the files *.tex that contain the word ``geology''. The variant
zgrep works on gzipped files. RMP;
tcx compresses executable binaries keeping them executable;
joe is an excellent editor. Invoking it by typing jstar
you'll get the same key bindings as WordStar and its offspring, including
DOS and Borland's Turbo languages editors;
less is probably the best text browser, and if properly
configured lets you browse gzipped, tarred, and zipped files as well;
lpr <file> prints a file in background. To check the
status of the printing queue, use lpq; to remove a file from the
printing queue, use lprm;
mc is a great file manager;
pine is a nice e-mailing program;
script <script_file> copies to script_file what
appears on screen until you issue the command exit. Useful for
debugging;
sudo allows users to perform some of root's tasks (e.g.
formatting and mounting disks; RMP);
uname -a gives you info about your system;
zcat and zless are useful for viewing gzipped text files
without ungzipping them. Possible use:
$ zless textfile.gz
$ zcat textfile.gz | lpr
bc, cal, chsh, cmp,
cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac,
tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew. RMP.
You may come across scores of file extensions. Excluding the more exotic ones (i.e. fonts, etc.), here's a list of who's what:
1 ... 8: man pages. Get man.
arj: archive made with arj. unarj to unpack.
dvi: output file produced by TeX (see below). xdvi to
visualise it; dvips to turn it into a PostScript .ps file.
gif: graphic file. Get seejpeg or xpaint.
gz: archive made with gzip.
info: info file (sort of alternative to man pages). Get
info.
jpg, jpeg: graphic file. Get seejpeg.
lsm: Linux Software Map file. It's a plain ASCII file containing
the description of a package.
ps: PostScript file. To visualise or print it get gs and,
optionally, ghostview.
rpm: Red Hat package. You can install it on any system using the
package manager rpm.
tgz, tar.gz: archive made with tar and compressed with
gzip.
tex: text file to submit to TeX, a powerful typesetting program.
Get the package tex, available in many distributions; but beware of
NTeX, which has corrupted fonts and is included in some Slackware versions.
texi: texinfo file, can produce both TeX and info files (cp.
info). Get texinfo.
xbm, xpm, xwd: graphic file. Get xpaint.
Z: archive made with compress.
zip: archive made with zip. Get zip and unzip.