Path: xanth!nic.MR.NET!hal!ncoast!allbery
From: ken@cs.rochester.edu (Ken Yap)
Newsgroups: comp.sources.misc
Subject: v05i047: ask (quick & dirty sh version of K&P pick)
Message-ID: <8811090439.AA11332@elm.cs.rochester.edu>
Date: 10 Nov 88 02:07:50 GMT
Sender: allbery@ncoast.UUCP
Reply-To: ken@cs.rochester.edu (Ken Yap)
Lines: 109
Approved: allbery@ncoast.UUCP

Posting-number: Volume 5, Issue 47
Submitted-by: "Ken Yap" <ken@cs.rochester.edu>
Archive-name: ask.sh

[Is it legal for someone to type in pick.c and post it?  If so, it may be a
good idea....  ++bsa]

In a moment of need I cooked this up in a jiffy. Probably everybody has
written something like this (my friend tells me it's like pick in K+P),
but I couldn't find a similar program on my system.

An excerpt from the man page:

Ask writes its arguments one at a time on standard error, and prompts
for a reply.  A response beginning with y or Y selects that argument to
be printed to standard output, anything else rejects it.

Ask is useful for interactively selecting arguments for a command from
a wildcard specification.

#!/bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #!/bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	ask.1
#	ask.sh
# This archive created: Tue Nov  8 23:31:50 1988
# By:	Ken Yap ()
export PATH; PATH=/bin:$PATH
echo shar: extracting "'ask.1'" '(779 characters)'
if test -f 'ask.1'
then
	echo shar: over-writing existing file "'ask.1'"
fi
cat << \SHAR_EOF > 'ask.1'
.TH ASK 1 "7 November 1988"
.SH NAME
ask \- interactively select arguments
.SH SYNOPSIS
.B ask
[
.B \-s
string ]
.I argument \fB.\|.\|.\fP 
.SH DESCRIPTION
.I ask
writes its arguments one at a time on standard error, and prompts
for a reply.
A response beginning with y or Y selects that argument to be printed
to standard output, anything else rejects it.
.PP
.I ask
is useful for interactively selecting arguments for a command
from a wildcard specification.
.SH OPTIONS
.IP \fB\-s\fP
The argument following is the first part of each prompt.
.SH EXAMPLE
Assume your directory contains the files a b c and d:
.PP
.nf
% cp `ask -s copy *` /dest
copy a? y
copy b?
copy c? y
copy d?
.fi
.sp
The result is that cp a c /dest is executed.
.SH AUTHOR
Ken Yap (University of Rochester)
SHAR_EOF
if test 779 -ne "`wc -c 'ask.1'`"
then
	echo shar: error transmitting "'ask.1'" '(should have been 779 characters)'
fi
echo shar: extracting "'ask.sh'" '(305 characters)'
if test -f 'ask.sh'
then
	echo shar: over-writing existing file "'ask.sh'"
fi
cat << \SHAR_EOF > 'ask.sh'
#!/bin/sh
# ask [ -s string ] args
# prints to stdout those args selected with a [yY]* response from user
case "x$1" in
x-s)	prompt=$2; shift; shift ;;
esac
for i
do
	case "x$prompt" in
	x)	;;
	*)	1>&2 echo -n "$prompt " ;;
	esac
	1>&2 echo -n "$i? "
	read ans
	case $ans in
	y*|Y*)	echo $i ;;
	esac
done
SHAR_EOF
if test 305 -ne "`wc -c 'ask.sh'`"
then
	echo shar: error transmitting "'ask.sh'" '(should have been 305 characters)'
fi
chmod +x 'ask.sh'
#	End of shell archive
exit 0
