3.8.4
backwards# backwards: print input in backward line orderawk ' { line[NR] = $0 }END { for (i = NR; i > 0; i--) print line[i] } ' $*3.8.5
badpick.cpick(s) /* offer choice of s */ char *s;{ fprintf("%s? ", s); if (ttyin() == 'y') printf("%s\n", s);}3.8.6
bundle# bundle: group files into distribution packageecho '# To unbundle, sh this file'for ido echo "echo $i 1>&2" echo "cat >$i <<'End of $i'" cat $i echo "End of $i"done3.8.7
cal# cal: nicer interface to /usr/bin/calcase $# in0) set `date`; m=$2; y=$6 ;; # no args: use today1) m=$1; set `date`; y=$6 ;; #1 arg: use this year*) m=$1; y=$2 ;; #2 args: month and yearesaccase $m injan*|Jan*) m=1 ;;feb*|Feb*) m=2 ;;mar*|Mar*) m=3 ;;apr*|Apr*) m=4 ;;may*|May*) m=5 ;;jun*|Jun*) m=6 ;;jul*|Jul*) m=7 ;;aug*|Aug*) m=8 ;;sep*|Sep*) m=9 ;;oct*|Oct*) m=10 ;;nov*|Nov*) m=11 ;;dec*|Dec*) m=12 ;;[1-9]|10|11|12) ;; # numeric month*) y=$m; m="" ;; # plain yearesac/usr/bin/cal $m $y # run the real one3.8.8
calendar1# calendar: version 1 -- today onlyawk <$HOME/calendar ' BEGIN { split("'"`date`"'", date) } $1 == date[2] && $2 == date[3]' | mail $NAME3.8.9
calendar2# calendar: version 2 -- today only, no quotes(date; cat $HOME/calendar) |awk ' NR == 1 { mon = $2; day = $3 } # set the date NR > 1 && $1 == mon && $2 == day # print calendar lines' | mail $NAME3.8.10
calendar3# calendar: version 3 -- today and tomorrowawk <$HOME/calendar ' BEGIN { x = "Jan 31 Feb 28 Mar 31 Apr 30 May 31 Jun 30 " \ "Jul 31 Aug 31 Sep 30 Oct 31 Nov 30 Dec 31 Jan 31" split(x, data) for (i = 1; i < 24; i += 2) { days[data[i]] = data[i+1] nextmon[data[i]] = data[i+2] } split("'"`date`"'", date) mon1 = date[2]; day1 = date[3] mon2 = mon1; day2 = day1 + 1 if (day1 >= days[mon1]) { day2 = 1 mon2 = nextmon[mon1] } } $1 == mon1 && $2 == day1 || $1 == mon2 && $2 == day2' | mail $NAME3.8.11
cat0.c/* cat: minimal version */#define SIZE 512 /* arbitrary */main() { char buf[SIZE]; int n; while ((n = read(0, buf, sizeof buf)) > 0) write(1, buf, n); exit(0);}3.8.12
checkmail.c/* checkmail: watch user's mailbox */#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>char *progname;char *maildir = "/usr/spool/mail"; /* system dependent */main(argc, argv)