Re: A challenge for UNIX wizards
Article: 7887 of alt.hackers From: and1000@thor.cam.ac.uk (Austin Donnelly) Newsgroups: alt.hackers Subject: Re: A challenge for UNIX wizards Date: 26 May 1995 12:28:19 GMT Organization: University of Cambridge, England Lines: 85 Approved: and1000@cam.ac.uk Message-ID: 3q4hh3$5@lyra.csx.cam.ac.uk Reply-To: and1000@cam.ac.uk NNTP-Posting-Host: hammer.thor.cam.ac.uk Status: RO
In article <D95J9o.HCI@nntpa.cb.att.com>,
C Matthew Curtin <cmcurtin@clipper.cb.att.com> wrote:
>In article <3q185g$3je@lll-winken.llnl.gov>,
>Sam Trenholme <set@oryx.llnl.gov> wrote:
>
>>Ok guys, is there a way of doing this without using a temporary file:
>>
>>ls | awk 'BEGIN{FS="."}{print "mv "$0"
"$1".1"}' > l;chmod 700 l;l;rm l
>>
>>(The above made a list of files, foo.man, bar.man, etc. have the names
>>foo.1, bar.1, etc)
>
>Just to make sure I understand: You want to take a directory full of
>files names something.man and turn them all into something.1, without
>using any temp files? That's easy :-)
>
>ObMiniHack:
>We're assuming ksh (or at least sh) here... Just type this off of the
>command line:
>
>for x in `ls *.man`
>do
>mv $x `ls $x | sed s/\.man/\.1/g`
>done
>
Yup - but your one costs 3N + 1 process invokations for N filenames.
Mine cost N :)
ObHack:
backdrop - a script to change my backdrop automatically. But, it
picks up the jpegs from another computer since I've got such a tight
quota on my main machine:
---- backdrop -------
set `randline ~/.background_pic_list`
file=$1
shift
opts=$*
if [ -r $file ]; then
xv -quit -ncols 128 $opts $file
else
# try & grab it from myrddin
base=`basename $file`
rcp myrddin.chu.cam.ac.uk:~/backgrounds/$file
/home/and1000/pics/myrddin/$base
if [ -r /home/and1000/pics/myrddin/$base ]; then
xv -quit -ncols 128 $opts /home/and1000/pics/myrddin/$base
rm -f /home/and1000/pics/myrddin/*
else
xsetroot -solid midnightblue
fi
fi
------------------------
---- randline ---------
#!/bin/bash
# REQUIRES BASH!
if [ $# != 1 ]; then
echo <<EOT
Usage: $0 <filename>
Prints a random line from <filename> to stdout
EOT
exit 1
fi
filename=$1
set `wc -l $filename`
lines=$1
# Pick one...
line=$[ ( $RANDOM % $lines ) + 1 ]
head -$line $filename | tail -1
--------------------
Austin
_ ___ ________ _ _ ________________________________________________
/ _ \ _ _ __| |_(_)_ _ Austin Donnelly
| _ | || (_-< _| | ' \ Pembroke College, Cambridge
|_| |_|\_,_/__/\__|_|_||_| and1000@cam.ac.uk
---------------------------------------------------------------------