Linux Gazette... making Linux just a little more fun!

Copyright © 1996 Specialized Systems Consultants, Inc. linux@ssc.com


Welcome to Linux Gazette!(tm)

Linux Gazette, a member of the Linux Documentation Project, is an on-line WWW publication that is dedicated to two simple ideas:

The basic idea behind these two concepts is that Linux is one cool OS, whose price for admission is a willingness to read, learn, tinker (aka, hack!), and then share your experiences. The Gazette is a compilation of basic tips, tricks, suggestions, ideas and short articles about Linux designed to make using Linux fun and easy. LG began as a personal project of John M. Fisk, and grew to include contributions freely provided by a growing number of authors. Linux Journal is now publishing the Gazette using material contributed by outside authors (note to potential authors). Without these authors there would not be a Gazette, and I thank them all. Drop a note to the author of anything that you find helpful or instructive--the author's e-mail address is included for this very purpose.

Linux Gazette is a non-commercial publication and will remain that way. A tar, gzip file containing all issues of Linux Gazette and one containing the current issue can be found at ftp://ftp.ssc.com/pub/lg/

Thanks to Matt Welsh, coordinator of the Linux Documentation Project, for graciously bringing the Linux Gazette under the auspices of the LDP. The material included in these documents is covered by a designedly liberal copyright: as long as you are using the material for non-commercial purposes, you may do with them as you please. For information regarding copying and distribution of this material read the Copying License.

A new table of contents will appear with each issue that will allow you to easily find articles of interest. A search engine is also provided to allow you to search all issues for items relating to a particular subject.

Have fun!



Search In:
Search For:


Click here for Linux Journal's latest Hot Linux News!


Linux Gazette WWW & FTP Mirror Sites

For those readers who are accessing Linux Gazette from outside the U.S. or are having problems with slow connections at a particular site, mirror sites are available worldwide. Thanks to all of the people who have kindly offered the use of their WWW and FTP sites in order to make this possible!


Got any great ideas for improvements! Send your comments, criticisms, suggestions and ideas.


Linux Gazette is published by:

 SSC - Publishers of Linux Journal(tm)


Linux Gazette, http://www.ssc.com/lg/
This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com


Linux Gazette

Copyright © 1996 Specialized Systems Consultants, Inc.
For information regarding copying and distribution of this material see the Copying License.


Table of Contents Issue #11



TWDT 1 (text)
TWDT 2 (HTML)
are files containing the entire issue: one in text format, one in HTML. They are provided strictly as a way to save the contents as one file for later printing in the format of your choice; there is no guarantee of working links in the HTML version.


Got any great ideas for improvements! Send your comments, criticisms, suggestions and ideas.


This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com

"Linux Gazette...making Linux just a little less scary!"


 The Mailbag!

Write the Gazette at gazette@ssc.com


 Date: Sun, 29 Sep 1996 01:46:02 -0700
Subject: MPEG
From: Tristan RAMBO Savatier tristan@mpeg.org

FYI: Linux now has a fast MPEG software player !

Check MpegTV at http://www.mpegtv.com/

--Tristan


 Date: Mon, 30 Sep 1996
Subject: Help?? Firewalling under 2.0.X
From: jwells@nwlink.com (James E. Wells)

Greetings,

I know this message should normally be sent to one of the linux newsgroups, however I felt this to be a bit more efficient. Basically the problem is that I can't seem to get IP Masquerading going under 2.X. I have enabled firewalling / masquerading and disabled forwarding / bridging. When I look at /proc/net I have two alias files which have to do with the IP Aliasing, and I have IP Accounting, Forwarding, Input, and Output, however I have no Masquerading. I have rebuilt the kernel a number of times to no avail. I have toyed with ipfwadm a number of times and found that it works fine for all forms of firewalling except for Masquerading. Any help from you or the readers of this, the best electronic mag on the net, would be greatly appreciated.

  ================================     ===============================
//                                \\ //                               \\
|| James E. Wells                  | |                                ||
|| mailto:nikatjef@nwlink.com      | |   Junior System Administrator  ||
|| mailto:james@LaserDyn.com       | |         Northwest Link         ||
\\                                // \\                               //
  ================================     ===============================
(Okay, all you firewall experts out there, who's got a good answer for this one? --Editor)


 Date: Wed, 02 Oct 1996 14:45:06 -0400
Subject: Wow! Support for Win 1.3 :)
From: Eric Wright majestik@netcom.ca

In issue #10, Product Announcements

V Multi-Platform GUI Version 1.13 of V for X, Windows 1.3, and WIN32 (NT, Windows95) was released on September 9, 1996. It is....
Windows 1.3, eh? heheh

Ps: great job with LG, keep it up ...

(Oops, didn't read that one close enough, I guess. I'd say that was a definite typo, and it would have been nice to have mentioned Linux more directly. This product does work for Linux--there is an article by Dr. Wampler about it in the upcoming December issue of Linux Journal. Anyway I've changed it to take out all Windows references. Sorry about that. --Editor)


 Date: Thu, 03 Oct 1996 10:35:38 +0000
Subject: #10
From: "Adam D. Moss" adam@uunet.pipex.com

Thanks for another Linux Gazette issue!

--Adam

 
          Adam D. Moss / Consulting / adam@uunet.pipex.com
====-==-=-=--=--=---=---=-------- ---- --- -- -- -- - - - -  -  -  -
  UUNET PIPEX / 332 Science Park / Milton Road / Cambridge CB4 4BZ
   / England / Voice +44 (0)1223 250100 / Fax +44 (0)1223 250101
-  -  -  - - - - -- -- -- --- ---- --------=---=---=--=--=-=-==-====
(Short and sweet. Thank you for reading LG. --Editor)


 Date: Thu, 03 Oct 1996 15:12:16 +0800
Subject: Postscript Format Request
From: Phil Lewis lewispj@eeye.com.sg

Could you please provide the lg in postscript format please so that it will be possible to easily read it in hard copy format - It will get a wider readership and reduce unnecessary multiple www downloads each time within our organization.

Thanks, Phil Lewis
Electric Eye
Singapore

(Due to popular request, I have added one big text file to the list of options in the Table of Contents called "TWDT 1". Also. thanks to one of our readers (see next letter) there is also an HTML file called "TWDT 2". For now that's the best I can do for you--postscript and other formats will have to wait. --Editor)


 Date: Thu, 03 Oct 1996 12:56:52 -0500
Subject: New Set Up of LG
From: Tushar Teredesai Tushar@Agents.ECE.IIT.Edu

Hi,

I miss the old set up of LG whereby I could download the whole of the LG which was contained in a single page. Even issue 9 had and alternative comprising the whole LG in a single page. Hope U provide such a complete page again. Though there is text version of the entire thing, I would prefer a html version.

Maybe I could do that combining to a single .html and .txt if U tell me how (i.e. the rules for formatting.)

BTW, great job. Very useful for guys like me who are new entrants to administration of their own systems after being dependent on others to do the dirty job.

Thanx.
--Tushar

 
-->> http://Tushar.Home.ML.Org
-->> mailto:Tushar@Agents.ECE.IIT.Edu
Running ....... Cos anything else would be a waste...
        `:::'                  .......  ......
         :::  *                  `::.    ::'
         ::: .::  .:.::.  .:: .::  `::. :'
         :::  ::   ::  ::  ::  ::    :::.
         ::: .::. .::  ::.  `::::. .:'  ::.
        .:::.....................::'   .::::..
(What a wonderful idea! Neither Michael, the webmaster, nor I have time to combine LG each month, and we were thinking of putting out requests for someone to do it for us. And here's a volunteer! So we now have "TWDT 2" in HTML format for issue 9 thanks to Michael, and for issue 10 thanks to Tushar. What great guys! --Editor)


 Date: Wed, 02 Oct 1996 23:00:22 -0400
Subject: Linux version of aprs
From: bill pemberton wapembe@gallows.smart.net

in the current (issue 10) of the Linux Gazette you mentioned that a Linux version of aprs was available. can you provide further ref? i searched the ham links on the net but could find no reference to the Linux version. thanks for the assist.
--
wapembe@smart.net "actual meaningless quote to be inserted soon!"

(Sorry, I personally cannot. You might try writing Steve Stroh (strohs@halcyon.com), who sent us the TAPR Position Statement that appears elsewhere in this issue. --Editor)


 Date: 05 Oct 1996 23:42:02 +0200
Subject: mailing list
From: Markus Gutschke gutschk@uni-muenster.de

Have you considered to set up a mailing list that distributes copies of Linux Gazette? For me, it is very cumbersome to actively look for new versions of files and to download them from the net; sending/receiving e-mail/news is fine though, because this can be automated and I do it in batch-mode every night.

Markus

(Yes, this has been requested before, and is on the list of things to possibly do in the future. However, setting up and maintaining a mailing list is not something I have time for in the foreseeable future. Since I plan to have a new issue up on the first of each month, you only have to look for changes once a month. That shouldn't be too cumbersome.--Editor)


 Date: Sat, 12 Oct 1996 14:17:49 -0400
Subject: William R. Della Croce, Jr.
From: "rikk@dragonstar.net" rikk@dragonstar.net

Greetings,

In reference to your article on whether or not Linux is a registered trademark or not...

First off allow me to say "This guy is the lowest in the scum chain." There is commercialization, and there is gluttony. Seems to me this person is trying to take over the Linux name to better his pockets. I wish you had printed his e-mail address, and let him get a feel for the anger and disgust...

At any rate, keep up the good work!

TTFN....Rikk
rikk@dragonstar.net

 
+------------------------------------------------------------------------+
|
| Life on the edge, dragonstar.net                                      
|
|           Friends don't let friends do DOS!                           
|
| Running Linux 2.x  Intel x86                                          
|
+------------------------------------------------------------------------+
(Yes, well, while we agree with your sentiments, printing his e-mail address would probably not have been productive. Lawyers are working on this situation, and we keep hearing that we will be getting an announcement any day now. Maybe this week, something will break. It will be on the "Linux Hot News" button as soon as it does. Thanks for writing. --Editor)


 Date: Thu, 17 Oct 1996 14:55:31 -0400
Subject: pointer trouble
From: Bill Semler wsemler@epix.net

Hi -

Just wanted to let you know that the URL ftp://ftp.ssc.com/pub/lg pointed to in, roughly, the middle of the front page actually points to ftp.ssc.com/lg which will display the directory structure but things cannot be accessed. Not a real big deal, but... Thanks for everything.

--
Bill Semler, N3RLR
wsemler@epix.net

(Thanks for letting me know. I've got it fixed now. Don't know why, but leaving out the /pub happens to me often when I type that address. Think it must be time to set up an abbreviation for it, so vi can take care of it for me. --Editor)


 Date: Fri, 18 Oct 1996 16:05:00 -0700
Subject: Linux Gazette versions
From: paulc@sunsite.unc.edu

I noticed a few people recently wanting to take versions of the Linux Gazette home with them or trying to convert them to run on MS-Win systems, well there is a program on the Amiga which fetches pages from the web and changes links over in the process to either an absolute or relative path - great for the gazette. Well, I'm in the process of converting this program to Linux, and would be happy to supply you with the compilable source code so that you can then place the file generated by this program on one of the pages for download (after gzipping it maybe)

Squiz.

(Thanks for thinking of me. This does sound like easy method, and an easier method is always a better method. Send it on when it's ready. --Editor)


 Date: Tue, 22 Oct 1996 14:17:57 -0700
Subject: Xwindows depth
From: James Amendolagine uq274@freenet.victoria.bc.ca

Hello,

I have recently been messing with my x-server, and have managed to get a depth of 16, ie 2^16 colors. This works really nice with netscape, but some programs (doom, abuse, and other games) wont work with this many colors. Do you know of a fix? I have tried to get X to support multiple depths--to no avail. The man-page suggests that some video cards support multiple depths and some don't. How do I know if mine does.

I would really like to see an article on this subject,

Thanks,
Jamie

(Okay, guys here's another request for help with a good idea for an article. All you authors out there looking for a subject, start writing. --Editor)


 Date: Wed, 23 Oct 1996 12:54:11 -0500 (CDT)
Subject: have you seen latest replacement for X?
From: jim fetters gfetters@uxa.ecn.bgu.edu

well, sort of. please check this out.

http://veda.synet.net/numan/berlin

-jim


 Date: Thu, 24 Oct 1996 08:10:41 +0200
Subject: could not login to ftp server
From: Hermann Boeken hboeken@de.lucent.com

Hi.

In the mailbag of LG 10 you write:

> (No problem. tar files are available, I've just been having technical
> difficulties -- they were unreadable. At any rate John Fisk sent us new
> files that are now up at ftp://ftp.ssc.com/pub/lg/. Also, our issue 10 file,
> lg_issue10.tar.gzp and all issues (1-10) file, LinuxGazette_oct96.tar.gzp
> are located at that site. --Editor)

But it is (still?) not possible to login to the ftp server.

Hermann

 
--
                                              ...       
                                           ':'...''.    
                                         '::.''''':;:   
.-Hermann Boeken--Fon:+49-911-5266186---'::;-------;;:--.
|                 Fax:+49-911-5266299   :::,,       :;; |
|                                       ;:;'        ;:; |
|                   Lucent Technologies  ;;:       .;:  |
|                 Bell labs Innovations   :;:,   ,:;:   |
| OEPT                                     ':;;;:;:'    |
| System Integration & Test                             |
|                                                       |
`-hboeken@lucent.com----------na426@fim.uni-erlangen.de-'
(Hmmm, it's been working for some time. The mirror sites have all downloaded files from the ftp server with no problem. I guess I need to know more about the type of problem you are having -- what kind of messages you get, etc.? If you are using a web browser--which one and what version? I have tried to write you directly several times, but all mail comes back marked "Host unknown". --Editor)


 Date: Tue, 15 Oct 1996 17:10:52 +0100
Subject: Mirroring of Linux Gazette
From: Massimo Orlando massimo@asterix.unime.it

Hi,
I am a student of Computer Science at University of Messina and I am the system administrator of the Server of the Department. I have written the form to become a mirror of the Linux Gazette but I have a question for you:

Must I download the compress file (LinuxGazette_xxx.tar.gz) or is it automatic?

P.S.: sorry for my english

Thank you for your future answer.
bye
Massimo Orlando

(Massimo, I seem to be having trouble getting mail to you--it keeps coming back with unrecoverable errors. There is a README.mirrors file on the ftp site, ftp://ftp.ssc.com/pub/lg/ with instructions. It is definitely not automatic. The University's site is very cool, and I will be happy for you to mirror LG. I will need an exact address though (for both the mirror and you); it was not obvious to me how to find LG just by looking at the University's main web page. Please write again. --Editor)


 Date: Wed, 23 Oct 1996 14:53:13 -0500
Subject: http://cenotaph.generec.nl/lg/issue10/index.html
From: teun@cyclone.generec.nl

(Nice and short and full of information. Only two problems: I can't find this page (Netscape returns "No DNS entry"), and mail to this address is returned "host unknown". Please write again. --Editor)


[ TABLE OF 
CONTENTS ] [ FRONT 
PAGE ]  Next

This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
Copyright © 1996 Specialized Systems Consultants, Inc.


"Linux Gazette...making Linux just a little less scary! "


More 2¢ Tips!


Send Linux Tips and Tricks to gazette@ssc.com.


Contents:


Another XTerm Titlebar Trick

Date: Wed, 2 Oct 1996 16:11:35 -0700 (PDT)
From: Jonathan Gross

I have a quick stupid shell script to change the titlebar on the fly:

 
#!/bin/bash
echo "]0;$1"
where the ^[ is done in Emacs by typing C-q Esc and the ^G is done by typing C-q C-g, or in vi by typing C-v instead of C-q before each control sequence.

Then you type:

 
linux$ titlebar "string for window title"
Where "titlebar" is the name of your shell script. Dumb, simple, but easy to use...
 
Jonathan Gross
Specialized Systems Consultants, 206-782-7733
"A jewel mine of courtesies and a living casket of diplomacy"


File Decompressing

Date: Fri, 27 Sep 1996 08:32:37 +0200 (MET DST)
From: Xabier Vazquez Gallardo, sixconse@sc.ehu.es

Hi there:

Here is a script I wrote two years ago, but I think it can be useful for everybody. It can also help in learning shell script programming.

The function of this script is to help ppl decompressing compressed files with tar, gzip, compress, arj, zip, etc, and any combination of these compression tools. Just type "gus filename" and the script will call the necessary decompression program.

Thanx in advance,
Xabier Vazquez Gallardo

 
------------ 8< --------- 8< ---------- 8< ----------- 8< ------------
#!/bin/sh
# If you are under ULTRIX use /bin/sh5 instead of /bin/sh (too buggy)
################################################################################
# @(#)gus,v 2.8 11/22/1994 (c) XaBier Vazquez Gallardo 
# You'll need this external programs:
# gzip, tar, sed, awk, unarj, lha, zoo, unzip, test, pgp, uncompress, echo and
# uudecode. If you don't have all those programs maybe gus won't work.
#
# Program Description:
# Decompress all this kind of files and combinations of them:
# .arc .zip .ZIP .arj .zoo .lzh .lha .lzh .Z .z .tar .tgz .shar .pgp 
# .[1-8ln] .man .uu and .uue
# * Man type files will be displayed
#
# Please send suggestions or gub reports to XaBi 
# Sorry about my English, but it's better than Spanish, isn't it?
################################################################################
gus_version="V2.8"
gus_date="11/22/1994"

# Show a long help :)
do_help ()
{
 echo
 echo This script helps you decompressing Unix archives compressed with compress,
 echo gzip, tar, shar, lha, arj, zip, zoo, pgp, arc and uuencode. It also formats
 echo manual pages. Now you don\'t need to type all those long lines to decompress
 echo a tar + gz archive, only type \'gus file\' and it will do all the work.
 echo "GUS knows this extensions and combinations of them (tar + gzip, etc):"
 echo ".Z .z .zip .arj .zoo .arc .lha .lz .pgp .tar .tgz .shar .[1-8ln] .man .uu .uue"
 echo
 echo "USAGE: '`basename $0` [-h | [[-r | -rf] f1 [f2] ...]' will decompress f1, f2, ..."
 echo "       '-h'  show you this help"
 echo "       '-r'  remove with prompt compressed file after decompress it" 
 echo "       '-rf' remove without prompt compressed file after decompress it"
 echo "ie:    '`basename $0` file1 -rf file2 file3' will do this:"
 echo "        decompress file[123] and remove file[23] without any ask"
 echo "       *WARNING* Be careful with option '-rf'"
 exit 0
}

# Find a file in your path
# input : "filename"
# output: $filresult=full_path/filename || $filename="" + error message
# ie    : findfile zip
findfile ()
{
 sifs=$IFS
 IFS=:
 fileresult=""
 for dir in $PATH; do
   test -z "$dir" && dir=.
   if [ -x $dir/$1 ] ; then
      fileresult="$dir/$1"
      break
   fi
 done
 IFS=$sifs
 test -z "$fileresult" && echo ERROR: Can\'t find $1
}

# Change status variables
# input: " | decompress_command_line" \
#        " decompress_program_name +" \
#        1 (if gus must create a decompressed file) || 0 (if not) \
#        1 (if decompress program can pipe it result) || 0 (if not) \
#        1 (if decompress program accepts stdin pipes) || 0 (if not)
# output: none
# ie    : changevars " | tar xvfo -" " tar +" 0 1 1
changevars ()
{
 command=$command$1
 message=$message$2
 create=$3
 exit_f=$4
 do_cat=$5
}

# Ask Y/N before remove a file
# input  : "filename"
# output : $removeit = 0 (if answer is no) || 1 (if is yes)
# ie     : makeask /usr/local/foo.bar.tar
makeask ()
{
 exit_ask=0
 while [ $exit_ask = 0 ] ; do
   echo "Do you want to remove '$1' [Y/N]? \c"
   read yesno
   case $yesno in
     y* | Y*)
       removeit=1
       exit_ask=1
     ;;
     n* | N*)
       removeit=0
       exit_ask=1
     ;;
   esac
 done
}

# Check program parameters and count files
# input  : "command_line_params"
# output : $total_files=num_of_files_to_process || or help_screen
# ie     : check_params -rf foo.tar
check_params ()
{
 for i in $*
 do
   case $i in
     -rf | -r) 
       total_files=`expr $total_files - 1`
     ;;
     -h)
       do_help
     ;;
   esac
 done
}

echo GUS $gus_version [$gus_date] General Unpack Shell for Un*x \(c\) XaBi 

total_files=$#

check_params $*

if [ $total_files = 0 ] ; then
   echo ERROR: not enough params
   echo "TRY  : `basename $0` -h"
   exit 1
fi

if [ $total_files = 1 ] ; then
   echo [ $total_files ] file to process ...
else
   echo [ $total_files ] files to process ...
fi

removefile=0
promptbefore=0

for file_tmp in $*
do
  case $file_tmp in
       -rf)
          removefile=1
          promptbefore=0
          continue
        ;;
       -r)
          removefile=1
          promptbefore=1
          continue
        ;;
  esac
  if test -f $file_tmp ; then
     exit_f=0
     command=""
     message=""
     do_cat=1
     create=1
     file=`basename $file_tmp`
     while [ $exit_f -eq 0 ] ; do
       old_file=$file
       extension=`echo $file | sed -e 's/.*\.//'`
       if [ "$extension" = "$file" ] ; then
          extension=""
       else
          file=`echo $file | sed -e s/\.$extension$//`
       fi
       case $extension in
         tar)
           changevars " | tar xvfo -" " tar +" 0 1 1
         ;;
         Z)
           changevars " | uncompress" " compress +" 1 0 1
         ;;
         z | gz)
           changevars " | gzip -d" " gzip +" 1 0 1
         ;;
         tgz)
           changevars " | gzip -d | tar xvfo -" " tar + gzip +" 0 1 1
         ;;
         uu | uue)
           changevars " | uudecode" " uuencode +" 0 1 1
         ;;
         shar)
           changevars " | sh" " shar +" 0 1 1
         ;;
         zip | ZIP)
           if [ -z "$command" ] ; then
              findfile unzip
              test ! -z "$fileresult" && changevars $fileresult " zip +" 0 1 0
           else
              echo ERROR: Can\'t pipe to unzip. File partialy decompressed.
           fi
           exit_f=1
         ;;
         arj | ARJ)
           if [ -z "$command" ] ; then
              findfile unarj
              test ! -z "$fileresult" && changevars $fileresult" x" " arj +" 0 1 0
           else
              echo ERROR: Can\'t pipe to unarj. File partialy decompressed.
           fi
           exit_f=1
         ;;
         arc | ARC)
           if [ -z "$command" ] ; then
              findfile arc
              test ! -z "$fileresult" && changevars $fileresult" x" " arc +" 0 1
 0
           else
              echo ERROR: Can\'t pipe to arc. File partialy decompressed.
           fi
           exit_f=1
         ;;
         zoo | ZOO)
           if [ -z "$command" ] ; then
              findfile zoo
              test ! -z "$fileresult" && changevars $fileresult" x" " zoo +" 0 1 0
           else
              echo ERROR: Can\'t pipe to zoo. File partialy decompressed.
           fi
           exit_f=1
         ;;
         lzh | lha | lz | LZH | LHZ | LZ)
           findfile lha
           test ! -z "$fileresult" && changevars " | "$fileresult" x -" " lha +" 0 1 1
           exit_f=1
         ;;
         pgp)
           findfile pgp
           if [ ! -z "$fileresult" ] ; then
              changevars " | "$fileresult " pgp +" 0 0 1
           else
              exit_f=1
           fi
         ;;
         [1-8nl] | man)
           test -z "$command" && changevars " | nroff -man | more" " man +" 0 1 1
           exit_f=1
         ;;
         *)
           exit_f=1
         ;;
       esac
     done
     test $create -eq 1 && command=$command" > "$old_file
     if [ -z "$message" ] ; then 
         echo ERROR: Don\'t know how to handle [ $file_tmp ]
     else
         message=`echo $message | sed -e 's/ +$//'`
         echo "File [ `basename $file_tmp` ]"
         echo "Type [ $message ]"
         if [ $do_cat = 1 ] ; then
            command="cat "$file_tmp" "$command
         else
            command=$command" "$file_tmp
         fi
         eval $command && {
           if [ $removefile = 1 ] ; then
              if [ $promptbefore = 1 ] ; then
                 makeask $file_tmp
                 test $removeit -eq 1 && rm -f $file_tmp
              else
                 rm -f $file_tmp
              fi
           fi
         } || echo ERROR: [ $file_tmp ] can\'t decompress ...
     fi
  else
     echo ERROR: [ $file_tmp ] Can\'t process it! Exists????
  fi
done


Quick Tips from John

Date: Tue, 08 Oct 1996 08:18:39 -0500 (CDT)
From: John M. Fisk fiskjm@ctrvax.Vanderbilt.Edu

I recently ran across a "Quick Tip" that might be useful to anyone using the BASH shell. There's a rarely mentioned but very useful feature that's included with it: an online help function that describes all of its built-in functions. To use it you simply invoke it as:

 
	% help <builtin>
and it displays a brief usage message. To get a listing of all of the topics that are available, simply type in:
 
	% help
This displays a listing of all of BASH's builtin functions. So, for example, if you were interesting in using the "getopts" builtin in order to parse command line options for a shell script, you'd invoke the help function as:
 
	% help getopts
which prints a helpful summary of the function and its invocation.

The other thing I recently ran across was the use of the "$()" construct in BASH shell programming. When I first started learning shell programming the construct which I'd seen used for command substitution was something like:

 
	DATE=`date + "%A %B %C"`
which assigned the output of the date command to the variable DATE. I recently read that this has been deprecated and the accepted construct now for command substitution is the use of the dollar sign and parentheses. The above statement should now be written as:
 
	DATE=$(date + "%A %B %C")
which has the same effect. This works under both BASH and the Korn shell (I'm not sure if this also works with C-shell derivatives).
____________________________________________________________John M. Fisk


Two Tips for the Price of One

Date: Fri, 4 Oct 1996 18:28:05 -0500 (CDT)
From: David Ishee ishee@erc.msstate.edu

Just looking at your $0.02 tips and I had some $0.01 tips to add. I liked the perl trick for removing Control-M characters so I made it an alias in my .cshrc file (for the tcsh shell):

 
alias tu "perl -pi.bak -e 's/\r//g;' \!^"
Now type "tu filelist" to run the above command. (tu stands for to Unix)

Another $0.01 tip:

When I used the xterm title bar thingy and I was at a VT, the escape characters would just cause the Linux terminal to beep at me. I now have this in my .cshrc (for the tcsh shell):

 
if ($TERM == "xterm") then
  alias precmd 'echo -n "\033]2;"`whoami`":"`pwd`"\007"'
endif     
This puts my login_name:directory in my title bar, but not when I go to a Linux VT.
 
+--------------------------------------------------------------------+
| David Ishee                             ishee@erc.msstate.edu      |
| Mechanical Engineering Senior                                      |
| Mississippi State University             OS/2 and Linux user       |
+------------- http://www2.msstate.edu/~dmi1/index.html -------------+


The Ultimate Emacs Control M Trick

Date: Thu, 3 Oct 1996 10:19:24 -0700
From: Rick Bronson rick@efn.org

Hi,

Here is the ultimate Emacs Control M Trick:

Put the following line in your .emacs file:

 
(require 'dos-mode)
and have dos-mode.el, which for me is in ~/lisp/dos-mode.el, some where in your path by putting the following line in your .emacs file:
 
(setq load-path (append load-path (list "/home/rick/lisp")))
That's it! Now you can edit native DOS files without having to do any conversion at all. You won't see any ^M stuff in the DOS files, they are removed for you. You can cut and paste between DOS and UNIX buffers and the ^M stuff is handled automatically.

dos-mode.el is available in /ftp@archive.cis.ohio-state.edu:/pub/gnu/emacs/elisp-archive/modes as dos-mode.el.Z

                                                                       _
                                                                      | |
                                                                      / /__
.------------------------------------------------------------._______/ (___)
| Rick Bronson   rick@efn.org   Tel 541-465-9008      _o_    |         (___)
| Invivo Research       http://www.efn.org/~rick      \|/    |_______  (___)
| 745 Foothill Drive       "Onde esta dinheiro?"     `---'   |       \_(___)
| Eugene, OR  97405-4651    -- Gal Costa          Disk | Golf|
`------------------------------------------------------------'


VI Trick

Date: Sat, 26 Oct 1996 05:11:34 -0500
From: John R. Potter jrpotter@neosoft.com

I thought you might be interested in my favorite vi trick, which is not a vi trick at all. I spend a lot of time in vi edit sessions, usually with two files open moving data between them using the named buffers. Often someone will come in with a 'brush fire' that needs immediate attention and I really don't want to quit my edit session and lose my buffers. So I put it to sleep with Control Z. You can start up another vi edit session, complete with named buffers and everything. They are two complete separate sessions with no ties between them. When the fire is under control you can bring back the original session with 'fg'. I know this is a very simple thing, but for a long time I didn't know you could do it so I would quit the original session.

- John Potter


XDM Replacement

Date: Thu, 03 Oct 1996 23:26:00 -0400
From: Jim Nicholson pcks@cnj.digex.net

I'm not sure how well known it is in the Linux community, but Pierre Ficheux (pierre@ai.alienor.fr) has written a replacement for the XDM logon dialog that lets you set up icons for users - sort of like what you can do on an SGI machine. The file can be had via ftp://ftp.ibp.fr/pub/linux/tsx-11/sources/usr.bin.X11/xdm-photo-1.1.tar.gz; more info is available on Pierre's web site http://alienor.fr/~pierre/index_us.html

- Jim Nicholson


[ TABLE OF 
CONTENTS ] [ FRONT PAGE ]  Back  Next


This page maintained by the Editor of Linux Gazette, gazette@ssc.com
Copyright © 1996 Specialized Systems Consultants, Inc.


"Linux Gazette...making Linux just a little less scary!"


News Bytes


Contents:


News in General


 Comdex Conference

17 Oct 1996
Please join Linux International at The Linux Technology Showcase, COMDEX FALL/96. This will be the largest presentation of Linux to date outside the Internet. The show will run November 18-22, 1996 in Las Vegas, Nevada. The Linux Showcase will be promoted in the show preview, show guide, show daily and other materials on a par with the Multimedia, Windows, Internet, Networking and other showcases. The location is downstairs at the Sands Expo & Convention Center, just off the famous Las Vegas Strip.

For additional information:
Linux International, http://www.li.org/
li@li.org


 Free Software Union

"Free Software Lovers Unite!"

The FSU is a volunteer, democratic organization dedicated to the Free Software community. It provides all users, developers, and enthusiasts with full-voice, free membership in a voting decision making body. It channels resources, manpower, and community feedback for voter endorsed project implementation.

The FSU gives developers guarantee of wide acceptance and support by providing guidelines and tools for development to produce consistent and inter-operable software, and volunteer man-power recruiting assistance for large endorsed projects.

Some of the projects that the FSU is currently considering is the adoption of CORBA or SOM, licensed porting/re-implementation of OpenDoc, a "Free Software Map" database of all known free software projects (a superset of LSM), and much more!

FSU Founder/Contact: Jan Vicherek, honza@ied.com
FSU Mailing List Posts: fslu@calum.csclub.uwaterloo.ca
Find out more and join at: http://www.jagunet.com/~braddock/fslu/org


 Lasermoon, Linux-FT

Date: Tue, 08 Oct 1996
Clarification - Linux-FT, The Road Ahead

Linux-FT is a Lasermoon Ltd product which was developed with the intention of achieving POSIX.1 and XPG4 certification as part of a project Lasermoon started in January 1995. Lasermoon obtained the required licenses (POSIX.1, XPG4 etc) and X/Open membership to facilitate this fully GPL'ed effort. Unifix were involved in the development of the distribution, and components from Linux-FT were fed back into other Unifix products (hence the similarities).

The technology behind Linux-FT was acquired by Caldera during 1996 and will be incorporated into the Caldera's Linux products.

Caldera's involvement with Linux-FT has been the subject of many postings and press announcements over many months and details can be found on the Linux-FT WWW site at www.lasermoon.co.uk and Caldera (www.caldera.com).

Unifix have no connection with, or control over Linux-FT. Whilst we are flattered that Linux-FT is receiving such attention, BOTH Unifix GmbH and the Unifix 2.0 RELEASE HAVE NOTHING WHATSOEVER TO DO WITH CONTINUING Linux-FT DEVELOPMENTS.
Caldera and Lasermoon are continuing the work of developing a truly Standards Certified/Branded Linux (released under the GPL). Working with the original developers, we welcome all contributors to the POSIX.1 and XPG4 standardization effort which is essential for the long term success of Linux.

By working together, we can accomplish this effort in a much more effective manner and comply with the licensing requirements of The Open Group and other such organizations.

For additional information:
Lasermoon Ltd, The Forge, Wickham, Hants, England
info@lasermoon.co.uk
http://www.lasermoon.co.uk


 Linux Consultants HOWTO Reaches Hundred Entry Mark

October 17, 1996 -- Only one month after its debut on September 18, 1996, the Linux Consultants HOWTO, a listing of companies and individuals providing commercial support for the freely redistributable operating system Linux, now contains over a hundred entries.

The Linux Consultants HOWTO is free and can be downloaded from http://www.sypher.com/tbm/Consultants-HOWTO

For additional information:
Martin Michlmayr, tbm@sypher.com
http://www.sypher.com/tbm


 Linux in the News

News Articles about Linux:


 Linux on PCTV

The PCTV production company, http://www.pctv.com/, which produces Computer Chronicles, USER GROUP and @HOME, is producing four half-hour shows on UNIX and Linux. These shows are:

These shows will be aired as part of the USER GROUP show, which is carried on ME/U, Jones Computer Network (a 24-hour cable network dedicated entirely to the subject of computers) and the NBC Super Channel and CNBC Europe, as well as by Satellite. USIA WorldNet will begin carrying the Users Group show.

Please check your local cable or satellite company for viewing times of USER GROUP.

For additional information:
Jon "maddog" Hall, Executive Director Linux International
jon.hall@li.org


 New Linux Q&A Site

A new threaded Linux Q&A and discussion area has been created at The Forge Foundation web site:

http://www.theforge.com/InterBoard

Create your own account or use the link that lets log you in anonymously, then choose the group "Foundry - Linux Q&A". This is an unmoderated group open to everyone.

For additional information:
Hal Reed, hal@theforge.com
The Forge Foundation, http://www.theforge.com/


 Northcon Nov 4-6

Northcon is Nov 4-6 at the WA Convention & Trade Center (near the Kingdome) in Seattle, Washington. There will be 350 exhibits by "Leading Electronics Manufacturers".

Mon. Nov 4, 10-5
Tue. Nov 5, 9-5
Wed. Nov 6, 9-4

You can register on-line (free) at http://www.northcon.org.

For additional information:
northcon@ieee.org or call 1-800-877-2668


 Open Systems World/FedUnix Conference

There will be a Open Systems World/FedUnix conference/trade show in Washington DC on November 4-8. It is a traditional event devoted to open computing (read: Unix), attended mostly by government and commercial Information Systems types.

Since Linux has gained the attention of such circles, there is a 2-day Linux track at this conference. I am chairing a Linux-related session, scheduled for Thursday, November 7, 1996. Speakers will be people who apply Linux in real world situations, both in the government and the private sector, and will tell us about their good and bad experiences, and plans for the future. Among the speakers, there are some who use Linux as a primary OS, as well as those for whom Linux is just another environment.

For additional information:
http://www.mcsp.com/OSW-FedUNIX.html
Przemek Klosowski, przemek@nist.gov


 QT GUI Contest Announcement

On October 1 Troll Tech announced the Qt GUI programming contest (free entry).

A contest for programmers, writing free GUI software using Qt (a C++ GUI toolkit, see http://www.troll.no/). Anyone can enter, there is no fee for entry, and any program can be entered as long as it is written in C++ and uses Qt.

The winner will be paid US$2000 and two runners-up $500 after the contest has closed on May 1, 1997 and the jury has done its job.

We wish to encourage more free GUI software for X11, and we wish more people to experience for themselves how good Qt is.

For additional information:
http://www.troll.no/contest.html
contest@troll.no


 Vulnerabilities in Linux

An October 10 CIAC (Computer Incident Advisory Capability, U.S. Department of Energy) bulletin describes a security hole in Linux when using a Bash shell as the default shell, and explains how to avoid it. Additional information can be found at the CIAC web site.

On August 15, CIAC announced a security hole in the mount and umount Linux programs, and gave fixes. Additional information can be found at the CIAC web site, CIAC web site

If you find code that could be potentially dangerous, you should contact the Computer Emergency Response Team (CERT), http://www.cert.org/, at Carnegie Mellon University. Reporting forms can be found at ftp://info.cert.org/pub/incident_reporting_form.


Software Announcements


 Craftworks Linux 2.2 Intel Version

Mon, 07 Oct 1996
Craftwork Solutions has released it's second generation Linux OS for the Intel platform. Craftworks 2.2 is a complete, customizable operating system for Intel based machines that empowers the desktop. It is a solid operating environment for desktop workstations and Web server solutions. The Linux environment provides improved processing performance, high reliability and built-in security, at an affordable price.

For additional information:
Craftwork Solutions, Inc., http://www.craftwork.com
info@craftwork.com


 Java Development Kit--JDK 1.0.2 for Linux

On Friday September 27th 1996, Sun Microsystems provided the Java community with the long awaited update of the binary license, subsequently making redistribution of the Linux JDK 1.0.2 (Java Development Kit) possible.

For additional information:
http://www.blackdown.org/java-linux/Information.html
Robert Herrmann bherrman@netcom.com
NETCOM On-line Communication Services


 Linux On A Disk

06 Oct 1996
A 1 or 2 GigaByte IDE Hard Disk Pre-Loaded with Linux. Positively the easiest way to get the Linux Operating System up and running on your PC.

http://www.cosmoseng.com/

For additional information:
Clay Claiborne, cjc@earthlink.net
Cosmos Engineering Co., Los Angeles, CA


 MkLinux Release 2.0

23 Sept 1996
Apple Computer, Inc. (Nasdaq: AAPL) announced today that it is making available Developer Release 2 of MkLinux. Based on the Open Software Foundation (OSF) Mach Kernel, MkLinux allows users to run UNIX applications and solutions on high performance Power PC-based products. The DR2 release delivers substantially improved performance and stability, and many features Linux developers and customers have been asking for.

Apple is making the source code for Developer Release 2 available free of charge on the Apple MkLinux web site at http://www.mklinux.apple.com/ long with snapshots of MkLinux, updates, patches, and late-breaking news. Apple's MkLinux Developer Release 2 CD is available from Prime Time Freeware for U.S. $20.

For additional information:
Prime Time Freeware, info@ptf.com, http://www.ptf.com/
Apple Computer Inc., http://www.apple.com/


 Red Hat Linux 4.0 Users's Guide

Fri, 04 Oct 1996
Red Hat Linux 4.0 Users's Guide free via FTP! That's right, the 236 page Red Hat Linux 4.0 User's Guide is now available via FTP, in PostScript and HTML form. It is also available for browsing on our web site. The Users's Guide covers installation, configuration, RPM, control-panel, and basic system administration issues, and is a must have for anyone running Red Hat Linux.

http://www.redhat.com/support/rhl/manual
ftp://ftp.redhat.com/pub/redhat/redhat-4.0/Users-Guide

The Red Hat 4.0 User's Guide is distributed under the same terms as the Linux Documentation Project (LDP) documents.

For additional information:
Red Hat Software, http://www.redhat.com/
info@redhat.com


 Video Mosaic Netscape Plugin for Linux

18 Oct 1996
Vosaic (Video Mosaic) is available as a Netscape Navigator plug-in for Linux from the Systems Research Group of the University of Illinois at Urbana-Champaign and Vosaic Corp.

Vosaic supports real time video over the Internet that is embedded in standard Web pages. The technology allows one to view MPEG video at 6 to 10 frames per second over telephone dial up connections at 28.8 Kbits/s. Higher bandwidths improve video quality. There is no download latency - videos are displayed as the data arrives over the network. Get the 1 BETA 12 plug-in at:

http://www.vosaic.com/

Vosaic requires kernel 2.0 and above, as well as XFree86 3.1.2.

For additional information:
info@mosaic.com
http://choices.cs.uiuc.edu/srg/stan/video.ps


 Virtual Paper--Online-Document Viewing System

04 Oct 1996
Virtual Paper is a high-quality online-document viewing system. Lectern, the Virtual Paper viewer, offers good legibility (using anti-aliasing), fast page-turning speed, a smooth user interface, and the ability to handle both PostScript and scanned "legacy" documents.

It's written in Modula-3, is distributed in both source and executable format, and is free (but copyright by Digital Equipment Corporation).

DEC has announced the availability of the Virtual Paper system in x86/Linux ELF executable format.

For details on the overall system, including links to the executables and sources, see:

http://www.research.digital.com/SRC/virtualpaper/

For additional information:
Paul McJones, mcjones@pa.dec.com
Andrew Birrell, birrell@pa.de.com
DEC Systems Research Center (SRC), Palo Alto, California, USA


 WebThreads 1.0.1 for Linux

08 Oct 1996
WebThreads, LLC of Vienna, VA, announced the release of WebThreads 1.0.1 web site interactivity and visitor tracking solution. WebThreads allows you to create truly interactive web sites that respond and change in real time to individual visitors based on their actions while providing the webmaster with a tremendous amount of information about what the visitors are doing on your site. WebThreads is a lightweight and easy to install set of CGI scripts written entirely in C that greatly enhance the flexibility, interactivity and visitor traffic reporting accuracy of standard WWW servers.

For additional information:
WebThreads, http://www.webthreads.com/
info@webthreads.com


 XForms V0.81--X11 GUI Toolkit & Builder

29 Sep 1996
XForms is a graphical user interface toolkit and builder based on Xlib for X Window Systems. XForms is a portable and efficient C library that can be used in both C and C++ programs. The library works in all visuals and all depths (1-24) and comes with a rich set of objects such as buttons (of many flavors, including color XPMs as labels) , browsers, sliders, and menus integrated into an elegant event/object call back execution model that allows fast and easy construction of X-applications. It also has OpenGL (on SGI) and Mesa support.

XForms V0.81 for Linux/m68k and MkLinux is available from

http://bragg.phys.uwm.edu/xforms
ftp://laue.phys.uwm.edu/pub/xforms

In addition, XForms is already available for Linux/i386, Linux/Alpha and other Unix platforms.

For additional information:
T.C. Zhao, zhao@laue.phys.uwm.edu
Surface Labs, Dept. of Physics, UW-Milwaukee


[ TABLE OF 
CONTENTS ] [ FRONT 
PAGE ]  Back  Next


This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
Copyright © 1996 Specialized Systems Consultants, Inc.


"Linux Gazette...making Linux just a little less scary! "


Larry Ewing's Penguin Gazette

The Graphics Muse

by Michael J. Hammel

muse:
  1. v; to become absorbed in thought
  2. n; [ fr. Any of the nine sister goddesses of learning and the arts in Greek Mythology ]: a source of inspiration


Welcome to the Graphics Muse! This is the first in what I hope will be a long running monthly column relating to computer graphics on Linux systems. Why a "muse"? Well, except for the sisters aspect, the above definitions are pretty much the way I'd describe my own interest in computer graphics: it keeps me deep in thought and it is a daily source of inspiration.

This column will be divided into two sections: Graphics Mews, a section devoted to the latest news in graphics such as new releases of products (free or commercial), people in the news, conventions and conferences and whatever else might be of general interest to the graphics community, and Musings, a section where I can spew whatever I think needs to be covered more in depth. The later section I hope will cover things like reviews of products, tips and tricks, interviews with graphics people, or maybe just my philosophies on life. You'll just have to come back each month and see where things go.

I'm open to suggestions on topics for the Musings section. I'll also take any and all notices regarding graphics tools that are being released or updated. Please don't send notices as advertisements - I only want to know about new releases or new products. I'm only doing that to keep my workload down a little.

One thing this column won't cover is X programming or windowing API's (unless they are specifically designed for the development of graphics tools). There are lots of places to get information about X. This column is about computer graphics in general.

Graphics Mews

Before I get too far into this I should note that any of the news items I post in this section are just that - news. Either I happened to run across them via some mailing list I was on, via some Usenet newsgroup, or via email from someone. I'm not necessarily endorsing these products (some of which may be commercial), I'm just letting you know I'd heard about them in the past month. Thats all I've seen for this month. Software releases have been kinda sparse the past month for some reason.

Musings

First, let me start with some shameless self-promotion: The Linux Graphics mini-Howto and the Unix Graphics Utilities pages. The latter of these I started late last year while beginning to learn about computer graphics through the use of POV-Ray, a 3D rendering tool. I had found that most of the tools available for use with POV-Ray were not Unix based (not specifically, anyway) so I tried to find info on Unix based tools since I was running Linux. After I learned a bit more about computer graphics I started the Linux Graphics mini-Howto in retaliation for a coworkers claims that doing graphics was best left to MS based systems. NOT! The tools need a little organizing, a few need better documentation, but in general you can do some very impressive graphics on Linux systems.

These two pages are available at:
http://www.csn.net/~mjhammel/linux-graphics-howto.html and
http://www.csn.net/~mjhammel/povray/povray.html.
I was offered some free web space by a couple of people so I'll be moving my pages sometime in the future, but probably not till after January.

Note: if you are the official maintainer of any of the packages listed in these pages feel free to keep me informed of new releases. The information there is only as good as the info I've gathered from newsgroups and word of mouth so far.

Ok, enough about me.

My first bit of musings revolves around the use of images in web pages. I get a number of e-mails from people who've seen my web pages (or possibly my ramblings on various newsgroups or mailing lists) asking how to do blah or where can I get blah to do blah for their web pages. The "where" parts are covered by the links mentioned above. The "how" part is a broad question. I'll summarize.

When creating graphics for your pages, keep the following things in mind:

  1. Consider your target audience:
  2. If you want the average person to visit your page, you have to give them two things: content and flash. The flash has to be done using as little download time as possible, with as much color as you can squeeze in without overloading the browser (causing it to dither images). The content must be the reason for your pages, not the flash.
  3. Background images should be just that - in the background. Don't make the background so gaudy it distracts from your real content.
  4. Use common colormaps - this reduces the number of colors the browser has to allocate, leaving some space for other applications. X-based systems can allocate colors into private colormaps, but this causes that annoying "flashing" you see (try running Netscape with the -install option - you'll see what I mean).
  5. Flash can be added easily with a simple background over which you add some in-line transparent GIFs.
  6. Never use an "Under Construction" image. Its the Web. Of course its under construction!
  7. Don't put those silly graphic dots in place of HTML list bullets. First, they waste the users time downloading (each requires another connection to the server) and second they break the formatting rules provided with HTML. Its just not good practice and they don't have any real value add to your pages. Now that you know some basic guidelines for you images, how do you go about creating the images? It depends on what kind of images you want to make. If you want a simple, cartoon-like image you can get a drawing program like xpaint. This tool is good for drawing circles and boxes and filling them in, using a window like a canvas to paint on the screen. However, this tool is limited in what you can do to the image once you've drawn it. One highly popular tool for a number of platforms that does this post-processing is Adobe Photoshop. Using a tool like this takes a bit of practice, but once you've mastered it you can do some rather amazing things. A Linux alternative to Photoshop is the Gimp. The logos on this page were created with the Gimp. So was the background.

    3D images are a whole other matter. There are actually more well-known tools for doing 3D work than there are for doing image manipulation (ie tools like the Gimp). Probably the best known of these is POV-Ray. This tool reads in a text file that uses a "scene description language" to describe how objects in the scene should be positioned and textured. The drawback to these tools is that they lack a point-and-click interface. There are separate tools available, known as modellers, that allow the creation of the scene files without actually rendering the image. In order to create 3D image you need to either learn the scene description language or learn who to use a modeller that will create it for you.

    I know this is fairly basic and undetailed, but this is just my first column. Over time I'll try to cover both beginner and more advanced issues.

    Future Directions

    Next month: How do you create the textures that get applied to 3D images? Beyond that, I'm considering talking about how to use Type 1 fonts in your images: how to install them, how you can manipulate them with the Gimp to make interesting logos, etc. I'd also like to provide some tips for using POV-Ray and BMRT (although I have a lot to learn about the latter). And I might try to cover a little on how to do animations. Things are pretty open right now. Let me know what you'd like to hear about!


    "Linux Gazette" Penguin courtesy of Larry Ewing.
    Copyright © 1996, M. J. Hammel
    Published in Issue 11 of the Linux Gazette


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    A "Kill-Ring" Menu For Xemacs

    by Larry Ayers

    Copyright © 1996

    Published in Issue 11 of the Linux Gazette


    Lately I've been enjoying exploring the myriad capabilities of GNU Emacs' offspring and competitor, Xemacs. Aside from the burden of downloading the voluminous source, Xemacs offers quite a few features which Gnu Emacs lacks. Luckily for those considering a transition, the basic keystrokes and commands are nearly identical.

    One feature of Gnu Emacs which I began to miss after a while was the handy pull-down menu which displays the first few words of each cut or copied selection made in the current session, i.e. the "kill-ring". The prospect of figuring out how the lisp files work which determine the menu-bar's structure wasn't too appealing. I know a little lisp, but not enough to add a new menu entry.

    Some weeks later, while idly browsing through some emacs newsgroup headers, I came across this posting, which I'll quote here in full:

    
    In article <9604170740.AA26236@portia.uk.abs> imac@portia.rd.abs.alcatel.co.uk
    (Ian MacKinnon) writes:
    
    > When I used emacs (before I saw the light), I made use of a function
    > mouse-menu-choose-yank which offered you the choice to yank from the recent
    > history of selections via a popup menu, but I can't get it to work in
    > XEmacs because x-popup-menu doesn't exist, and the parameters to
    > popup-menu are different. Has anyone got an alternative. I enclose the
    > ...
    
    I have hacked the Emacs codes of mouse-menu-choose-yank to put in
    Xemacs as follows:
    
    
    (defvar yank-menu-length 40
      "*Maximum length of an item in the menu for select-and-yank.")
    (defun select-and-yank-filter (menu)
      (let* ((count 0))
        (append menu
                (mapcar
                 #'(lambda (str)
                     (if (> (length str) yank-menu-length)
                         (setq str (substring str 0 yank-menu-length)))
                     (prog1
                         (vector
                          str
                          (list
                           'progn
                           '(push-mark (point))
                           (list 'insert (list 'current-kill count t)))
                          t)
                       (setq count (1+ count))))
                 kill-ring))))
    
    For this to work, you have to put on your menu bar the following submenu
    (use add-submenu for that for example):
    
          ("Select and Yank"
           :included kill-ring
           :filter select-and-yank-filter)
    
    Hope this help
    
    -----------------------------------------------------------------------
    PHAM Dinh Tuan                         | e-mail: Dinh-Tuan.Pham@imag.fr
    Laboratoire de Modelisation et Calcul  | Tel: +33 76 51 44 23
    BP 53, 38041 Grenoble cedex (France)   | Fax: +33 76 63 12 63
    -----------------------------------------------------------------------
    

    It took a little experimenting to get this to work. The first section of lisp code, ending with "kill-ring))))", can be copied unaltered into the xemacs section of your ~/.emacs file. If you're using Xemacs 19.14 (the current version), it goes into your ~/.xemacs-options file.

    The second, shorter lisp snippet needs one small addition:

    
               (add-submenu nil '("Kill-Ring"
                         :included kill-ring
                         :filter select-and-yank-filter))
    

    As well as adding the proper syntax for add-submenu, I shortened the menu-title, but it could be called anything you like.

    When I first restarted Xemacs after placing this code into the init file the new submenu was nowhere to be seen. I surmised that I'd made some error, and put off further experimentation for another time. A few minutes later I was busily editing some file. I happened to glance up at the menu-bar and found a brand-new kill-ring submenu. Surprisingly the new menu only appears after a selection has been cut or copied.

    I was happy, and thought that by relating my experience I could encourage other Xemacs users (especially the ones who know as little lisp as I do!) to try this neat hack. Thanks to Dinh Tuan Pham, if he or she should happen to see this.


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    Linus to Move to U.S. in 1997

    By Phil Hughes, phil@ssc.com

    Copyright © 1996
    Published in Issue 11 of the Linux Gazette


    Linus Torvalds is currently in the process of finishing up his Master's degree at the University of Helsinki. After degree completion, he plans to move to Santa Clara, California, where he will begin working for Transmeta in March, 1997. Since Transmeta does not do Linux, this is a Linux-neutral position; however, his contract includes a provision for time to continue work on Linux.

    After careful consideration of what he wanted in the future for himself and his family, Linus decided to pursue a position in the business world. A friend of his, who works for Transmeta and who has been a long-time Linux contributor, talked to his management and found a position for Linus that would both utilize his talents and interest him.

    Linus feels that the match between Transmeta and his future goals is a good one. Transmeta is a relatively small company. While Linus' main job will not be working on Linux, Transmeta recognizes the good that Linux is doing, and will allow Linus time and freedom to continue with the Linux project.

    Here at Linux Journal we see this as a chance to let Linus trade in some of that virtual beer we owe him for the real stuff. While not exactly around the corner, being on the same coast and within about two hours by airplane makes the trade a lot easier.

    While some have expressed fear that Linus' choice to apparently have a life could adversely affect Linux development, I think this is not the case. Those of us who have had the opportunity to sit down and talk with Linus know that Linus already has a life. While he spends a lot of time working on Linux, he does have other interests. The goal in attending the University of Helsinki was to get a degree, not to build the operating system we are all now involved in.

    I think his decision to go to a Linux-neutral company, even though he had job offers from companies working with Linux, will be an advantage to the Linux industry as a whole. Also, being in the U.S. will make it easier for Linus to participate in shows and other events here, while still maintaining a personal life. Besides, it is going to be nice to be able to say that the person who created our operating system of choice has a job.

    -- Phil Hughes
    Publisher of Linux Journal


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next



    "Linux Gazette...making Linux just a little less scary! "


    Running Sun's Hotjava Browser on a Linux System


    by Larry Ayers

    Copyright (c) 1996

    Published in Issue 11 of the Linux Gazette

    Introduction


    Recently I stopped by the Java-Linux web-page to see what was new and found an intriguing new link. This link took me to a page which contains a script allowing Sun Microsystem's HotJava web-browser to be run on a Linux machine. I was skeptical, as the Java-based browser supposedly is only available in versions for Win 95/NT and Sparc Solaris systems. The comments in the script stated that the Sparc version should be downloaded and installed, after which the new script should be edited to reflect the location of the Java Developers Kit on the machine. The comments were rather terse; what I wanted to know was whether it worked well enough to even bother with.

    Download and Installation

    You've probably guessed that my curiosity got the better of me; feeling faintly foolish I FTP'ed the three-and-one-half megabytes of Sparc binaries from the Javasoft site and installed them. After substituting the new start-up shell script for the supplied script I was ready to try it out. The first try it died, complaining that it couldn't find mkdir in /usr/bin. I re-edited the shell script and corrected that path. This time it worked, and I have to say I was impressed.

    So What's It Like?

    HotJava is a graphically well-designed browser. The graphics in the various help-pages, the buttons, and the general design are all professionally executed, and pleasing to the eye. Here is a screen-shot of one of the included monitor applets:


    HotJava

    The browser takes about as long to start up as Netscape does. It's informative to start it from an xterm window, as verbose messages scroll by throughout the session indicating what threads and applets are active. You'll also be able to see its dying words, as (at least on my machine) it will only run for about one-half an hour before crashing. While it runs it seems to do well, though. I aimed it at http://www.gamelan.com and tried a variety of java applets. They seemed to take longer to load than with Netscape, but once loaded worked well. Frames, once a Netscape exclusive, are supported. There is also a menu option allowing hotlists from other browsers to be imported.

    In its current "pre-beta" state HotJava uses an awful lot of memory. Top reported usage of fourteen to fifteen megabytes! No wonder I could only start it when the machine was lightly loaded. The current version of the Linux java compiler is a memory hog as well, so perhaps this is a trait of java, being an interpreted language as it is.

    HotJava includes two interesting monitor applets. One shows the current memory usage in bar-graph form, with a button which will clear past images and pages from memory, rather like Netscape's "clear memory cache" function. The other shows a list of all of the active threads, with often as many as twenty to thirty active at once.

    I did notice that if used locally; i.e. for viewing HTML files on the local hard disk rather than on the net, it wouldn't crash. GIF and JPEG images referred to from a page (rather than inline on the page) are viewed in the same window with an internal viewer. This is in contrast to some browsers which call an external program for this purpose.

    I should state here that I don't have the Java Developer's Kit version 1.02 patchlevel 2 installed; my installation is the plain 1.02. Patchlevel 2 is recommended on the Java-Linux page. Perhaps some of the problems I had with HotJava can be attributed to my slightly out-of-date JDK.

    Conclusion

    Even with all of the faults related above my overall impression was positive. Remember, this is a pre-beta release. HotJava is a major evolutionary step up from the web-page applets which are the most common uses of java these days. What other large application written in java is available? It is a tribute to the inherent cross-platform nature of the java language that a release intended for Sparc Solaris machines will run at all on my humble 486 Linux box. Thanks go to whomever modified the hotjava script and made it available on the Java-Linux site!
    Larry Ayers<layers@vax2.rain.gen.mo.us>
    Last modified: Sat Oct 26 17:29:28 CDT 1996


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    The TkGoodstuff Package

    by Larry Ayers

    Copyright © 1996

    Published in Issue 11 of the Linux Gazette


    Introduction

    For the past couple of years Mark Crimmins at the University of Michigan has been developing and refining an extremely configurable desktop button-bar; since it's written in Tcl-Tk and superficially resembles the Fvwm Goodstuff module, it is known as TkGoodstuff. The utility has passed through several beta versions in the last year. Recently Mark made available a release version 4.1, so I thought this would be an auspicious time to review it.

    Features

    TkGoodstuff is really a package of "clients", which are modular utilities, organized and displayed by the master program. Some of the client utilities were written by Mark Crimmins, while others were contributed by users. They include:

    TkGoodstuff screenshot

    TkGoodstuff includes a tabbed-notebook style configuration utility, which allows a multitude of settings to be made for all of the clients. Colors, icons, fonts, and nesting of clients can all be determined here. Configuring a utility like this one can be extremely time-consuming. I like to rough out the configuration in one pass, live with it for a while, then make incremental changes from time to time as they occur to me. After making any change in the configuration notebook a window pops up giving you the opportunity to restart Tkgoodstuff (hereafter referred to as Tkg).

    Tkg is designed to cooperate with and interact with Fvwm; it can be loaded as an Fvwm module either at start-up or from the mouse-menu. If run as a module the button-bar will "stay on top" and inhabit all pager windows. There is also an option which allows Tkg to span any of the four screen edges.

    On my system PPP dial-up sessions are initiated by means of a short shell script called ppdi. I recently discovered that the Tkg Net client can launch this script when its panel is mouse-clicked, and terminate the session the same way by launching the ppp-off script. This is just marginally easier than finding an rxvt window and typing the commands in, but much easier to explain to my wife and kids! The Net button also shows total time online when a connection is open.

    Modules which are used less often can be invoked from a submenu viewed by clicking the Utilities button.

    My favorite configuration uses a small subset of the available modules, with the window-list and pager combination occupying the lower half of the bar.

    Tkg comes with ample documentation in the form of linked HTML files. A tutorial is even included which provides help for creating your own modules.


    Availability and Installation

    TkGoodstuff is available from the major Linux archive FTP sites, but its home site will have the most recent version. The compilation and installation process is well-documented within the package; the current version (4.1) does require Tcl-7.5 and Tk-4.1.


    Larry Ayers<layers@vax2.rain.gen.mo.us>
    Last modified: Tue Oct 22 09:25:55 CDT 1996


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    X-Files

    by Larry Ayers

    Copyright © 1996

    Published in Issue 11 of the Linux Gazette


    From two Finnish college students, Juha Forsten and Mikko Kiviniemi, comes a new variation on the theme of translating basic Unix commands into a graphical form with Tcl/Tk. X-Files superficially resembles FileRunner (reviewed in LG #9) due to a shared ancestry: those legendary Amiga file managers which seem to inspire such loyalty and nostalgia. This new one has quite a list of features, all of which are configurable to an extreme.

    Features, Some Unique

    X-Files is one of those apps which you could spend hours customizing. The X-Files window at first glance seems cluttered and busy, with row after row of multicolored function buttons. I believe the authors set up the default configuration this way so a new user could see all of the possibilities at a glance. Click here to take a look: Initial View

    Exploring further I found that a pull-down menu allows the default button-arrangement to be exchanged for any of three alternate choices. Alternately, any individual row can be disabled. As a further refinement there is an entry under the "config" menu item which allows the appearance and behavior of any button to be edited. A small edit-window pops up after you click a mouse button on whichever button you'd like to change. The color, button text, and command you'd like the button to run can be entered in and saved. Entire groups of buttons, each optimized for a certain project or type of work, could be created. They would then be available from the menubar.

    Another built-in mini-editor is also available from the menubar. This one allows specific behavior to be assigned to various file extensions. If you'd prefer the Gimp rather than XV to be the default image viewer for jpg files this'll let you do it. A separate program or action can be assigned to each of the left and middle mouse-buttons.

    The references to left and middle in the above statement seem to refer to a three-button mouse. X-Files was written with this sort of mouse in mind and can be a little awkward to use with a two-button mouse, like mine. Even if you have emulate three-button mouse set in your XF86Config file, double-clicking both mouse buttons at once takes a while to get used to.

    I was pleased to see complete keyboard-control support in this file manager. The arrow keys and page-up and page-down keys work in whichever directory pane the mouse cursor is in. The focus follows the mouse without clicking, even to list-boxes and entry-fields. Lack of this feature is a shortcoming in the other two Tk file managers I've written about, Tkdesk and FileRunner.

    The mv command in Linux (and other Unix variants) has a peculiarity: it refuses to move a file from one partition to another. Most file managers I've used deal with this by means of a behind-the-scenes subterfuge. While the user thinks the manager is moving the file, it's actually copying the file, then quickly deleting it from the original location. The overall effect is the same. The Move button in X-Files hasn't learned this trick yet, but I imagine after a few more version releases it will. This behavior has an effect upon file deletions which puzzled me for a while. X-Files would occasionally refuse to delete files for no apparent reason. What was happening was a result of X-Files' use of an undelete/trashcan directory. This directory (~/.xfiles/xfiles_dumpster) is created during installation, and the default behavior is to move all deleted files to this directory. This would be fine if all your files were on the same partition; if they're not X-files will balk. Luckily this feature is easily disabled; I prefer irrevocable deletion anyway.

    A "virtual file system", similar to but not quite as refined as the Midnight Commander's, allows the contents of zipped and tarred and gzipped files to be browsed. In this beta *.tgz files are supported, but not *.tar.gz files.


    Licensing and Availability

    X-Files has many other features; why not check out the X-Files Home page and find out more? The source can be downloaded from the page as well. As of this writing (early October) it hasn't shown up on the archive sites.

    This program isn't completely free. The terms are similar to those of John Bradley's XV image viewer: it's free to individuals, but for business and any other multiple-user use it costs twenty dollars to register. The authors also hint that feature requests from those who have paid will be more likely to be acted upon. An individual wishing to be a "supported user" only has to pay ten dollars.


    Conclusion

    I consider X-Files to be a direct competitor in features and utility to both FileRunner and the Midnight Commander. Tkdesk and Moxfm are in a different league; they're much more than file managers, though many of the functions are comparable. The Midnight Commander has the useful trait of running in a console session as well as in an rxvt or xterm window. Because of this, Midnight Commander is among the first apps I resurrect after repartitioning and reinstalling Linux. I'm just happy that we now have choices in applications for Linux; it wasn't that long ago that Linux users were glad to have just one of each type of app or utility.


    Larry Ayers<layers@vax2.rain.gen.mo.us>
    Last modified: Tue Oct 22 09:24:14 CDT 1996


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    Subject: TAPR SS Position Statement
    Date: Thu, 26 Sep 1996 12:18:44 -0700 (PDT)
    From: Steve Stroh
    To: Phil Hughes WB6SWR

    I suspect that the "Intranet" described below will be built on Linux-based IP routers, possibly a simple implementation that can be booted from floppy or Flash Card.

    It's going to be very, very interesting.

    Steve N8GNJ, strohs@halcyon.com
    Amateur Radio TCP/IP n8gnj@sw.n8gnj.ampr.org
    | Amateur Spread Spectrum is the wave of the present!


    TAPR's Statement on Spread Spectrum Technology Development

    http://www.tapr.org/

    TAPR was founded in 1982 as a membership supported non-profit amateur radio research and development organization with specific interests in the areas of packet and digital communications. In the tradition of TAPR, the Board of Directors at their Fall 1995 meeting voted that the organization would begin to actively pursue the research and development of amateur radio spread spectrum digital communications. At the Spring 1996 board of directors meeting, the following statement of purpose was passed:

    "TAPR believes that the technical facts support our conviction that conventional and spread spectrum systems can coexist without detriment to conventional systems on all frequencies from MF to EHF. To this end, TAPR will begin to research spread spectrum systems that will develop technology for future deployment."
    As stated above, the TAPR board feels strongly about TAPR's focus on spread spectrum technology and especially how it relates to the potential coexistence on frequencies that will have increased number of users occupying them. The amateur radio bands, like other spectrum will become more heavily utilized in the future. It is in the interest of amateur radio to develop systems that are interference-resistant while not interfering with other primary or secondary users on those frequencies.

    TAPR understands the concerns many have with the new technology, and believes that efforts in both education and research is necessary in order to allay the fears about interference and to demonstrate the benefits of the technology.

    TAPR believes that todays' communications technology is moving toward all digital transmitters and receivers. These advances in technology, combined with the swift evolution of cell based transmission and switching protocols, are opening up a new set of possibilities for unique new services utilizing intelligent networks. These will contain smart transmitters, receivers, and switches. Today's Internet is perhaps the best example of a self-regulating structure that embodies these new technological approaches to communications in the networking domain. However, to date, many of these innovations have not moved into the wireless networking arena. TAPR will work on moving these innovations into the amateur radio community.

    TAPR feels that the VHF/UHF/SHF radio networks of the future will involve a mixture of links and switches of different ownership, which terminate at the end-user via relatively short-distance links. What will then be required is a built-in, distributed, self-governing set of protocols to cause the network's behavior to make more efficient use of a limited, common shared resource, the radio spectrum. Creating such a self-regulating structure for the optimal sharing of spectrum will require much effort.

    One of the major problems which stands in the way of these new approaches today is the current FCC regulatory environment and the manner in which spectrum is managed and allocated under its rules.

    Historically, the current regulatory approach to radio has been based upon the technology that was in use at the time that the Communications Act of 1934 was framed, basically what we would call today, 'dumb' transmitters speaking to 'dumb' receivers. The technology of that time required reserved bandwidths to be set aside for each licensed service so that spectrum would be available when needed. Given this regulatory approach, many new applications cannot be accommodated since there is no available unallocated spectrum to 'park' new services. However, given the new set of tools available to the entrepreneur with the advent of digital technology, what once were 'dumb' transmitters and receivers can now be smart devices which are capable of exercising greater judgment in the effective use and sharing of spectrum. The more flexible the tools that we incorporate in these devices, the greater the number of uses that can be accommodated in a fixed, shared spectrum.

    Therefore, TAPR will focus its spread spectrum effort in the following areas:

    Adopted by the TAPR Board on September 20th, 1996 at Seatac, Washington Board Meeting.

    Spread Spectrum Statement Committee:
    Greg Jones, WD5IVD
    Dewayne Hendricks, WA8DZP
    Barry McLarnon, VE3JF
    Steve Bible, N7HPR


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    My Experience Installing TCL/TK
    from 7.4 to 7.5

    on Red Hat Linux 2.1, kernel release 1.2.13

    By Earl Brown, gleep@lvinet.com

    Copyright © 1996
    Published in Issue 11 of the Linux Gazette


    In which I chronicle my experiences attempting to upgrade my version of TCL/TK to match the web-based help files I had already obtained.

    For the short version, click here

    On with the story!

    Naturally, the first thing I looked for was the RPM. Found it, couldn't get it because Red Hat FTP was _slow_ during daytime. So I went to sun.

    There I found tcl7.5 (I'm cautious - don't want to use beta stuff when I can avoid it. That is until I'm independently wealthy with time on my hands!). Look for:

        ftp://ftp.sunlabs.com/pub/tcl/tcl7.5p1.tar.gz
    That's the file I got. Download it. While you're there, get:
        tk4.1p1.tar.gz
    I created a directory off my home:
        ~/tcl
    and put both files in there. From there I unzipped them to get two subdirectories:

        ~/tcl/tcl7.5
        ~/tcl/tk4.1
    Both of these contain a README file - I read it (but only closely enough to see that there was a README in the 'unix' subdirectory that would give me info on how to compile.

    So, I changed to the unix subdirectory:

        ~/tcl/tcl7.5/unix
    And read the README file. It said run "configure" (which just checked out my machine), and then run "make" (which does about what you'd expect), then run "make install". All of these appeared to work, but when I ran 'wish', I still had the old versions. Hmmmm.

    Put it on the back burner for a while - I've other work to do. When I got home, I looked up the files again (and found the RPM this time), and downloaded them (at 28.8, instead of T-1 :(


    Next morning...

    First thing is try the RPM. No luck - it said the .rpm was a 'version 3' RPM, and that I needed to upgrade my version of RPM. Okay - glad I've got two machines at home (Thank you, Mom, for giving me your old '486!), I started up the Windows box (I'm looking forward to getting WABI so my wife can play FreeCell in a _real_ OS :) and started surfing again...

    Does anybody know why the rpm says that rpm2.2.rpm is a version 3 rpm and I need to upgrade?

    While I was finding this out, I was exploring other avenues. I got the files from sun installed on my machine at home. But they wouldn't compile (something about missing include files - this didn't surprise me, I've stripped that machine back in the name of hard drive space).

    So, being the explorer I am, I got out the 'sun archives' CD from my Red Hat install set. Did a 'find' for "*.tcl" and was happy to see there was a tcl7.5p1.tar.gz file. Good. Ungzipped the thing and 'tar tvf'ed it to see what was in it. Hmmm. "./usr/..." Looks like I should just untar it from the root directory. I'm not so cautious when I'm frustrated.

    This option took a _lot_ of drive space. I wish I could undo it. It didn't really work (and it complained about not being able to form links. I tried to do the links myself, but it still failed).


    Nap time...

    That was relaxing. I realized I'd been able to compile at the office, where it was all the same setup, so I could play with "make install" at home and see what I could do.

    While I was connected to work, I had the idea to try "wish" from the compiled directory at work. IT WORKED! Headway at last! (Did I also mention that I'm sometimes a bit slow?) But I've got this really ugly hierarchy of files to my compiled copy of 'wish', and I don't know what it's going to look for. Copy to my home machine.

    Here's the part where things go quickly.

    On the home machine, I set up the directory structure I had at work and untarred the files. Now I've got a working copy of wish and tclsh.

    I created a 'bin' directory off my home directory and copied 'wish' and 'tclsh' into that directory. I also copied the two 'lib' files "libtcl7.5.a" and "libtk4.1.a" into the bin directory. I don't know where they really go, but this place makes good sense.

    So I run 'wish' from there. Error message - unable to load 'libtcl' from a list of directories. I'm not sure what they all were, but one was '~/library'. Since it worked from ~/tcl/tk4.1/unix, I just copied the '~/tcl/tk4.1/library' directory to '~/library', and then copied '~/tcl/tcl7.5/library' to '~/library'.

    Now wish ran with the right version. Delete the ~/tcl structure (backup just in case!) and it worked. Good enough. I played with my working install of tcl/tk quite happily the rest of the day.


    But during the night...

    "I've got to set it up to work better!"

    So, I get to work and get 'wish' to give me an error message - it complained that the 'init.tcl' was not found in '/usr/local/lib/tcl7.5'.

    Okay. I went to '~/tcl/tcl7.5/library' and copied the files I found there to '/usr/local/lib/tcl7.5' (a directory which I had to create, by the way).

    Run 'wish' again, and this time it complains about 'tk.tcl' not being found in '/usr/local/lib/tk4.1'. I'd expected something like that. So, create '/usr/local/lib/tk4.1' and 'cp ~/tcl/tk4.1/library/* /usr/local/lib/tk4.1'. And it worked!

    Then 'cp ~/tcl/tcl7.5/unix/tclsh /usr/bin/tclsh7.5' and 'cp ~/tcl/tl4.1/unix/wish /usr/bin/wish4.1'. Go to ~ and run 'wish4.1'. It worked again! Good, create the link 'ln -sf /usr/bin/wish4.1 /usr/bin/wish' and 'ln -sf /usr/bin/tclsh7.5 /usr/bin/tclsh'

    Try it again; 'wish' - and success!

    Things I found out:


    Short Summary:

    Get ftp://ftp.sunlabs.com/pub/tcl/tcl7.5p1.tar.gz and tk4.1p1.tar.gz
    'gunzip' them and 'tar xvf' them
    
    'cd ./tcl7.5/unix'
    'configure'
    'make'
    'make install'
    'cd  ../..'
    'cd ./tk4.1/unix'
    'configure'
    'make'
    'make install'
    
    cd ../..
    'cp ./tk4.1/unix/wish /usr/bin/wish4.1'
    'cp ./tcl7.5/unix/tclsh /usr/bin/tclsh7.5'
    'ln -sf /usr/bin/wish4.1 /usr/bin/wish'
    'ln -sf /usr/bin/tclsh7.5 /usr/bin/tclsh'
    'mkdir /usr/local/lib/tcl7.5'
    'mkdir /usr/local/lib/tk4.1'
    'cp ./tcl7.5/library/* /usr/local/lib/tcl7.5'
    'cp ./tk4.1/library/* /usr/local/lib/tk4.1'
    

    At this point, I'm pretty sure 'wish' will work. But no guarantees.

    And there will also be a bunch of files left over from any previous installation of TCL/TK. Maybe someday I'll clean them up. Probably not till I get the new Red Hat 4, tho...(I've got to remember to tar & gzip my 'home' tree before that install!)

    Earl


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    "Linux Gazette...making Linux just a little less scary! "


    Welcome to The Linux Weekend Mechanic!

    Published in the November Edition of the Linux Gazette (#11)

    Copyright (c) 1996 John M. Fisk <fiskjm@ctrvax.vanderbilt.edu>
    The Linux Gazette is Copyright(c) 1996 Specialized Systems Consultants Inc.


    You've made it to the weekend and things have finally slowed down. You crawl outa bed, bag the shave 'n shower 'cause it's Saturday, grab that much needed cup of caffeine (your favorite alkaloid), and shuffle down the hall to the den. It's time to fire up the Linux box, break out the trusty 'ol Snap-On's, pop the hood, jack 'er up, and do a bit of overhauling!

    Time to become the Linux Weekend Mechanic!


    Table of Contents


    And Just What Is the Linux Weekend Mechanic...?

    Glad you asked... :-)

    After a very busy year creating, writing, editing, proofing, and producing the first eight issues of the Linux Gazette I'm happy to say that it's been turned over to the kind folks at the Linux Journal who will be continuing its production. My special thanks to Phil Hughes, the producer of the Linux Journal who first broached the subject of taking over the Gazette when the time commitment was getting out of hand, AND to Marjorie Richardson, the new editor of the Gazette whose wit and wisdom should ensure that the LG will continue to flourish.

    And now that someone else is doing the day to day management of the Gazette I'm back to reading, writing, and tinkering -- and this is what the Weekend Mechanic is all about.

    I'd like to try to put together a monthly column for the Gazette that deals with customizing and running Linux on a personal, stand-alone (i.e., not directly networked) PC. The scope of topics may include things such as:

    Basically, it covers the topics that I've found interesting using Linux on my PC at home -- I've got a shiny new Cyrix P-166+ machine as of August of this year and have 'Net access via a dial-up PPP connection. So, since I'm writing from my own experiences, you can anticipate the types of topics I'd likely be covering. I should add one important proviso: Keep in mind that many of the suggestions and ideas are NOT useful or recommended in a networked or multi-user setting in which security is an issue!!

    Let me say this another way:

    Caveat Emptor!

    Because I have a stand alone box and a wife who absolutely hates using computers I'm the only one that has physical access to my machine. For this reason, security is not something that I've had to deal with. However, at MTSU, where I'm currently in school, we use both HP-UX machines and a number of P-133 machines running Red Hat 3.0.3 Linux with the 2.0 kernel upgrade. Security on these Linux boxes has been a VERY REAL issue of late -- if you're running Linux and someone else has potential access to your machine you'd be well advised to think twice before trying everything I might suggest. That's not to put a damper on anyone's enthusiasm, but having one's system hacked is a serious bummer.

    And now that that's been said, I really do hope that the information here will be useful or helpful. The more I use Linux the more I'm amazed at its depth and breadth and the range of tools and programs that are available. It is seriously fun!

    For this reason, I've decided to use the "Weekend Mechanic" motif. Thing is, if you're running Linux you've undoubtedly discovered that it takes more time to set up, configure, and fine-tune than most shrink-wrapped OS's. It's a "high needs" OS. Now, you could use one of those fancy-shmancy off-the-shelf Brand X OS's, but the question you have to ask yourself is...

    Do you really want to be see hanging around an OS that looks like it comes with training wheels...?!!

    I don't think so... ! ;-)

    So, if you're one of those "I'd rather have a '68 Pontiac with a big block V8, Rochester QuadraJet, Dualies, and a box of Snap-On's than anything else" kind of folks...

    Relax, you're in the right place. Welcome aboard :-)


    The Talk About Town...

    For anyone who's been regularly reading the comp.os.linux.* hierarchy you'll realize that there's been a LOT happening recently within the Linux community. Here's just a smattering of some things that you might find interesting as well as other odds-n-ends.

    Oh, and BTW...

    Happy Halloween!

    And now, back to the news...

    Caldera to release source code for DR DOS, CP/M, Novell DOS, and PalmDOS

    Yup, you read that right!

    Caldera has announced that it is in the process of a planned release of source code for DR DOS, CP/M, Novell DOS, and PalmDOS AND the beginning of a project which they are calling OpenDOS. The announcement stated a tentative date of the first quarter of 1997 for this to occur. Drop by and have a look. I think you'll find it interesting.

    If you've got the hard drive space and want to do a bit of hacking away at something new, here's an interesting opportunity.

    Did you know that there's a "FreeDOS" Project underway...?

    Yup, there's a group working on a freely available version of a DOS-like OS. You can find out more on what they're doing, how to get a copy of the current version, and how to contribute to this effort by checking out the FreeDOS home page at sunsite.unc.edu/pub/micro/pc-stuff/freedos/freedos.html.

    And speaking of new toys...

    StarOffice and Adobe beta software for Linux!

    StarOffice, a German software developer, has recently announced a freely available beta version of its StarOffice suite of productivity applications for the Linux OS. This is a seriously cool application suite that has a LOT of high end features. One caveat: you'll need a copy of the Motif libraries in order to run these applications. If you don't have motif, then you might want to try some gentle arm-twisting to see whether the folks at StarOffice would release a statically-linked version.

    For those of you with Motif, you can get the installation "disk sets" at any sunsite mirror such as:

    GA Tech's FTP Linux Archive

    in their /pub/linux/apps/staroffice/ directory. Also, Adobe has just announced a beta version of their Adobe Acrobat 3.0 reader for the Linux OS. You can find out the particulars of how to obtain a copy at:

    ADOBE's WWW site

    in their /acrobat/readstep.html page. I just got a copy of this and the installation was a breeze. At least on my system, load time was about what all motif-based apps tend to be (read: "somewhat slow") but performance thereafter was really quite good.

    If you're interested in having a peek at a screen shot with one of the distributed pages, here's a look at it:

    ADOBE Acrobat 3.0 screen dump (~40K) 810x630

    Keep in mind that the official stance is that it is only supported under the Yggdrasil Fall '95 Linux distribution. However, under my 'ol Slackware '96 it runs just fine... Also, you'll notice the subtle subliminal message in the titlebar... :-)

    And speaking of distributions...

    Slackware '96 is out and Red Hat Rembrandt is on its way!

    Now that the Linux kernel 2.0 is out and, for most folks, ELF is in, you'll find a number of much-awaited distributions with the 2.0 kernel and necessary development utilities. If you've been waiting to upgrade then now's the time!

    There is a growing number of very good Linux distributions available, many of which now incorporate the recent kernel and development set upgrades. I've just installed Slackware '96 (AKA Slackware 3.1) which I received from the folks at

    Walnut Creek

    who are the official distributors of Slackware Linux. Since it was also my birthday recently my wife just got me a copy of the August, 1996 Linux Developer's Resource 6-CD Set from

    InfoMagic

    Both of these are VERY nice sets that run in the $25 - $40 range and include a boatload of program sources from the usual linux FTP archive sites (sunsite.unc.edu, tsx-11.mit.edu, prep.ai.mit.edu, and so forth). Those of you who are on the monthly Mo' Linux mailing from

    Pacific HiTech

    will have just gotten a copy of the Slackware '96 CD with the September edition of Mo' Linux. Pacific HiTech (PHT) has a VERY nice service which offers a monthly CD full of all kinds of goodies including the most recent kernel sources, new programs and updates from Sunsite's Incoming dir, the latest GNU stuff including GCC and its accessories, and so forth. They take special requests and have recently included things such as the huge Perl archives, Tcl/Tk archives, Python archives, the Java Development Kit (JDK), and so forth. Also, there are regular Red Hat RPM and SRPM updates each month for those running Red Hat systems.

    And keep in mind that Red Hat's Rembrandt just hit beta release! This is their kernel 2.0 version and should be ready for regular release soon! You can get a copy of Rembrandt beta at the

    Red Hat WWW site

    as well as find all kinds of nifty info and links in their "Linux Info" page.

    Since Christmas is just around the corner, I'm thinking about writing up a small "Wish List" of tools and toys that you might want to put on your Beloved's "Get For Me List". The small hoard of books and CD's on the bookshelf is growing -- next month I'd like to do a short piece on things that I've found useful. *YMMV.

    *YMMV: "Your Mileage May Vary"

    Here's the patch for the sysklog bug in Slackware '96

    Those of you who've just installed Slackware 3.1 may have run into the same rather frustrating bug in the sysklog package that I did. After a recent installation, I found that syslogd would dump core after running pppd. About that time, postings to comp.os.linux.setup and misc suggested that this was a problem with the distribution and not with the hardware I was running.

    So, after a request for help to Dr. Greg Wettstein, the maintainer of the sysklog package, I received the following patch from him that remedied the situation. For those of you needing this, you can get a copy of the message which Greg sent. Just load it and save it to disk as a text file. You'll also need a copy of the sysklog sources to recompile the program. Here's what you'll need:

    Sysklog patch from G. Wettstein (~70K)

    MANY thanks to Greg W. and the rest of the folks who've worked on this program.

    I mentioned in the above announcement about StarOffice that you'll need a copy of the motif libraries to run this product (at least while it is distributed as shared-library executables). I really want to put in a good word for the folks at Red Hat Software Inc. and for their version of Red Hat Motif 2.0.

    When I went to the Linux Expo '96 this past April, I had a seriously fun time meeting folks, chatting, perusing the various book and vendor tables, and sitting in on the various talks. If you missed it this past year and you can drive, fly, Amtrak, run, jog, walk, or crawl your way to Raleigh, North Carolina next Spring, then you won't want to miss it!! I don't know for sure if they're planning another Expo, but if so, you really don't want to miss it.

    Anyway, while I was there I bought a copy of Red Hat Motif 2.0 and have been using it ever since. Now, I know that one of the FAQ's to the various comp.os.linux.**** groups is "HELP! Which Motif should I get?!!", or something to that effect. There usually ensues a modestly impassioned discussion about the merits and drawbacks of one's recent Motif purchase.

    For the record, I'd like to say that I've been extraordinarily pleased with this product. It comes with a very complete User's Manual which covers installation and configuring the Motif Window Manager (mwm). The CD also contains the Motif libraries, development tools, and documentation in both *.tar.gz format and as RPM's.

    Installation was a breeze using rpm version 2.0 and I've been compiling motif stuff without a hitch ever since. This includes programs such as mosaic, plan, llnlXFtp, llnlXDir, xtar, xmcalendar, xmdiary, XEmacs, GVim, and so forth. Compiling with the Motif libs has been completely transparent and using shared, pre-compiled binaries (such as StarOffice) has been flawless.

    At a time when there has been a LOT of negative press towards a variety of individuals and institutions, let me offer a very heartfelt positive comment:

    To the folks at Red Hat, thanks for a VERY nice product!

    (FYI, I just got a copy of the most recent flyer from Surplus Direct, a distributor of, you guessed it..., surplus hardware and software. On page 17 of the flyer they offer the Red Hat's MOTIF for LINUX V2.0 CD for $99.99. Not a bad deal... :-) You can call them at 1-800-753-7877 U.S. or 541-387-6000 International. They even have a nifty web page which you can check out at http://www.surplusdirect.com)


    More tar Tricks!

    OK, ready for a quiz...? Close your books, put away your notes, and answer the following question:

    Without looking at the man page, (a) What does the following command do? and (b) Why on earth would you use it in the first place?

    	tar -tvzf file.tar.gz |tr -s ' ' |cut -d ' ' -f8 |less
    

    Don't peek...!

    (If this were a REAL web page, you'd click on a tiny icon of a music box and have it do RealAudio of that jingle from Jeopardy while an accompanied set of animated icons amuses you. But since I'm not that bright, you'll have to hum quietly to yourself and decide when you're tired of waiting... :-)

    Figured it out?

    If you guessed that it uses tar to do an archive listing on a tar'd and GNU gzip'd archive, then you'd be warm.

    If you guessed that it uses tar to do an archive listing on a tar'd and GNU gzip'd archive and then piped the output to the GNU tr utility which would translate multiple instances of the space character into a single space character, then you'd be even warmer.

    If you guessed that it uses tar to do an archive listing on a tar'd and GNU gzip'd archive and then piped the output to the GNU tr utility which would translate multiple instances of the space character into a single space character and then pipe that output to the GNU cut utility which would use that single space as a field delimiter and then print only the data in field 8, then you'd be hot.

    And if you guessed that it uses tar to do an archive listing on a tar'd and GNU gzip'd archive and then piped the output to the GNU tr utility which would translate multiple instances of the space character into a single space character and then pipe that output to the GNU cut utility which would use that single space as a field delimiter and then print only the data in field 8 and then output all of that to the less pager so that you could view, search, edit, and optionally print the output, then you, my friend get to...

    Go to the head of your class! :-)

    Actually, I wouldn't have been able to guess this without peeking a bit, so don't feel bad if you didn't guess all of it correctly. But this answer only gives the answer to part (a). The real question you have to ask yourself is, "Why on earth would you do this in the first place?"

    Good question.

    I'll get to that in a moment, but first, let me ask a simple question: "How do you know what's actually inside a tar or tar+gzip archive without actually unarchiving it?" Now, you can always unarchive a tar.gz file and have a look at things but what if you really only wanted to see what was in it or just look at a single file in the archive. What do you do then?

    The answer lies, at least in part, with our funky little command line above.

    Let's see what we can do with this.

    The first thing you've all probably realized is that tar has a bazillion or so command line arguments so you can do almost anything with it. As you've guessed, using the "-t" option displays a listing of the files in the archive. If the archive has been compressed, then using the "-z" option will automatically uncompress the archive.

    So far, so good.

    Thing is, what you want to do is actually look at one of the files in that archive. Say you wanted to have a peek at the README file that came with some program. Seems silly to have to unarchive an entire (potentially HUGE) file just to see one item. Those of you who've used tar for a while will realize where I'm going with this. You see, another one of tar's nifty little options is the "-O" (which can also be invoked as --to-stdout) which causes tar to send the output directly to standard output: generally, your computer terminal. This is what we need to use to get a look at some file in the archive -- we'll have tar send it to stdout so we can view it. That way, we won't need to unarchive the file.

    The other piece of the puzzle involves how you get tar to unarchive a specific file within an archive. Again, you manual page readers will know that this is done by simply appending the filename(s) to the end of the argument. Now in case I'm starting to lose any of you, here's an example which should help clear things up.

    Say that I have some archive such as the a2ps program (which does ASCII -> PostScript conversion, BTW). To get a listing of the files in the archive all I have to do is:

    	tar -tvzf a2ps-4.5.23.src.tar.gz
    
    and this gives me the following output:
    drwxr-xr-x 11714/117         0 Sep  5 11:38 1996 a2ps-4.5.23/
    -rw-r--r-- 11714/117      7721 Sep  5 11:38 1996 a2ps-4.5.23/INSTALL
    -rw-r--r-- 11714/117      2281 Sep  5 11:38 1996 a2ps-4.5.23/README
    -rw-r--r-- 11714/117      1429 Sep  5 11:38 1996 a2ps-4.5.23/TODO
    -rwxr-xr-x 11714/117      4773 Sep  5 11:38 1996 a2ps-4.5.23/install-sh
    -rw-r----- 11714/117      3576 Sep  5 11:38 1996 a2ps-4.5.23/Makefile.in
    -rw-r--r-- 11714/117       907 Sep  5 11:38 1996 a2ps-4.5.23/config.h.in
    -rwxr-xr-x 11714/117     47767 Sep  5 11:38 1996 a2ps-4.5.23/configure
    -rw-r----- 11714/117      1415 Sep  5 11:38 1996 a2ps-4.5.23/configure.in
    -rw-r--r-- 11714/117     81240 Sep  5 11:38 1996 a2ps-4.5.23/a2ps.c
    -rw-r----- 11714/117     70081 Sep  5 11:38 1996 a2ps-4.5.23/a2ps.h
    -rw-r--r-- 11714/117     15348 Sep  5 11:38 1996 a2ps-4.5.23/afm.h
    -rw-r--r-- 11714/117     10482 Sep  5 11:38 1996 a2ps-4.5.23/a2ps.man
    
    So now, let's say that I want to have a look at what's in the README or the INSTALL file; well, now that you know that you send the output of tar to stdout you know you're golden! All you'd need to do is something like:
    	tar -xvzOf a2ps-4.5.23.src.tar.gz a2ps-4.5.23/README
    
    And, voila!, there's your file. The astute will immediately comment that piping that output to a pager such as more or less makes a lot more sense because now you can actually read more than just the last screen full of text.

    Note, too, that the basic command line was (in pseudocode):

    	tar -options archive.tar.gz path/fileToView
    
    Notice that you have to include the "a2ps-4.5.23/" portion and NOT just the name of the file.

    So, now we're getting somewhere!

    You can use the tar -tvzf FILENAME.tar.gz command line to get a directory listing of a tar archive and then use something like:

    	tar -xvzOf a2ps-4.5.23.src.tar.gz a2ps-4.5.23/README |less
    
    to actually view the file -- the tar file is intact, nothing is unarchived to disk, and you fingers never leave your hand!

    And now, let's pick up on our original question once again. Here's where that funky little command line becomes useful to use once again.

    Those of you who've done a bit of shell programming know that, fundamentally, every programmer is lazy at heart. That is to say, shell scripts are a VERY convenient way of saving yourself the bother of typing the same commands over and over again -- and this is one of those places where this is handy.

    Now that you know how to view a file from within a tar file without ever unarchiving the entire file, wouldn't it be handy to set up a shell script to do just that...?

    You know I wouldn't have asked this if I didn't already have an answer in mind... eh?

    Well, this is one of those things that I've started toying around with in the past couple days and while I haven't gotten anything written yet, that nifty little tar command at the top is part of the solution. You see, it would be quite handy to be able to do a listing of a tar archive, select one or more of the files, and then view them. The thing is, as I mentioned before, you have to give tar the full name of the file you wish to view -- including any path information. That is, if you'd tried to do:

    	tar -xvzOf a2ps-4.5.23.src.tar.gz README |less
    
    you'd have gotten an error message because there's no README file in the archive -- there is the file a2ps-4.5.23/README. See the difference? You have to have the a2ps-4.5.23/ prefix for tar to work correctly.

    So, can you think of a way to take the output of tar -- the file listing -- and generate a listing of just the filenames which you can pass back to tar. Again, remember that it has to include the entire path+name but cannot be the entire line, such as:

    -rw-r--r-- 11714/117      2281 Sep  5 11:38 1996 a2ps-4.5.23/README
    
    Somehow, we've got to strip away all the leading stuff and get only to the a2ps-4.5.23/README entry. So let's cut to the chase.

    One way to do this is using the method I mentioned above: using tar with the "-t" option displays a file listing. Next, you can use cut to access a single a column of data because, as you've all noticed, there are 8 fields of information in the above listing:

    PERMISSIONS GROUP/USER SIZE MONTH DAY HR:MIN YEAR PATH/FILENAME
    
    Now, you'll also notice that these are separated by a space and so you should be able to use this as a field separator. But if you try something like:
    	tar -tvzf a2ps-4.5.23.src.tar.gz |cut -d ' ' -f8
    
    what you end up with is:
    7721
    2281
    1429
    4773
    3576
    
    Sep
    1415
    Sep
    Sep
    Sep
    Sep
    
    So what went wrong!?

    Well, we used a space character as the field delimiter which was the correct thing to do. But have a look at the actual file listing. Notice that there is a single space between most, but not all, of the fields. Between the group/user field and the size field there is a variable number of spaces and there appears to be two spaces between SEP and 5. So, cut dutifully used a single space character as the field separator, but the result wasn't' what we expected.

    Hmmm... now what...?

    Well, there's another little mentioned but VERY useful utility called tr. It's a seriously handy little item that does, among other things, character translation. In this case, we can use it to truncate a series of one or more spaces into a single space (and THEN, cut should work correctly!).

    Now, is the light dawning? :-)

    We use tar to get the file listing, tr to truncate all the extraneous spaces into a single space character, and then pipe the whole thing through cut to get just the fields that we want. Doing this on the a2ps file, we get:

    a2ps-4.5.23/
    a2ps-4.5.23/INSTALL
    a2ps-4.5.23/README
    a2ps-4.5.23/TODO
    a2ps-4.5.23/install-sh
    a2ps-4.5.23/Makefile.in
    a2ps-4.5.23/config.h.in
    a2ps-4.5.23/configure
    a2ps-4.5.23/configure.in
    a2ps-4.5.23/a2ps.c
    a2ps-4.5.23/a2ps.h
    a2ps-4.5.23/afm.h
    a2ps-4.5.23/a2ps.man
    

    Pretty slick, eh?

    Now, we can pick any of these entries and if we pass them to tar using the "-O" option then the file gets printed to stdout. Pipe this output to less and we're golden!

    A tar file viewer!

    So why mention all of this?

    Well, first, because I'm toying around with ideas for a shell script that will do just this -- write a small program that will let me view individual files from a tar.gz archive. I've got a couple ideas floating around and may try using the dialog program for a console UI, or I might just go ahead and try this using tcl/tk.

    Second, I do this to point out one of the beauties of using Linux (or any UNIX type OS) and that is the use of pipes to connect any number of the myriad of utilities together into a powerful command. Using four programs and a bunch of pipes, we've seen how we can easily ready any file within a tar archive without having to uncompress the entire thing.

    That is seriously cool!

    Anyway, I've just started playing with this. Let me quickly mention, for those of you who already know and are waving your cyberhands in the air, that there is a very easy way to manipulate tar.gz files already -- and it's with a program that MOST Linux distributions already install: Midnight Commander.

    I cannot say enough good things about this program. I'm honestly not much of a file manager type user -- I really do prefer the command line for most file and directory operations. But, mc is different. I have absolutely fallen in love with this. It's very well designed, is quite mature, has a boatload of nifty features, AND it'll let you easily view and copy files from a tar.gz archive using its VFS (virtual file system).

    I've been wanting to do a write up on MC now for, quite literally, months and just haven't had the time to write a decent article -- one that really does it justice. Anyway, for those of you who are interested, all you have to do to access a tar.gz file is fire up mc, select the tar.gz file and either double click on it (if you're running gpm and have mouse support) or hit RETURN and it'll automatically unarchive the file into a VFS from which you can browse the archive just as though it were installed on your harddrive.

    The other application that'll let you do this is the xtar program -- a motif based app that I recently came across at the ftp.x.org archive. I honestly haven't seen this at sunsite or tsx-11 and I don't know that I've seen it any of the usual Linux distributions either. It's a VERY nice little app that let's you browse and view tar.gz archives.

    Anyway, try out mc or xtar if you want tar.gz browsing right now. But, let's see if we can't figure out a way to do something like this using shell scripting or tcl/tk. I'll let the interested work on this and, if I have any successes myself, I'll write this up in next month's issue.

    Til then, Happy Scripting!


    Basic File Information

    OK, quick question:

    Can you name 5 tools or utilities which you can use to get information about a file?

    I'm sure you can if you give it a bit of thought. You see, most of the time, if you've installed a system yourself then you have a pretty good idea about what's on it and (hopefully...) where things are. But what if you come across a cryptically named file (Hmmm... fancy that on a UNIX system... :-) in your /usr/bin directory and want to get a bit of information about it. Or, what if you know what it is that you're looking for, but just can't find it!

    Ok, so let's talk about a couple tools you can work with to get basic file information.

    The one's that I was thinking about included:

    Now, there are others, I'm sure, but these five basic utilities (seven if you count similar ones) will go quite a ways towards helping you get a handle on what's on your system.

    A look at ls

    Anyone's who's used Linux for more than..., Hmmm... about a day or so, has run across ls which does a directory listing. And, if you've ventured a peek at its manual page, your first reaction may have been one of incredulity at the bewildering number of command line options. Fear not. You really only need a couple of these on a routine basis (these are your friends) and the rest of these let you do all kinds of groovy and interesting things when you have nothing else to do but play with your directory listings (these are you great Aunt Fanny's half-sister's double cousin, twice removed... you know they're around, you just have no earthly idea as to what they do).

    So, you know that if you want to get basic information about a file, then the best place to start is with a directory listing. Using the "-l" option gives you a long listing which includes the file type (regular, directory, fifo, block, and so forth), number of hard links, user name, group name, size in bytes, timestamp (generally, the modification time), and the file name itself.

    You also know, I'm sure, that adding the "-a" displays all files, including all the so-called dot-files which begin with a period (.) and which are normally not displayed in a directory listing.

    Many Linux distributions also configure ls to use the "-F" option which print a suffix after each file to indicate what its basic type is:

    So, just using humble 'ol ls can give you quite a bit of information about your files. A couple of the more useful things that you can do with ls include using the "-t" option which sorts the directory contents by time. This is very useful if you happen to be in a directory such as /usr/bin that has a LOT of files and you're looking for something which you've recently added but can't recall the name. Using "ls -lt" causes all the newest files to, as it were, rise to the top of the list. If, however, you want to list the latest files last, no problem, mon, just add the "-r" option to the soup and you'll get a reversed listing by time (i.e., "ls -ltr").

    Yet another handy little option will let you find out when a file's status was last changed. The status includes things such as owner or group information or permissions. You can change these things without actually modifying the file itself. Generally, the time stamp indicates when a file was last modified, but if what you want to see is when a file's status was last changed, then use the "-c" option. Now, if you're wondering whether permissions or user/group information has been changed recently, then use "ls -ltrc" command to display the files which have changed status most recently at the end of the listing.

    Those are just a few of the things that you can do with ls. So, if you're stuck at home on some rainy Saturday afternoon and are tired of the Laverne And Shirley reruns, go amuse yourself -- read the ls manual page, write down all the options, and try them all out. At least there won't be commercial interruptions... :-)

    Using file

    Besides using ls with the "-F" option, there's another very handy utility called file which gives you a indication of what a file actually is.

    Every now and then, someone posts a message to one of the comp.os.linux groups asking about how they can determine whether a file is a.out or ELF (or something else, for that matter). If you really do have a mysterious file, then file is the utility for you.

    So, let's say that you've come across a file in your /usr/local/bin directory called "d2utxt" and it beats the pants off of you what this thing is. Well, you could try something like:

    	file /usr/local/bin/d2utxt
    
    I've actually got that file on my system and when I run this (from within VIM of course -- notice that my fingers never leave my hand... :-) I get:
    /usr/local/bin/d2utxt: Linux/i386 executable or impure executable (OMAGIC)
    
    OK, that lets me know that it's some kind of executable. So is it ELF or not? Well, let's run this on a file which I know is ELF and see what happens:
    	file /usr/bin/vi
    	/usr/bin/vim: ELF 32-bit LSB executable i386 (386 and up) Version 1
    
    So, there's your answer! It seems that the d2utxt program was, in fact, a.out format and vim is in our now familiar ELF format. So, if you're wondering what kind of executable format a file is in, this is your solution. And keep in mind that file recognizes a LOT more than simply executables. As an exercise, try running it on a plain text file, a shell script, a *.dvi file, a postscript file, a shared library file, and so forth. I won't go into the specifics of how file works its magic (no pun intended... honest!) but if you're interested, the manual page gives those details.

    Keep in mind that the file utility is a VERY useful tool to have at your disposal when you're writing shell programs that depend on knowing what a file's type is.

    For example, suppose that you decide to write a shell script to automate file printing. One of the things that your script will need to know is what type of file you are working with. Tex, DVI, PostScript, and plain text files get printed using quite different programs. Here's an ideal situation in which the file program will give you that information.

    Again, convince yourself of this by running file against several different file formats -- pretty impressive, eh?

    Finding Executables with type & which

    The next bit of information about a file that can often be quite useful is a rather simple one: "Where is it??!!"

    If you're trying to find an executable then this task is greatly eased by use of either which or type (if you're using the BASH shell). Either one of these will print the path to a give executable -- assuming, that is, that it is in your PATH statement. So, let's say that you wanted to find out where xdvi was located. Now, you could probably guess, but let's just say that you really were clueless and wanted to know. Well, if you tried something like the following you could find out:

    	which xdvi
    	/usr/X11/bin/xdvi
    
    	type xdvi
    	xdvi is /usr/X11/bin/xdvi
    
    Hmmm... that was pretty easy now, wasn't it? Both of these found our file in the /usr/X11/bin/ directory and the output was pretty similar. But before we call this an even draw, suppose that you try to do something like this:
    	type tarx
    	tarx is aliased to `tar -xvzf'
    
    	type exec
    	exec is a shell builtin
    
    Hmmm... interesting.

    I won't give you the output that happens when I run which on either of these because what happens is it prints an error message that states that it couldn't find it in... and then prints the entire search PATH. I'll let you try this one at home. Suffice it to say that if you're running the BASH shell, then using type gives you the added benefit of recognizing shell aliases and builtins in addition to executables.

    Very handy.

    Another useful little item that type can do for you is find duplicate executables. Now before you go scoffing, consider the fact that it is VERY easy to do a bit of "Do-It-Yourself" system upgrading and install a few programs. If you don't know that the program which you are installing has already been installed (but in a different directory) then you end up with two copies. So which one gets executed?

    Good question.

    Presuming that you don't use absolute path names for executables (e.g./usr/bin/vim) every time you want to start a program, then whichever executable is found first in your PATH statement. So, if you have two copies of elvis (one from an original installation and one from a new compile and install) then the one that is found first is executed.

    And how, do you suppose, I know this...?

    Believe me, I've done it :-)

    And the results can be impressively frustrating.

    Specifically, I had upgraded a version of Tcl/Tk a while back and when I ran all my favorite tcl/tk apps I started getting weird messages about version incompatibilities and so forth. So I recompiled and reinstalled and still got those annoying error messages. It was driving me crazy. Finally, I tried running type and noticed that the wish executable wasn't where I thought I'd installed it. The breakthrough came when I tried:

    	type -a wish
    	wish is /usr/local/bin/wish
    	wish is /usr/bin/wish
    
    Ah Ha!!

    You see, there had been an old copy of a previous version lying around and I had simply forgotten to delete/rename it. The old version was being found first but it was incompatible with the tcl scripts I was using. Renaming the old version cleared things up.

    So the moral of the story is that if want to ensure that you have only one copy of a program in the search PATH, then use type -a.

    Finding Files with find & locate

    OK, so now you know how to find executables... what if what you're looking for is NOT an executable? What then?

    Well, these next two utilities deserve an entire article (and, in fact, got just that in one of the recent issues of the Linux Journal. Both find and locate will allow you to search anywhere in your system for a given file. For the time being, I'm going to use a simple example.

    Suppose that I'm looking for a certain configuration file for the lynx program. I've discovered that lynx has a config file that will let me set various options -- but I don't know where this is located except that I have a hunch that it is somewhere in /usr/local/. Great! To find it, all we have to do is:

    	find /usr/local -name lynx* -print
    	/usr/local/bin/lynx
    	/usr/local/lib/lynx
    	/usr/local/lib/lynx/lynx.cfg
    	/usr/local/lib/lynx/lynx.hlp
    	/usr/local/lib/lynx/lynx.man
    	/usr/local/lib/lynx/lynx_help_main.html
    	/usr/local/lib/lynx.cfg
    	/usr/local/lib/lynx.cfg.color
    	/usr/local/man/man1/lynx.1
    	/usr/local/src/INSTALLED/lynx2-5FM.color.ELF.tgz
    	/usr/local/src/Incoming/lynx2-6.tar.gz
    	/usr/local/src/Incoming/lynx2-6.color.ELF.tgz
    	/usr/local/doc/lynx
    
    Yow! Bonanza!

    So there we go... find not only located our lynx configuration file but also found that there were duplicates! Interesting :-) So how do we do this for any file? Well, the basic pattern is:

    	find  -name  -print
    
    That is, the first argument is the directory from which to START looking. Find will automatically traverse all the subdirectories beneath this. So, if you wanted to scour your entire system, you just invoke find as:
    	find / -name lynx* -print
    

    The second argument is "-name" followed by the pattern of the file name you're looking for. And finally, the "-print" option specifies that find should print the results to stdout. Keep in mind, though, that the GNU version of find doesn't need the "-print" option -- it defaults to printing to standard out (your terminal :-).

    The other handy-dandy little tool is locate. If this has been set up correctly (that is, that the database of files is routinely updated) then it is a LOT faster to use than find if all you are looking for is a particular file name!

    To use it just invoke it as:

    	locate lynx
    	/home/fiskjm/.lynx-bookmarks
    	/home/fiskjm/.lynxrc
    	/usr/bin/lynx
    	/usr/doc/lynx
    	/usr/doc/lynx/about_lynx
    	/usr/doc/lynx/about_lynx/about_lynx-dev.html.gz
    	/usr/doc/lynx/about_lynx/about_lynx.html.gz
    	/usr/doc/lynx/about_lynx/COPYHEADER.gz
    	/usr/doc/lynx/about_lynx/COPYING.gz
    	/usr/doc/lynx/CHANGES.gz
    	/usr/doc/lynx/CHANGES2-3.gz
    	/usr/doc/lynx/CHANGES2-4.gz
    	/usr/doc/lynx/CMU.announce.gz
    	/usr/doc/lynx/CRAWL.announce.gz
    	/usr/doc/lynx/DESC.gz
    	/usr/doc/lynx/docs
    	/usr/doc/lynx/docs/README.html.gz
    	/usr/doc/lynx/docs/README.txt.gz
    	/usr/doc/lynx/docs/RFC-MAILCAP.txt.gz
    	/usr/doc/lynx/FM.announce.gz
    	/usr/doc/lynx/IBMPC-charsets.announce.gz
    	/usr/doc/lynx/INSTALLATION.gz
    	/usr/doc/lynx/lynx_help
    	/usr/doc/lynx/lynx_help/keystroke_commands
    	/usr/doc/lynx/lynx_help/keystroke_commands/bookmark_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/dired_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/edit_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/gopher_types_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/history_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/keystroke_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/movement_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/option_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/other_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/print_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/scrolling_help.html.gz
    	/usr/doc/lynx/lynx_help/keystroke_commands/xterm_help.html.gz
    	/usr/doc/lynx/lynx_help/lynx_help_main.html.gz
    	/usr/doc/lynx/lynx_help/Lynx_users_guide.html.gz
    	/usr/doc/lynx/PROBLEMS.gz
    	/usr/doc/lynx/README.gz
    	/usr/doc/lynx/RELEASE_STATEMENT.gz
    	/usr/doc/lynx/samples
    	/usr/doc/lynx/samples/jumpsUnix.html.gz
    	/usr/doc/lynx/samples/jumpsVMS.html.gz
    	/usr/doc/lynx/samples/lynx.cfg.gz
    	/usr/doc/lynx/samples/lynx.com.gz
    	/usr/doc/lynx/samples/mailcap.gz
    	/usr/doc/lynx/samples/mime.types.gz
    	/usr/doc/lynx/SOCKETSHR.announce.gz
    	/usr/doc/lynx/TCPWARE.announce.gz
    	/usr/doc/lynx/userdefs.h.gz
    	/usr/doc/lynx/VMSWAIS.announce.gz
    	/usr/lib/lynx
    	/usr/lib/lynx/lynx.cfg
    	/usr/lib/lynx/lynx.hlp
    	/usr/local/bin/lynx
    	/usr/local/doc/lynx
    	/usr/local/doc/lynx/LynxUser.guide.gz
    	/usr/local/lib/lynx
    	/usr/local/lib/lynx.cfg
    	/usr/local/lib/lynx.cfg.color
    	/usr/local/lib/lynx/keystroke_commands
    	/usr/local/lib/lynx/keystroke_commands/bookmark_help.html
    	/usr/local/lib/lynx/keystroke_commands/dired_help.html
    	/usr/local/lib/lynx/keystroke_commands/gopher_types_help.html
    	/usr/local/lib/lynx/keystroke_commands/history_help.html
    	/usr/local/lib/lynx/keystroke_commands/keystroke_help.html
    	/usr/local/lib/lynx/keystroke_commands/movement_help.html
    	/usr/local/lib/lynx/keystroke_commands/option_help.html
    	/usr/local/lib/lynx/keystroke_commands/other_help.html
    	/usr/local/lib/lynx/keystroke_commands/print_help.html
    	/usr/local/lib/lynx/keystroke_commands/scrolling_help.html
    	/usr/local/lib/lynx/keystroke_commands/xterm_help.html
    	/usr/local/lib/lynx/lynx.cfg
    	/usr/local/lib/lynx/lynx.hlp
    	/usr/local/lib/lynx/lynx.man
    	/usr/local/lib/lynx/LynxStartFile.html
    	/usr/local/lib/lynx/lynx_help_main.html
    	/usr/local/lib/lynx/Lynx_users_guide.html
    	/usr/local/lib/lynx/new_installs.html
    	/usr/local/lib/lynx/readme.html
    	/usr/local/man/man1/lynx.1
    	/usr/local/src/Incoming/lynx2-6.color.ELF.tgz
    	/usr/local/src/Incoming/lynx2-6.tar.gz
    	/usr/local/src/INSTALLED/lynx2-5FM.color.ELF.tgz
    	/usr/man/man1/lynx.1.gz
    	/var/log/packages/lynx
    	/var/X11R6/lib/config/lynx.cf
    
    YIKES!!

    On my system, this took about 1 second to display and it printed the location of EVERY instance of "lynx". Now, for some reason which I haven't figured out yet why this doesn't work the way the manual page indicates that it should. Maybe your system works better than mine... :-)

    The way that it should work is that you give locate a filename pattern which it searches for. Such as:

    	locate lynx*
    

    However, when I tried this on my system, it simply returned nothing. Using locate lynx worked like a charm.

    Got me.

    Keep in mind, too, that find is a seriously powerful search tool that has all kinds of options that let you do sophisticated searches. You really do need to check out the article that recently appeared in the Linux Journal. I'm sorry that I can't recall offhand which issue it was in, but the LJ has put a number of articles online on the Web and so you might try looking at their web site for information.

    Finding Shared Library Information with ldd

    Finally, here's a nifty little trick that let's you see what shared libraries a file is linked against. If you've ever wondered whether a file was statically or dynamically linked, then here's your answer!

    Just invoke ldd with the name of the executable and it will print out a listing of all the libraries that it is linked against AND where these libraries are located on your system.

    So, for example, running ldd against gvim (Graphical VIM), I get the following output:

    	libXm.so.2 => /usr/X11R6/lib/libXm.so.2
    	libXt.so.6 => /usr/X11R6/lib/libXt.so.6
    	libSM.so.6 => /usr/X11R6/lib/libSM.so.6
    	libICE.so.6 => /usr/X11R6/lib/libICE.so.6
    	libXext.so.6 => /usr/X11R6/lib/libXext.so.6
    	libX11.so.6 => /usr/X11R6/lib/libX11.so.6
    	libncurses.so.3.0 => /lib/libncurses.so.3.0
    	libc.so.5 => /lib/libc.so.5.3.12
    	libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4
    

    pretty nifty, eh?

    Anyway, if you've ever picked up a pre-compiled binary and it just simply won't execute, try running ldd against it to ensure that all the needed libraries are being found.

    So, that should do it!

    I'm sure that there are many other tricks and means for prying information out of an obscure file. As a parting note, if you've ever wondered just exactly what a file does then you can try a couple things. The first is to see whether there is a manual page for the program. That's usually a good source of information. The other maneuver you can try is simply something like:

    	prog --help
    

    Presuming the program's name was "prog", then frequently using a command line option such as "--help" will print a help message. Also, a number of programs will, if they don't recognize a command line option, go ahead and print a short usage statement anyway. If you're in the dark, give it a whirl!


    If you'd like, drop me a note at:

    John M. Fisk <fiskjm@ctrvax.vanderbilt.edu>

    Version Information:
    $Id: issue11.html,v 1.2 2002/10/09 22:24:16 lg Exp $


    [ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next


    Linux Gazette

    Copyright © 1996 Specialized Systems Consultants, Inc.
    For information regarding copying and distribution of this material see the Copying License.


    The Back Page


    Contents:


    About This Month's Authors


    Larry Ayers

    Larry Ayers lives on a small farm in northern Missouri, where he is currently engaged in building a timber-frame house for his family. He operates a portable band-saw mill, does general woodworking, plays the fiddle and searches for rare prairie plants, as well as growing shiitake mushrooms. He is also struggling with configuring a Usenet news server for his local ISP.

    Earl Brown

    Earl Brown has been involved in the Internet for 4 or 5 years, and got into Unix when he realized that Unix helped start the Internet and that it is the future of the Internet, as well. He loves LINUX as an operating system, because "The fact that it's free doesn't hurt, but the important thing is that I think it's the best OS out there." He is a computer programmer, an Internet specialist. He has fantasies/dreams about becoming a writer and a college teacher. For more of his work, see http://www.lvinet.com/~gleep/CompKnow/CompIdx.htm. His personal web page can be found at http://www.enol.com/~gleep/.

    John M. Fisk

    John Fisk is most noteworthy as the former editor of the Linux Gazette. After three years as a General Surgery resident and Research Fellow at the Vanderbilt University Medical Center, John decided to "hang up the stethoscope", and pursue a career in Medical Information Management. He's currently a full time student at the Middle Tennessee State University and hopes to complete a graduate degree in Computer Science before entering a Medical Informatics Fellowship. In his dwindling free time he and his wife Faith enjoy hiking and camping in Tennessee's beautiful Great Smoky Mountains. He has been an avid Linux fan, since his first Slackware 2.0.0 installation a year and a half ago.

    Michael J. Hammel

    Michael J. Hammel, is a transient software engineer with a background in everything from data communications to GUI development to Interactive Cable systems--all based in Unix. His interests outside of computers include 5K/10K races, skiing, Thai food and gardening. He suggests if you have any serious interest in finding out more about him, you visit his home pages at http://www.csn.net/~mjhammel. You'll find out more there than you really wanted to know.

    Phil Hughes

    Phil Hughes is the publisher of Linux Journal, and thereby Linux Gazette. As an employer, Phil is "Vicious, Evil, Mean, & Nasty, but kind of mellow" as a boss should be. He dreams of permanently tele-commuting from his home on the Pacific coast of the Olympic Peninsula.


    Not Linux


    Thanks to all our authors, not just the ones above, but also those who wrote giving us their tips and tricks and making suggestions. Thanks also to our new mirror sites.

    Since I've chosen to celebrate Halloween in this issue, I'll include a few Halloween and weird links in hopes that they will not disappear on November 1.

    If you would like some personal information about me, clicking on my name below will take you to my home page. It's getting jazzier by the moment.


    Marjorie L. Richardson
    Editor, Linux Gazette gazette@ssc.com


    [ TABLE OF 
CONTENTS ] [ FRONT 
PAGE ]  Back


    Linux Gazette, http://www.ssc.com/lg/
    This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com