📄 lib
字号:
#! /bin/csh -f##- gsglib - GSG library on-line query#-# Author: Paul Lew, General Systems Group, Inc.# Created at: 08/15/86 04:18 PM# Last update: 01/26/88 12:31 PM (Edition: 8)##- Usage: gsglib <CR>##---------------------------------------------------------------## Display help if requested by user ##---------------------------------------------------------------#switch ( "$1" ) case -H[xX]: set echo; set verbose; shift breaksw case -H*: show_help `which $0` $1 goto end default: endsw#---------------------------------------------------------------## Process Arguments ##---------------------------------------------------------------#set libfile = '/gsg/lew/dat/gsglib.dat'set tmpfile = "/tmp/gsglib.$$"unsetenv LESS#---------------------------------------------------------------## Display main menu and get user input (use sf) ##---------------------------------------------------------------#loop:set srcfile = "/tmp/gsglib$$"sf -o ${srcfile} -u << sf_eof General Systems Group Library Directory Operation: ~~~~~~~ [choice: find add new print keyword help quit] Book number: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ Keyword: ~~~~~~~~~~~~~~~ ~~~ Author: ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ Title: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ Date published: ~~~~~~~~~~~~~ ~~~ Publisher: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ Book id: ~~~~~~~~~~~~~~~~~~~~~~~ ~~~ Number of pages:~~~~~ ^ +------ enter "y" to include in the output list [Press TAB to move to next field, RETURN to execute].v=opcode.s=/find/add/new/print/keyword/help/quit..h=find out what books has the data we want..h=add new books to library..h=see what are the new books since last use..h=print out previous output to printer..h=display all the predefined keywords that are valid for keyword search field..h=display help message about how to use this program..h=quit, exit back to Unix..v=bookno..v=selkw.s=/No/Yes.v=keyword..v=selau.s=/Yes/No.v=author..v=selti.s=/Yes/No.v=title..v=selpd.s=/Yes/No.v=pdate..v=selpu.s=/Yes/No.v=pub..v=selbi.s=/No/Yes.v=bookid..v=selsz.s=/No/Yes.v=size.sf_eof#---------------------------------------------------------------## Get symbol defined for the current process ##---------------------------------------------------------------#if ( ! -e ${srcfile} ) goto endsource ${srcfile}/bin/rm -f ${srcfile}#---------------------------------------------------------------## Execute user request ##---------------------------------------------------------------##echo "author=[${author}] output select=[${selau}]"#echo "keyword=[${keyword}] output select=[${selkw}]"#echo "title=[${title}] output select=[${selti}]"#echo "pdate=[${pdate}] output select=[${selpd}]"#echo "pub=[${pub}] output select=[${selpu}]"#echo "press return: "#set yon = "$<"if ( "${bookno}" == "vi" ) then goto libvi endifswitch ( "${opcode}" ) case "find": goto libfind case "add": goto libadd case "new": goto libnew case "print": goto libprint case "keyword": goto libkeyword case "help": goto libhelp case "quit": goto end default: echo "Unknown command: ${opcode}" sleep 2 goto loop breaksw endsw#---------------------------------------------------------------## add a new record to library file ##---------------------------------------------------------------#libfind: cat /dev/null > ${tmpfile} set outsel if ( "${selkw}" == "Yes" ) set outsel = "${outsel}K" if ( "${selau}" == "Yes" ) set outsel = "${outsel}A" if ( "${selti}" == "Yes" ) set outsel = "${outsel}T" if ( "${selpd}" == "Yes" ) set outsel = "${outsel}D" if ( "${selpu}" == "Yes" ) set outsel = "${outsel}P" if ( "${selbi}" == "Yes" ) set outsel = "${outsel}N" if ( "${selsz}" == "Yes" ) set outsel = "${outsel}S" if ( "${outsel}" == "" ) then echo -n "No output selection" goto getret endif if ( "${bookno}" != "" ) then set recno = (${bookno}) goto grepno endif if ( "${keyword}" != "" ) then grep '^#K' ${libfile} | grep -i "${keyword}" >> ${tmpfile} endif if ( "${author}" != "" ) then grep '^#A' ${libfile} | grep -i "${author}" >> ${tmpfile} endif if ( "${title}" != "" ) then grep '^#T' ${libfile} | grep -i "${title}" >> ${tmpfile} endif if ( "${pdate}" != "" ) then grep '^#D' ${libfile} | grep -i "${pdate}" >> ${tmpfile} endif if ( "${pub}" != "" ) then grep '^#P' ${libfile} | grep -i "${pub}" >> ${tmpfile} endif if ( "${bookid}" != "" ) then grep '^#N' ${libfile} | grep -i "${bookid}" >> ${tmpfile} endif if ( "${size}" != "" ) then grep '^#S' ${libfile} | grep -i "${size}" >> ${tmpfile} endif if ( -z ${tmpfile} ) then echo -n "No related information" goto getret else set recno = `awk '{ print $2 }' ${tmpfile} | sort -u` cat /dev/null > ${tmpfile}grepno: foreach rec (${recno}) bm "${rec}" ${libfile} | awk 'NF>2' | \ grep "^#[${outsel}]" >> ${tmpfile} echo "---------------------------" >> ${tmpfile} end less -pcu ${tmpfile} endif goto loop#---------------------------------------------------------------## add a new record to library file ##---------------------------------------------------------------#libadd: if ( "${user}" != "secrtary" && "${user}" != "chicca" && ${user} != "lew" ) thenerr: echo -n '...Sorry, only secretary can update library info' goto getret breaksw endif if ( "${title}" == "" ) then echo "...You can not add a record without title..." sleep 1 goto loop endif @ rec = `tail -1 ${libfile} | awk '{print $2}'` @ rec ++ set recno = "${rec}" if ( $rec < 1000 ) set recno = "0${recno}" if ( $rec < 100 ) set recno = "0${recno}" if ( $rec < 10 ) set recno = "0${recno}" cat >> ${libfile} << cat_eof#K ${recno} ${keyword}#A ${recno} ${author}#P ${recno} ${pub}#T ${recno} ${title}#N ${recno} ${bookid}#D ${recno} ${pdate}#S ${recno} ${size}#R ${recno} `date`cat_eof echo "Record ${recno} has been added successfully" sleep 1 goto loop#---------------------------------------------------------------## show all new books since last check ##---------------------------------------------------------------#libnew: if ( ! -e ~/.gsgbook ) then @ old = 0 else @ old = `cat ~/.gsgbook` endif grep '^#T' ${libfile} | awk \ 'BEGIN { p = 0 } \ p == 1 { print } \ $2 ~ /'"${old}"'/ { p = 1 }' | less -pcu tail -1 ${libfile} | awk '{ print $2 }' > ~/.gsgbook goto loop#---------------------------------------------------------------## display all possible keyword defined ##---------------------------------------------------------------#libkeyword: (echo "...Possible Keywords List in Library..."; \ grep '^#K' ${libfile} | awk \ '{ for (i=3; i<=NF; i++) { \ print $i; \ } \ }') | sort -u | awk \ 'NR == 1 { print } \ NR > 1 { \ printf "%-18s", $0; \ if (++i % 4 == 0) printf "\n"; \ } \ END { if (i % 4 != 0) printf "\n"; }' | less -pcu goto loop#---------------------------------------------------------------## print previous located collection of data ##---------------------------------------------------------------#libprint: if ( -e ${tmpfile} && ! -z ${tmpfile} ) then print ${tmpfile} else echo -n "Nothing to print"getret: echo -n ", press RETURN to continue: " set yon = "$<" endif goto loop#---------------------------------------------------------------## run vi on the library file (undocumented feature) ##---------------------------------------------------------------#libvi: vi ${libfile} goto loop#---------------------------------------------------------------## display usage guide for inexperience users ##---------------------------------------------------------------#libhelp: cat << cat_eofadd add a new record into library database, privilege requirednew display what new books has arrived since last usefind search for proper informationhelp display this usage guidekeyword show all current available keywordsprint print the result from the last find commandquit exitYou may enter search string in any of the fields (grep -i will be usedin each occassion). If you specify book numbers, all the other fieldswill be ignored.The one character fields at the beginning of each field is outputselect, if it is 'y', it will be included in the output.cat_eof echo -n "End of help info" goto getret#---------------------------------------------------------------## Clean up and exit here... ##---------------------------------------------------------------#end: /bin/rm -f ${tmpfile} unset fnames fname srcfile tmpfile
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -