UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
opath=$PATH PATH=/bin:/usr/bincase $# in0) echo 'Usage: which command' 1>&2; exit 2esacfor i in `echo $opath | sed 's/^:/.:/ s/::/:.:/g s/:$/:./ s/:/ /g'`do if test -f $i/$1 # this is /bin/test then # or /usr/bin/test only echo $i/$1 exit 0 # found it fidoneexit 1 # not found3.8.67
wordfreqawk ' { for (i = 1; i <= NF; i++) num[$i]++ }END {for (word in num) print word, num[word] }' $*3.8.68
zap1# zap pattern: kill all processes matching pattern# BUG in this versionPATH=/bin:/usr/bincase $# in0) echo 'Usage: zap pattern' 1>&2; exit 1esackill `pick `ps -ag | grep "$*"` | awk '{print $1}'`3.8.69
zap2# zap pat: kill all processes matching pat# final versionPATH=/bin:/usr/binIFS='' # just a newlinecase $1 in"") echo 'Usage: zap [-2] pattern' 1>&2; exit 1 ;;-*) SIG=$1; shiftesacecho ' PID TTY TIME CMD'kill $SIG `pick `ps -ag | egrep "$*"|` | awk '{print $1}'`3.8.70
zap.c/* zap: interactive process killer */#include <stdio.h>#include <signal.h>char *progname; /* program name for error message */char *ps = "ps -ag"; /* system dependent */main(argc, argv) int argc; char *argv[];{ FILE *fin, *popen(); char buf[BUFSIZ]; int pid; progname = argv[0]; if ((fin = popen(ps, "r")) == NULL) { fprintf (stderr, "%s: can't run %sn", progname, ps); exit(1); } fgets(buf, sizeof buf, fin); /* get header line */ fprintf (stderr, "%s", buf); while (fgets(buf, sizeof buf, fin) != NULL) if (argc == 1 || strindex(buf, argv[1]) >= 0) { buf[strlen(buf)-1] = ' '; /* suppress n */ fprintf (stderr, "%s? ", buf); if (ttyin() == 'y') { sscanf(buf, "%d", &pid); kill(pid, SIGKILL); } } exit(0);}#include "ttyin2.c"#include "strindex.c"#include "efopen.c"
