Can use a hint or two with a 'bash' script... I've just downloaded and installed the basic 5 or 6 meg Hamm distribution of Debian. Couldn't get it to see the modem, (due to a non-Hamm problem, it turned out the ISA PNP modem had switched configs, when I'd recently flashed the BIOS), and was trying to make do with what was available, sort of as a challenge, or puzzle.
I tried to read the available help files, but there was no 'less' in this distrib, and most of the time 'more' didn't work right. Having played with muLinux, (a small 2-disk Italian distrib with X window, that stays small by using odd little scripts), I figured this was a good time to write a 'less' script, or just a crude reader. I figured I'd use 'vi', as that already did paging. So I wrote a script to echo a header to a tempfile, (which said something like "Press ':q' to quit", in case I forgot how to use 'vi'), append the file named in $1 to this tempfile, and run 'vi' to view it. Finally, after leaving 'vi', it deletes the tempfile. The tempfile would insure 'vi' wouldn't change the original. It worked. Then I wanted to be able pipe stuff to this viewer. This turned out to be The Puzzle. Here's a simplified code snippet that doesn't do what I want: <snip> 1: while read line # read lines from standard input 2: do 3: echo $line >> $$.mycat.tmp # Append them to a temp file. 4: done 5: vi $$.mycat.tmp # view the temp file with 'vi'. <snip> If this snippet were called 'mycat', and run like this: "ls -a | mycat" I expected it to show a directory listing in 'vi'. Doesn't. What apparently happens is that standard input is piped to 'vi', which then exits by itself. This is a guess, based on the same thing happening when I type: "ls -a | vi" After the snippet is done, $$.mycat.tmp does contain the desired piped directory. I supposed there'd be no standard input left by line #5. That is, the 'read' loop would use it up. 'vi' seems to think differently. What I'm trying to learn is not so much how to pipe input directly to 'vi', (though that would be OK too), but rather how to make 'read' use up all of standard input, as so NOT to pipe input to 'vi'. (Assuming this is indeed what's happening.) (Im)possible? Clues? Is this on-topic?