UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
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("%sn", 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)
