Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

# cal: nicer interface to /usr/bin/cal

case $# in

0) set `date`; m=$2; y=$6 ;; # no args: use today

1) m=$1; set `date`; y=$6 ;; #1 arg: use this year

*) m=$1; y=$2 ;; #2 args: month and year

esac

case $m in

jan*|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 year

esac

/usr/bin/cal $m $y # run the real one

3.8.8

calendar1

# calendar: version 1 -- today only

awk <$HOME/calendar '

 BEGIN { split("'"`date`"'", date) }

 $1 == date[2] && $2 == date[3]

' | mail $NAME

3.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 $NAME

3.8.10

calendar3

# calendar: version 3 -- today and tomorrow

awk <$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 $NAME

3.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)

 int argc;

 char *argv[];

{

 struct stat buf;

 char *name, *getlogin;

 int lastsize = 0;

 progname = argv[0];

 if ((name = getlogin) == NULL)

error("can't get login name", (char*)0);

 if (chdir(maildir) == -1)

error("can't cd to %s", maildir);

 for (;;) {

if (stat(name, &buf) == -1) /* no mailbox */

buf.st_size = 0;

if (buf.st_size > lastsize)

fprintf(stderr, "\nYou have mail\007\n");

lastsize = buf.st_size;

sleep(60);

 }

}

#include "error.c"

3.8.13

checkmail.sh

# checkmail: watch mailbox for growth

PATH=/bin:/usr/bin

  • Читать дальше
  • 1
  • ...
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: