UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
cat >$new # collect the inputcp $new $1 # overwrite the input filerm -f $new3.8.36
overwrite2# overwrite: copy standard input to output after EOF# version 2. BUG here tooPATH=/bin:/usr/bincase $# in1) ;;*) echo 'Usage: overwrite file' 1>&2; exit 2esacnew=/tmp/overwr1.$$old=/tmp/overwr2.$$trap 'rm -f $new $old; exit 1' 1 2 15cat >$new # collect the inputcp $1 $old # save original filetrap '' 1 2 15 # we are committed; ignore signalscp $new $1 # overwrite the input filerm -f $new $old3.8.37
overwrite3# overwrite: copy standard input to output after EOF# final versionopath=$PATHPATH=/bin:/usr/bincase $# in0|1) echo 'Usage: overwrite file cmd [args]' 1>&2; exit 2esacfile=$1; shiftnew=/tmp/overwr1.$$; old=/tmp/overwr2.$$trap 'rm -f $new $old; exit 1' 1 2 15 # clean up filesif PATH=$opath >$new # collect inputthen cp $file $old # save original file trap '' 1 2 15 # we are committed; ignore signals cp $new $fileelse echo "overwrite: $1 failed, $file unchanged" 1>&2 exit 1firm -f $new $old3.8.38
p1.c/* p: print input in chunks (version 1) */#include <stdio.h>#define PAGESIZE 22char *progname; /* program name for error message */main(argc, argv) int argc; char *argv[];{ int i; FILE *fp, *efopen(); progname = argv[0]; if (argc == 1) print(stdin, PAGESIZE); else for (i = 1; i < argc; i++) { fp = efopen(argv[i], "r"); print(fp, PAGESIZE); fclose(fp); } exit(0);}print(fp, pagesize) /* print fp in pagesize chunks */ FILE *fp; int pagesize;{ static int lines = 0; /* number of lines so far */ char buf[BUFSIZ]; while (fgets(buf, sizeof buf, fp) != NULL) if (++lines < pagesize) fputs(buf, stdout); else { buf[strlen(buf)-1] = ' '; fputs(buf, stdout); fflush(stdout); ttyin(); lines = 0; }}#include "ttyin1.c"#include "efopen.c"3.8.39
p2.c/* p: print input in chunks (version 2) */#include <stdio.h>#define PAGESIZE 22char *progname; /* program name for error message */main(argc, argv) int argc; char *argv[];{ FILE *fp, *efopen(); int i, pagesize = PAGESIZE; progname = argv[0]; if (argc > 1 && argv[1][0] == '-') { pagesize = atoi(&argv[1][1]); argc--; argv++; } if (argc == 1) print(stdin, pagesize);
