Брайан Керниган - UNIX — универсальная среда программирования

Здесь есть возможность читать онлайн «Брайан Керниган - UNIX — универсальная среда программирования» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1992, ISBN: 1992, Издательство: Финансы и статистика, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

UNIX — универсальная среда программирования: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «UNIX — универсальная среда программирования»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
.
Для программистов-пользователей операционной системы UNIX.

UNIX — универсальная среда программирования — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «UNIX — универсальная среда программирования», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

3.8.13 checkmail.sh

# checkmail: watch mailbox for growth

PATH=/bin:/usr/bin

MAIL=/usr/spool/mail/`getname` # system dependent

t=${1-60}

x="`ls -l $MAIL`"

while :

do

y="`ls -l $MAIL`"

echo $x $y x="$y"

sleep $t

done | awk '$4 < $12 { print "You have mail" }'

3.8.14 cp.c

/* cp: minimal version */

#include

#define PERMS 0644 /* RW for owner, R for group, others */

char *progname;

main(argc, argv) /* cp: copy f1 to f2 */

int argc;

char *argv[];

{

char buf[BUFSIZ];

progname = argv[0];

if (argc != 3)

error("Usage: %s from to", progname);

if ((f1 = open(argv[1], 0)) == -1)

error("can't open %s", argv[1]);

if ((f2 = creat(argv[2] , PERMS)) == -1)

error("can't create %s", argv[2]);

while ((n = read(f1, buf, BUFSIZ)) > 0)

if (write(f2, buf, n) != n)

error("write error", (char*)0);

exit(0);

}

#include "error.c"

3.8.15 doctype

# doctype: synthesize proper command line for troff

echo -n "cat $* | "

egrep -h '^\.(EQ|TS|\[|PS|IS|PP)' $* |

sort -u | awk '

/^\.PP/ { ms++ }

/^\.EQ/ { eqn++ }

/^\.TS/ { tbl++ }

/^\.PS/ { pic++ }

/^\.IS/ { ideal++ }

/^\.\[/ { refer++ }

END {

if (refer > 0) printf "refer | "

if (pic > 0) printf "pic | "

if (ideal > 0) printf "ideal | "

if (tbl > 0) printf "tbl | "

if (eqn > 0) printf "eqn | "

printf "troff "

if (ms > 0) printf "-ms"

printf "\n"

}'

3.8.16 double

awk '

FILENAME != prevfile { # new file

NR = 1 # reset line number

prevfile = FILENAME

}

NF > 0 {

if ($1 == lastword)

printf "double %s, file %s, line %d\n" ,$1,FILENAME,NR

for (i = 2; i <= NF; i++)

if ($i == $(i-1))

printf "double %s, file %s, line %d\n" ,$i, FILENAME ,NR

if (NF > 0)

lastword = $NF

}' $*

3.8.17 efopen.c

FILE *efopen(file, mode) /* fopen file, die if can't */

char *file, *mode;

{

FILE *fp, *fopen();

extern char *progname;

if ((fp = fopen(file, mode)) != NULL)

return fp;

fprintf (stderr, "%s: can't open file %s mode %s\n",

progname, file, mode);

exit(1);

}

3.8.18 error.c

error(s1, s2) /* print error message and die */

char *s1, *s2;

{

extern int errno, sys_nerr;

extern char *sys_errlist[], *progname;

if (progname)

fprintf(stderr, "%s: ", progname);

fprintf(stderr, s1, s2);

if (errno > 0 && errno < sys_nerr)

fprintf (stderr, " (%s)", sys_errlist[errno]);

fprintf(stderr, "\n");

exit(1);

}

3.8.19 field1

awk '{ print $'$1' }'

3.8.20 field2

awk "{ print \$$1 }"

3.8.21 fold

# fold: fold long lines

sed 's/\(->/ /g' $* | # convert tabs to spaces

awk '

BEGIN {

N = 80 # folds at column 80

for (i = 1; i <= N; i++) # make a string of blanks

blanks = blanks " "

}

{ if ((n = length($0)) <= N)

print

else {

for (i = 1; n > N; n -= N) {

printf "%s\\\n", substr($0, i ,N)

i += N;

}

printf "%s%s\n", substr(blanks, 1, N-n), substr($0, i)

}

} '

3.8.22 frequent

cat $* |

tr -sc A-Za-z '\012' |

sort |

uniq -с |

sort -n |

tail |

5

3.8.23 frequent2

sed 's/[ \(->][ \(->]*/\

/g' $* | sort | uniq -с | sort -nr | sed 10q

3.8.24 get

# get: extract file from history

PATH=/bin:/usr/bin

VERSION=0

while test "$1" != ""

do

case "$1" in

-i) INPUT=$2; shift ;;

-o) OUTPUT=$2; shift ;;

-[0-9]) VERSION=$1 ;;

-*) echo "get: Unknown argument $i" 1>&2; exit 1 ;;

*) case "$OUTPUT" in

"") OUTPUT=$1 ;;

*) INPUT=$1.H ;;

esac

esac

shift

done

OUTPUT=${OUTPUT?"Usage: get [-o outfile] [-i file.H] file"}

INPUT=${INPUT-$OUTPUT.H}

test -r $INPUT || { echo "get: no file $INPUT" 1>&2; exit 1; }

trap 'rm -f /tmp/get.[ab]$$; exit 1' 1 2 15

# split into current version and editing commands

sed <$INPUT -n '1,/^@@@/w /tmp/get.a'$$'

/^@@@/,$w /tmp/get.b'$$

# perform the edits

awk

/^@@@/ { count++ }

!/^@@@/ && count > 0 && count <= - '$VERSION'

END { print "$d"; print "w", "'$OUTPUT'" }

' | ed - /tmp/get.a$$

rm -f /tmp/get.[ab]$$

3.8.25 get.с

get(fd, pos, buf, n) /* read n bytes from position pos */

int fd, n;

long pos;

char *buf;

{

if (lseek(fd, pos, 0) == -1) /* get to pos */

return -1;

return read(fd, buf, n);

}

3.8.26 getname

who am i | sed 's/ .*//'

3.8.27 idiff.c

/* idiff: interactive diff */

#include

#include

char *progname;

#define HUGE 10000 /* large number of lines */

main(argc, argv)

int argc;

char *argv[];

{

FILE *fin, *fout, *f1, *f2, *efopen();

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «UNIX — универсальная среда программирования»

Представляем Вашему вниманию похожие книги на «UNIX — универсальная среда программирования» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «UNIX — универсальная среда программирования»

Обсуждение, отзывы о книге «UNIX — универсальная среда программирования» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x