nroff . nroff . , control-L , , - .  1. $ stripf module1.c | grep >"^\.bp$" | wc -l -, module1.c, nroff . , . echo, " X $FILE". 2. $ for FILE in *.c ../*.c $HOME/src/*.c > do > stripf $FILE > done >> /tmp/func.hdrs for , .c, src home- . - . >>, stripf /tmp.  - for 4-19. FILE , . . sed UNIX . - sed - . -n sed , - , . , sed, - . -e , sed, , . , sed - , - , , . , - control-L, . , , control-L. ( , ^L control-L.) control-L, , - . nroff, . - , . 9 "loop". , , . ( sed , .) 8 n sed, . - , control-L - . , sed , - . , . , . control-L. stripc, . stripf. . control-L , , . , - , (}). 11 . , exit ( 14). , - , , . , 12, . ? , - ^. , " - ". , - . 12 , . p - , sed. . 13 - loop. , - . - sed. - , - , 9. - , - exit. 14 - exit. , , control-L, , - - . , . , . 15 , - . " ", - , echo. - , sed. ed. - "i" . , - ( , - ). (\). , , , - , , . , . - , . , sed, - . 17 - , sed . - , control-L . , , . 18 sed- - , sed. , sed, , . , . 4.2.3. strips - Shell ------------------------------------------------------------ : strips ------------------------------------------------------------ strips .  - , "s" . - .  strips [...]   strips *.sh . strips 1 : 2 # @(#) strips v1.0 Strip shell comment header Author: Russ Sage 4 for FILE in $@ 5 do 6 cat $FILE | (read LINE; echo $LINE 7 while read LINE 8 do 9 if [ "`echo $LINE|cut -c1`" = "#" ] 10 then echo "$LINE" 11 else exit 12 fi 13 done) 14 done   FILE , . LINE , .  strips? , . - . /* */, #, . , . , UNIX. - , , , , , , - , . : : # # strips shell- # # # strips [...] # # # Russ Sage mm/dd/yy # # # # shell. # # . # sh(1), cat(1) , :, . , . , Bourne shell. /bin/csh /bin/sh, . C Shell # . , - csh. csh, Bourne shell, ( - ) , C Shell, Bourne shell, - Bourne shell. strips? Strips , (.. , , ). , - . # , strips . , , . # , #. - , strips .  1. $ strips `kind /bin /usr/bin` , /bin /usr/bin. 2. $ find / -name "*.sh" -print | while read FILE > do > strips $FILE > /tmp/doc/$FILE > done Find , strips. strips /tmp. , , - /tmp, - .  4 14 , . . - , . , , - , . , , , , . , . 6 cat , - . , shell. shell ( 6 13). read . , , . , , #, , . 7-13 while, , cat. , while. 9-12 - . cut. - , , . , - . , - , . (for), . , strips . 4.3. ctags - ------------------------------------------------------------ : ctags ------------------------------------------------------------ ctags vi.  ctags [ ...]   ctags proj*.c . ctags 1 : 2 # @(#) ctags v1.0 Create a C source code tag file Author: Russ Sage 4 awk -F'(' '/^[a-zA-Z_][a-zA-Z0-9_]*\(/ { 5 printf ("%s\t%s\t/^%s$/\n", $1, FILENAME, $0) }' $@ | sort -u +0 -1   FILENAME awk , .  ctags? UNIX . . - - , . , , . - - . - , , - . , , , , .. , . - . , - ( ). Ctags , - , vi ex. "- ", , - , . , ctags - . - , . , - , . , , grep ( , !), , , ( ), - . , . , , - , . , - : UNIX - , , vi ex. 90 95 - , - shell, . Ctags Berkely (BSD) AT&T System V. Berkely, System V. UNIX, . ctags - awk, Berkely, , XENIX AT&T ctags. , , . , - . ctags? Ctags , - , . , awk . - , , . . , - ctags: main() { } func1(arg1,arg2) int arg1,arg2; { } func2(arg1,arg2)int arg1,arg2; { } ctags ( - ), , . - ctags . , , - , . , ctags - : for F in *.c do ctags $F > $F.tags done ctags : _ _ , , : main /usr/russ/src/program.c /^main()$/ func1 /usr/russ/src/program.c /^func1(arg1,arg2)$/ func2 /usr/russ/src/program.c /^func2(arg1,arg2)$/ ( ). - , - . - , ( - ). , . , ? vi . - .exrc. ( .exrc .profile ex vi, , vi na ex. vi - UNIX, .) .exrc, : set tags=/usr/russ/mytags , , - . - , . , , , vi, : :set tags , . - , , .exrc: :set tags=/usr/russ/mytags , , , - , , (.. ). - . : $ vi -t tag vi, - : :ta tag , ex, . ex , - . , vi , - 2. ":e _". , . , . , , . ex vi , : /bin/ ex /bin/vi. , . , . : $ ls -li `path ex vi` , . 510 -rwx--x--t 5 bin bin 121412 Sep 19 1985 /bin/ex 510 -rwx--x--t 5 bin bin 121412 Sep 19 1985 /bin/vi (inode). , . , ? argv[0] , . - , . , . , vi ex? UNIX ncheck. - , . : $ ncheck -i 510 /dev/root $ ncheck -i 510 ncheck inode, 510, . Ncheck - . , , inode 2 . inode 510, . : dev/root: 510 /bin/edit 510 /bin/ex 510 /bin/vedit 510 /bin/vi 510 /bin/view , , - , . , vi - . . , /usr, .  1. $ ctags *.c . . , - . , - ctags . 2. $ ctags `Find /usr/src -name "*.c" -print` , , .c . , , ctags . , shell. 3. $ find /usr/src -name "*.c" -exec ctags {} \; > tags /usr/src. ctags . ( ), ctags . tags - . 4. $ find /usr/src -type f -print | sort | > while read FILE > do > ctags $FILE > done >> tags , - /usr/src . while. while - . while - - tags. , - . 5. $ find /usr/src -print | ctags ctags. find . Ctags , . , , awk, find, . - . : find /usr -print | wc -l : ", /usr". - : " /usr". : find /usr -exec cat {} \; | wc -l : " /usr, , , ". - ctags, : find /usr/src -name "*.c" -exec cat {} \; | ctags , - : func1 /usr/russ/src/program.c /^func1(arg1,arg2)$/ func2 /usr/russ/src/program.c /^func2(arg1,arg2)$/ : func1 - /^func1(arg1,arg2)$/ func2 - /^func2(arg1,arg2)$/  "-" - , ctags . Awk - FILENAME "-", , . awk. - awk $@, . . , awk , , FILENAME awk "-". awk , ctags , - , . Awk , . , - , awk . , - ctags,- awk . - , : . awk -- . a-z, A-Z - . a-z, A-Z, 0-9 _. . (^), (a-z, A-Z, 0-9), . , printf. - , - $1. $1 - , . , , FILENAME awk. , awk , - , , , . , . $0, , awk. ^, $. sort , . - sort , . ctags , , ? - , , . , , . ctags. , ,- . , , : struct name { int val1; char val2; }; , ,- awk - . , . , , - , , , . , awk, - , , - , , .. - . , - - . , . , , (stripf, stripc, strips) , , , - (makefile, . Make(1)) - , - .  * 5. I: *        at b shell greet lastlog timelog today   jargon phone office I:      , . , UNIX , , . "- " (personal management) , . , . , - . , . - , UNIX . , - .   UNIX , . , , , . . at, b, greet, lastlog, timelog today. at , - - ( - ). , , . UNIX , . , . b. - . , . , , - - , . b , - , . greet , - . (, ) . , , . , - . , , - . lastlog , . , . timelog. , .