genesis2000脚本简单的csh语法讲解
- 格式:doc
- 大小:20.50 KB
- 文档页数:10
Genesis2000脚本命令大全1.switch的用法,注意每一个case必须要以breaksw结尾否则会继续执行下一个case的命令(1)另外,$<的意思是取得使用者的stand input(2)echo若加上-n的选项,则游标会停留在该行最后echo-n"Input one color:"set STOPLIGHT=$<switch($STOPLIGHT)case red:echo"red"breakswcase orange:echo"orange"breakswcase green:echo"green"breakswdefault:echo"you input$STOPLIGHT"endsw--------------------------------------------------------------------2.利用set来取得变数,set ABC="I am ABC"也可以利用`command`来取得命令且外,case也可以用万用字元*来代替set VER=`uname-r`switch($VER)case5.5:echo"run the setup of$VER"breakswcase5.3:echo"run the setup of$VER"breakswcase5.*:echo"like5.x"breakswcase4.*:echo"like4.x"breakswdefault:echo"no idea"endsw--------------------------------------------------------------------3.if的语法,比较数字set n1=1set n2=2if($n1==$n2)thenecho"$n1Equal$n2"elseecho"$n1Not Equal$n2"endif--------------------------------------------------------------------4.if的语法,比较字串set n1=abcdefset n2=abcdeif($n1==$n2)thenecho"$n1Equal$n2"elseecho"$n1Not Equal$n2"--------------------------------------------------------------------5.if的语法,比较相似的字串set n1=abcdefset n2=abcdeif($n1=~$n2)thenecho"$n1Like$n2"elseecho"$n1Not Like$n2"endif--------------------------------------------------------------------6.if的语法,比较数字的大小set n1=1set n2=2if($n1>$n2)thenecho"$n1>$n2"echo"$n1<$n2"endif--------------------------------------------------------------------7.每分钟执行一次的程式#mm等于当天时间的【分钟】数set mm=`date|cut-d''-f4|cut-d:-f2`if(-r$0.out)thenrm$0.outtouch$0.outelsetouch$0.outendifwhile($mm<=16)set mm=`date|cut-d''-f4|cut-d:-f2`echo"$mm now is`date`"sleep60#echo"$mm now is`date`">>$0.outendecho"Over">>$0.out--------------------------------------------------------------------8.一个回圈的范例,并且利用expr去作加的动作回圈的语法如下:foreach number(123)echo$numberendset counter=0while($counter<=10)echo"sleeping for5seconds"sleep5counter=`expr$counter+1`end--------------------------------------------------------------------9.设定一个用当天月份与日期作为档案名称的程式如今天是10/02,则$prefix会等于该程式+1002date.csh1002set prefix=`basename$0``date'+%m%d'`echo$0echo$prefix--------------------------------------------------------------------10.移除在foreach回圈内指定的档案内的font字串foreach file([b,e,g,h,s]*.html)echo-n"Processing$file,remove the line number`grep-n font $file`"#$log表示这个$file有几个font字串set log=`grep-c font$file`if($log=='0')thenecho",pass$file"else#先找出该档案的第一次出现font的行数,如果3,则$cmd=3dset cmd=`grep-n font$file|cut-d:-f1|head-1`d#利用sed去执行删除的动作,并把结果输出到${file}1sed$cmd$file>${file}1#如果${file}1没有资料,则passingif(-z${file}1)thenecho",${file}1is zero"elsecp${file}1$filerm{$file}1echo",$file remove ok"endifendifend#后来看过sed的更进一步用法,发现先前写的太笨了,试试这个#sed/font/d$file>${file}1#一次OK,我真是大笨蛋--------------------------------------------------------------------11.功能:将指定的档案中,出现第一次【回】的那一行,加上<ti tle>xxxx</title>foreach file(sky*.html)set filetitle=ftitle#主要部份为sed部份s/^*//表示将该行第一个字元前的空白删除echo"<title>`grep回$file|head-1|sed-e's/^*//'`</tit le>">$ftitle#将刚刚那一行,再插回去head-1$file>${file}headsed1d$file>${file}1cat$ftitle>>${file}headcat${file}1>>${file}headcp${file}head$filerm${file}1rm$ftitlerm${file}headecho"$file ok"end--------------------------------------------------------------------12.一个实际建立一个ftp server的程式里面包括许多应用,相当有参考价值(未完成)set path=(/usr/bin/usr/sbin)#set true=`grep-c ftp/etc/passwd`if($true==0)thenecho"no ftp user in your system"echo-n"do you want to create the ftp user?"set answer=$<if($answer=='y'||$answer=='Y')thenset maxid=`sort/etc/passwd|tail-1|cut-d:-f3`echo$maxidset newid=`expr$maxid+1`echo$newidecho"/usr/sbin/useradd-d/home1/ftp-u$newid-s/etc/false ftp"endifelseecho"Good.Your system already has the ftp user."set ftphome=`grep ftp:/etc/passwd|cut-d:-f6`echo$ftphomeendifif(-z$ftphome)thenecho"ftphome must be non-null"exit2endifif($ftphome=="/usr"||$ftphome=="/")then echo"ftphome can't be/or/usr"exit2endif#create the ftp home directoryif(!-d$ftphome)thenecho"mkdir$ftphome"endifecho"Setting up the ftphome for SunOS`uname-r`"if(!-d$ftphome)thenecho"mkdir-p$ftphome/usr/bin"endifcp/bin/ls$ftphome/usr/binchmod111$ftphome/usr/bin/lschown root$ftphome/usr/binchmod555$ftphome/usr/binif(-r$ftphome/bin)thenmv-f$ftphome/bin$ftphome/Obinendifln-s usr/bin$ftphome--------------------------------------------------------------------13.取得该使用者的UIDif($#argv==0)thenecho"$0usage:$1username"exit2endifset uid=`grep$1/etc/passwd|cut-d:-f3`echo$uid--------------------------------------------------------------------14.将指定档案内的html取代成htmforeach file(*.html)echo"Processing$file..."sed s/html/htm/$file>${file}1cp${file}1$filerm${file}1end--------------------------------------------------------------------15.一个简简单单的范例,看看就好#!/bin/csh-f echo.................echo WELCOME to\*TAPE COPY\* echo.................echo Enter your name:#$<can read from stand inputset name=$<echo""echo Hi$name\!set D=`date`echo Today\'s date is$D[1]$D[2]$D[3]if($D[1]==Mon)thenecho-------------------------------------------------------------echo Today is$D[1]day$name,it\'s time to copy your director ys\!echo-------------------------------------------------------------elseecho-------------------------------------------------------------echo Today is$D[1]day$name,no tape copies today\!echo-------------------------------------------------------------endif--------------------------------------------------------------------16.一个finger的程式set FINGER="/usr/ucb/finger"if(-x$FINGER)thenif($#argv==0)thencat<<TAG---------------------------------Hahahah....---------------------------------TAGelse$FINGER"$*"endifelseecho"Cannot find finger on this system."endif--------------------------------------------------------------------17.取得变数的方法set W=`who-r`echo$W[9]--------------------------------------------------------------------18.更改档案名称,将*.html-->*.htm#rename*.html to*.htmecho-n"This will change*.html to*.htm.Can I continue?(y/n): "set input=$<if($input!="y"&&$input!="Y")thenecho"Ok.Quit..."exit2endifforeach file(*.html)echo"Processing$file to`basename$file.html`.htm"mv$file`basename$file.html`.htmend--------------------------------------------------------------------19.更改档案名称,将*.htm-->*.htmlecho-n"This will change*.htm to*.html.Can I continue?(y/n): "set input=$<if($input!="y"&&$input!="Y")thenecho"Ok.Quit..."exit2endif#rename*.htm to*.htmlforeach file(*.htm)echo"Processing$file to`basename$file.htm`.html"mv$file`basename$file.htm`.htmlend--------------------------------------------------------------------20.将大写的档名改成小写的档名tr string1string2会将standard input的字串,所对应到的string1,都以string2取代foreach file(*)mv$file`echo$file|tr'[A-Z]''[a-z]'`end--------------------------------------------------------------------21.将小写的档名改成大写的档名foreach file(*)mv$file`echo$file|tr'[a-z]''[A-Z]'`end。
GENESIS2000入门教程Padup放大padpaddn缩小padre route扰线路Sha ve削padlinedo wn缩线line/si gnal线Layer层in 里面out外面Same layer同一层pacing 间隙cu铜皮Otherlayer另一层pos itive 正negat ive负Temp 临时top顶层bot底层Soldermask绿油层silk字符层p ower 电源导(负片)Vcc 电源层(负片)g round 地层(负片)apply 应用sold er 焊锡singnal线路信号层soldnm ask绿油层input导入component元器件Close 关闭zoom放大缩小create 创建Res te 重新设置corner 直角step PC B文档C enter 中心snap捕捉board 板Route锣带r epair 修理、编辑r esize (编辑)放大缩小analys is 分析Sinde 边、面Adv anced 高级mea suer 测量PTH hole 沉铜孔N PTH hole 非沉铜孔output 导出VIA hole 导通孔smd pa d 贴片PAD replace 替换fill填充Attribute属性round 圆square 正方形rect angle 矩形Sele ct 选择include 包含e xclude 不包含step 工作单元Reshape 改变形状pro file 轮廓dril l 钻带rout 锣带Actions 操作流程ana lyis 分析DFM 自动修改编辑circuit线性Identify 识别translate 转换j ob matrix 工作室repair 修补、改正Misc 辅助层dut um point 相对原点corne r 直角optimi zation 优化ori gin 零点cente r 中心glo bal 全部ch eck 检查refere nce layer 参考层refere nce selection参考选择reverse selec tion 反选snap对齐invert正负调换symbol 元素feature半径histogram元素exist 存在angle 角度di mensions 标准尺寸panelization拼图fill paramete rs 填充参数redundancy 沉余、清除层英文简写层属性顶层文字Top sil k screen CM1( gtl )sil k-scren顶层阻焊Top sol der mask SM1 ( gts )sol der-mask 顶层线路Top la yer L1 ( gtl )si gnal内层第一层power groun d (gnd) PG2 ( l2-pw ) power-g round(负片)内层第二层signal layer L3 sign al (正片)内层第三层signal layer L4 signal (正片)内层第四层power grou nd (vcc) L5 ( l5-vcc)power-ground(负片)外层底层bott om layer L6 ( gbl ) s ignal底层阻焊bottom so lder mask S M6 solder-ma sk底层文字bottom silkscreen CM6silk-scren层菜单Display---------------------- -----当前层显示的颜色Fe atures histog ram ---------------- 当前层的图像统计Copy ---------------------- -------复制Merge ---------------------- ------合并层Unmerge------------------- -----反合并层(将复合层分成正负两层) Optimizelerels ----------- ----- 层优化(当正负层太多时,要优化成最大3层)Fillprofile ------------------- 填充profile(轮廓)Register ------------------ ---- 层自动对位matrix ------------------ ---- 层属性表(新建、改名、删除)copper/expose d area ----------- 计算铜面积(自动算出百分几)att ribates ------------------ - 层属性(较少用)notes ------------------------ 记事本(较少用)clip are a ------------------ - 删除区域(可自定义,或定义profile) dril l tools manag er ----------- 钻孔管理(改孔的属性,大小等) drill f ilter ------------------ 钻孔过滤hole siz es ------------------ 钻孔尺寸(在分孔图转钻孔经常用到) create dr ill map ------------- 利用钻孔做分孔图(如有槽孔,转出来有变)update v erification c oupons ---- 更新首尾孔的列表re-re ad ------------------ 重读文件(当文件误删时无法恢复时,可重读)truncat e ------------------ 删除整层数据(无法用ctrl+z恢复) compare------------------ 层对比(很有用,可以查看层与层之间改动过的地方)fla ten ------------------翻转(只有在拼版里面才会出现)text ref erence------------------文字参考create sha pelist------------------产生形状列表delete s hapelist------------------删除形状列表EDIT菜单undo------------------撤消上一次操作delete------------------删除move------------------移动*copy------------------复制*resize------------------修改图形大小形状*transform------------------旋转、镜像、缩放co nnections------------------buffer------------------reshape------------------polarity------------------更改层的极性*cera te------------------建立*ch ange------------------更改*attributes------------------属性edit之re sizeglobal------------------所有图形元素sur faces------------------沿着表面resizc ther rnals and don uts------------------散热盘及同圆contourize&resize------------------表面化及修改尺寸poly l ine ------------------多边形by factor------------------按照比例edit之mo vesame layer------------------同层移动oth er layer------------------移动到另一层strete h parallel li nes------------------平行线伸缩orthogonal s trrtch------------------平角线伸缩move trip lets (fixed a ngele)------------------角度不变地移线(ALT +D)move triplets(fixed lengt h)------------------长度不变地移线(ALT +J)move&to panel------------------把STEP中的图形移动到其它的STEP中edit之copysame l ayer------------------同层移动other layer------------------移动到另一层st ep&repeatsame layer------------------同层移动other laye r------------------同层排版ed it之reshapech ange symbolsa me ------------------更改图形break------------------打散break to Isla nds/holes------------------打散特殊图形arc t o lines------------------弧转线line to pa d------------------线转padc ontourize------------------创建铜面部件(不常用)drawn to surf ace------------------ 线变su rfaceclean h oles------------------清理空洞clean surfa ce------------------清理surf acefill------------------填充(可以将surfac e以线填充)design to rout ------------------设计到rout(做锣带常用,最佳值4 32)substitue ------------------替代(常用,分孔图转钻孔)cutting da ta------------------填充成sur face (常用来填充CA D数据)olarityr c direction------------------封闭区域edit之polarity(图像性质)positive------------------图像为正negati ve------------------图像为负i nvert------------------正负转换edit之ceate(建立)step------------------新建一个stepsym bol------------------新建一个s ymbolprofile------------------新建一个prof ileedit之chan ge(更改)chang e text------------------更改字符串pads to s lots------------------pad变成slots (槽)s pace tracks e venly------------------自动平均线隙(很重要)ACT IONS菜单checklists------------------检查清单re-read ER FS------------------重读erf文件netlist ana lyzer------------------网络分析netlist opt imization------------------网络优化output------------------输出clearselete&highli ght------------------取消选择或高亮reverse se leteion---------------参考选择(很重要,有TOUCH(接触)COVERED(完全接触))script ac tion------------------设置脚本名称selete dra wn------------------选择线(一般用来选大铜皮)conve rt netlist to layers------------------转化网络到层notes------------------文本contour operations------------------bom view------------------surface操作OPTION菜单se letion------------------选择attributes------------------属性graphic control------------------显示图形控制snap------------------抓取measuer------------------测量工具fil l parameters------------------填充参数line parameters------------------线参数colors------------------显示颜色设置c omponents------------------零件ANALYSIS菜单surface an alyzer------------------查找铜面部件中的问题dril l checks------------------钻孔检查board-dr ill checks------------------查找钻孔层与补偿削铣层中潜在的工艺性缺陷sig nal layer che cks------------------线路层检查power/ground checks------------------内层检查solder ma sk check------------------阻焊检查silk scr een checks ------------------字符层检查prof ile checks------------------profile检查d rill summary------------------生成padstac k中的孔的统计数字,查找p adtack中的最小焊环quote analysi s------------------smd su mmary------------------对外层铜箔层执行操作,生成有关被检验层中的SMD定位和封装的统计报告orbotec h AOI checks------------------microvi a checks------------------提供HDI设计的高效钻孔分析rout layer checks------------------pads for dril l------------------列出每种类型钻孔的焊盘尺寸以及焊盘的数量DFM菜单clean up------------------redun dancy cleaunp------------------repair------------------sliver------------------optimizat ion------------------yiel d improvement------------------advance d------------------custom------------------legacy------------------dft------------------DFM之Cleanuplegnd detect ion------------------文本检测construct pad s (auto)------------------自动转padconstr uct pads (aut o,all angles)------------------自动转pad(无论角度大小)建议不用co nstruct pads(ref)------------------手动转pad (参照erf)DFM之redundanc y cleanupaar edundant line removal------------------删除重线nfp remo val------------------------------删重孔、删独立PAD drawn to outline ------------------以线或轮廓来代替线绘区域减少层中的部件数量DF M之repairpadsnapping------------------整体PAD对齐pinho le eliminatio n------------------除残铜补沙眼neck down rep air------------------修补未完全被其它线或焊盘覆盖的圆端或方端产生的颈锁断开(即修补未连接上的线)DFM之sliverslive r´ angle s------------------修补潜在加工缺陷的锐角sliver&p eelable repa ir------------------查找修补信号层、地电层和阻焊层中的sl iverlegend s liver fill------------------用于填充具有.nome nclature属性集的组件之间的sliverta ngency elimin ation------------------D FM之optimizati onsignal lay er opt ------------------线路层优化line wid th opt------------------</Sctr+e 指定放大缩小的中心ctr+b删除选择的物件ctr+w在实体、轮廓、骨架之间切换ctr+c复制ctr+v粘贴ctr+x移动a lt+c同层复制ctrl+z 恢复到前一步操作a lt+d移动三连线,角度不变arl+j 移动三连线,长度不变alt+n 选择参数alt+g 图形控制面板alt+l 线参数s+g 扑捉到栅格s+c 扑捉到中心s+s 扑捉到骨架s+e 扑捉到边缘s+i 扑捉到交*点s+m 扑捉到中点s+p扑捉到轮廓线s+o 关闭对齐s+a 转换sna p层CTRL+Q 可以水平或者垂直移动实体CTR L+M 可以用不同的颜色显示打开任意多层ctrl+n 显示负层物体。
GENESIS操作流程1、桌面打开CSH后输入GET即可点动GENESIS 2000,输入用户名各密码,登陆到GENESIS 2000的主画面。
2、在FICE菜单下GREATE .IOB.名选择.DATE BASE.确认后打开刚建立的IOB,并打开INPUT。
3、确认所读资料的位置及文件名的正确性(按照MI;对照文件名的文件,方件大小)4、IDENTIFY FILE/CHECK所读资料的正确性(包括资料的数据格式,检查INPUT图形的正确性:INPUT是否有WARNING,WARNING是否会对图造成影响等,并SAVE JOB。
5、设定MATRIX、LAYER、NAME层的合并、REYISTER定DATAM POINT.ORIG。
COPY现时STEP并更名为“A”并保留备份,的STEP为“B”。
6、在新的STEP中(“B”)做:CONSTRUET.PADS。
(注意先做防焊,以此做参照再做线路层)并SACE IOB。
7、新建SEP(“C”)COPY:“B”中的资料并以“B”为原始资料备份。
8、打开STEP“(制作钻孔层、CDRLU TOOL MANGER)。
注使用加大钻孔参数FLASH-GOLD,HASL,是否有用到特殊孔径50MIL1和2)MIL1内条分板孔、定义孔的属性。
(机台识别孔)检查所有孔径、孔数是否与MI中相符。
9、制作ROUT层,定义PROFILE。
10、删除PROFILE以外的图形,CHEEK所有PROFILE外的图菜是否为所需图形。
是否需移入到板内并GALE IOB。
11、DATE CLEANUP做一些所有层的数据优化附加层,删除重复的图形数据,做蚀刻补偿。
12、CHECK所有层的资料是否与“A”中的资料一致,做COMPARE,确认所做的修改产生METDIST FROM“B”与“C”中的NETLIST 对比确认所做修改没有问题后SAME JOB。
13、ANALYSIS ALL,所有层看报告产生的多少来决定做DFM14、DFM:(所有需要修改与优化的层,根据所产生的报告手动自动编辑图形,至MI跟制程工艺的要求值)15、COMPARE层和COMPARE“A”与“C”中的METLIST16、填充PINROLE跟SLIVER,此动作可多做几次并SAVE IOB17、PANEL排版,新建STEP为“D”,在此STEP中定义PANEL SIZE(按照MI 要求制作排版)注意:最后一次小PANE排版的STEP固定为PNLI最后要求输出的PANEL的STEP固定为PANEL18、排宽版厚分别有小PANEL跟大PANEL的SCRIPTS运行SCRIPTS检查SCRIPTS所产生图形的正确性。
1. switch 的用法,注意每一个case 必须要以breaksw 结尾 否则会继续执行下一个case 的命令(1) 另外,$< 的意思是取得使用者的stand input(2) echo 若加上-n 的选项,则游标会停留在该行最后echo -n "Input one color: "set STOPLIGHT = $<switch ($STOPLIGHT)case red:echo "red"breakswcase orange:echo "orange"breakswcase green:echo "green"breakswdefault:echo "you input $STOPLIGHT"endsw--------------------------------------------------------------------2. 利用set 来取得变数,set ABC = "I am ABC"也可以利用`command` 来取得命令且外,case 也可以用万用字元* 来代替set VER = `uname -r`switch ($VER)case 5.5:echo "run the setup of $VER"breakswcase 5.3:echo "run the setup of $VER"breakswcase 5.*:echo "like 5.x"breakswcase 4.*:echo "like 4.x"breakswdefault:echo "no idea"endsw--------------------------------------------------------------------3. if 的语法,比较数字set n1 = 1set n2 = 2if ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif--------------------------------------------------------------------4. if 的语法,比较字串set n1 = abcdefset n2 = abcdeif ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif--------------------------------------------------------------------5. if 的语法,比较相似的字串set n1 = abcdefset n2 = abcdeif ($n1 =~ $n2) thenecho "$n1 Like $n2"elseecho "$n1 Not Like $n2"endif--------------------------------------------------------------------6. if 的语法,比较数字的大小set n1 = 1set n2 = 2if ($n1 > $n2) thenecho "$n1 > $n2"elseendif--------------------------------------------------------------------7. 每分钟执行一次的程式# mm 等于当天时间的【分钟】数set mm = `date | cut -d' ' -f4 | cut -d: -f2`if ( -r $0.out ) thenrm $0.outtouch $0.outelsetouch $0.outendifwhile ( $mm <= 16 )set mm = `date | cut -d' ' -f4 | cut -d: -f2`echo "$mm now is `date`"sleep 60#echo "$mm now is `date`" >> $0.outendecho "Over" >> $0.out--------------------------------------------------------------------8. 一个回圈的范例,并且利用expr 去作加的动作回圈的语法如下:foreach number (1 2 3)echo $numberendset counter = 0while ($counter <= 10)echo "sleeping for 5 seconds"sleep 5counter = `expr $counter + 1 `end--------------------------------------------------------------------9. 设定一个用当天月份与日期作为档案名称的程式如今天是10/02 , 则$prefix 会等于该程式+ 1002set prefix = `basename $0``date '+ %m%d'`echo $0echo $prefix--------------------------------------------------------------------10. 移除在foreach 回圈内指定的档案内的font 字串foreach file ([b,e,g,h,s]*.html)echo -n "Processing $file, remove the line number `grep -n font $file`"# $log 表示这个$file 有几个font 字串set log = `grep -c font $file`if ( $log == '0' ) thenecho ", pass $file"else# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3dset cmd = `grep -n font $file | cut -d: -f1 | head -1`d# 利用sed 去执行删除的动作,并把结果输出到${file}1sed $cmd $file > ${file}1# 如果${file}1 没有资料,则passingif ( -z ${file}1 ) thenecho " , ${file}1 is zero"elsecp ${file}1 $filerm {$file}1echo " , $file remove ok"endifendifend# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个# sed /font/d $file > ${file}1# 一次OK, 我真是大笨蛋--------------------------------------------------------------------11. 功能:将指定的档案中,出现第一次【回】的那一行,加上<title> xxxx </title>foreach file (sky*.html)set filetitle = ftitle# 主要部份为sed 部份 s/^ *// 表示将该行第一个字元前的空白删除echo "<title>`grep 回$file | head -1 | sed -e 's/^ *//'`</title>" > $ftitle# 将刚刚那一行,再插回去head -1 $file > ${file}headsed 1d $file > ${file}1cat $ftitle >> ${file}headcat ${file}1 >> ${file}headcp ${file}head $filerm ${file}1rm $ftitlerm ${file}headecho "$file ok"end--------------------------------------------------------------------12. 一个实际建立一个ftp server 的程式 里面包括许多应用,相当有参考价值( 未完成)set path = ( /usr/bin /usr/sbin )#set true = `grep -c ftp /etc/passwd`if ( $true == 0 ) thenecho "no ftp user in your system"echo -n "do you want to create the ftp user? "set answer = $<if ($answer == 'y' || $answer == 'Y') thenset maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`echo $maxidset newid = `expr $maxid + 1`echo $newidecho "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"endifelseecho "Good. Your system already has the ftp user. "set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`echo $ftphomeendifif ( -z $ftphome ) thenecho "ftphome must be non-null"exit 2endifif ( $ftphome == "/usr" || $ftphome == "/" ) thenecho "ftphome can't be / or /usr"exit 2endif# create the ftp home directoryif ( ! -d $ftphome ) thenecho "mkdir $ftphome"endifecho "Setting up the ftphome for SunOS `uname -r`"if ( ! -d $ftphome ) thenecho "mkdir -p $ftphome/usr/bin"endifcp /bin/ls $ftphome/usr/binchmod 111 $ftphome/usr/bin/lschown root $ftphome/usr/binchmod 555 $ftphome/usr/binif ( -r $ftphome/bin ) thenmv -f $ftphome/bin $ftphome/Obinendifln -s usr/bin $ftphome--------------------------------------------------------------------13. 取得该使用者的UIDif ( $#argv == 0 ) thenecho "$0 usage: $1 username"exit 2endifset uid = `grep $1 /etc/passwd | cut -d: -f3`echo $uid--------------------------------------------------------------------14. 将指定档案内的html 取代成htmforeach file ( *.html )echo "Processing $file ..."sed s/html/htm/ $file > ${file}1cp ${file}1 $filerm ${file}1end--------------------------------------------------------------------15. 一个简简单单的范例,看看就好#!/bin/csh -fecho .................echo WELCOME to \* TAPE COPY \*echo .................echo Enter your name:# $< can read from stand inputset name = $<echo " "echo Hi $name \!set D = `date`echo Today\'s date is $D[1] $D[2] $D[3]if ($D[1] == Mon) thenecho -------------------------------------------------------------echo Today is $D[1]day $name, it\'s time to copy your directorys\! echo -------------------------------------------------------------elseecho -------------------------------------------------------------echo Today is $D[1]day $name, no tape copies today\!echo -------------------------------------------------------------endif--------------------------------------------------------------------16. 一个finger 的程式set FINGER = "/usr/ucb/finger"if ( -x $FINGER ) thenif ( $#argv == 0 ) thencat << TAG---------------------------------Hahahah ....---------------------------------TAGelse$FINGER "$*"endifelseecho "Cannot find finger on this system."endif--------------------------------------------------------------------17. 取得变数的方法set W = `who -r`echo $W[9]--------------------------------------------------------------------18. 更改档案名称,将*.html --> *.htm# rename *.html to *.htmecho -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endifforeach file ( *.html )echo "Processing $file to `basename $file .html`.htm "mv $file `basename $file .html`.htmend--------------------------------------------------------------------19. 更改档案名称,将*.htm --> *.htmlecho -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endif# rename *.htm to *.htmlforeach file ( *.htm )echo "Processing $file to `basename $file .htm`.html " mv $file `basename $file .htm`.htmlend--------------------------------------------------------------------20. 将大写的档名改成小写的档名tr string1 string2 会将standard input 的字串,所对应到的string1, 都以string2 取代foreach file ( * )mv $file `echo $file | tr '[A-Z]' '[a-z]'`end--------------------------------------------------------------------21. 将小写的档名改成大写的档名foreach file (*)mv $file `echo $file | tr '[a-z]' '[A-Z]'`end</P< p>。
1. switch 的用法,注意每一个case 必须要以breaksw 结尾否则会继续执行下一个case 的命令(1) 另外,$< 的意思是取得使用者的stand input(2) echo 若加上-n 的选项,则游标会停留在该行最后echo -n "Input one color: "set STOPLIGHT = $<switch ($STOPLIGHT)case red:echo "red"breakswcase orange:echo "orange"breakswcase green:echo "green"breakswdefault:echo "you input $STOPLIGHT"endsw--------------------------------------------------------------------2. 利用set 来取得变数,set ABC = "I am ABC"也可以利用`command` 来取得命令且外,case 也可以用万用字元* 来代替set VER = `uname -r`switch ($VER)case 5.5:echo "run the setup of $VER"breakswcase 5.3:echo "run the setup of $VER"breakswcase 5.*:echo "like 5.x"breakswcase 4.*:echo "like 4.x"breakswdefault:echo "no idea"endsw-------------------------------------------------------------------- 3. if 的语法,比较数字set n1 = 1set n2 = 2if ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif-------------------------------------------------------------------- 4. if 的语法,比较字串set n1 = abcdefset n2 = abcdeif ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif-------------------------------------------------------------------- 5. if 的语法,比较相似的字串set n1 = abcdefset n2 = abcdeif ($n1 =~ $n2) thenecho "$n1 Like $n2"elseecho "$n1 Not Like $n2"endif-------------------------------------------------------------------- 6. if 的语法,比较数字的大小set n1 = 1set n2 = 2if ($n1 > $n2) thenecho "$n1 > $n2"elseecho "$n1 < $n2"endif-------------------------------------------------------------------- 7. 每分钟执行一次的程式# mm 等于当天时间的【分钟】数set mm = `date | cut -d' ' -f4 | cut -d: -f2`if ( -r $0.out ) thenrm $0.outtouch $0.outelsetouch $0.outendifwhile ( $mm <= 16 )set mm = `date | cut -d' ' -f4 | cut -d: -f2`echo "$mm now is `date`"sleep 60#echo "$mm now is `date`" >> $0.outendecho "Over" >> $0.out-------------------------------------------------------------------- 8. 一个回圈的范例,并且利用expr 去作加的动作回圈的语法如下:foreach number (1 2 3)echo $numberendset counter = 0while ($counter <= 10)echo "sleeping for 5 seconds"sleep 5counter = `expr $counter + 1 `end-------------------------------------------------------------------- 9. 设定一个用当天月份与日期作为档案名称的程式如今天是10/02 , 则$prefix 会等于该程式+ 1002date.csh1002set prefix = `basename $0``date '+ %m%d'`echo $0echo $prefix--------------------------------------------------------------------10. 移除在foreach 回圈内指定的档案内的font 字串foreach file ([b,e,g,h,s]*.html)echo -n "Processing $file, remove the line number `grep -n font $file`"# $log 表示这个$file 有几个font 字串set log = `grep -c font $file`if ( $log == '0' ) thenecho ", pass $file"else# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3dset cmd = `grep -n font $file | cut -d: -f1 | head -1`d# 利用sed 去执行删除的动作,并把结果输出到${file}1sed $cmd $file > ${file}1# 如果${file}1 没有资料,则passingif ( -z ${file}1 ) thenecho " , ${file}1 is zero"elsecp ${file}1 $filerm {$file}1echo " , $file remove ok"endifendifend# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个# sed /font/d $file > ${file}1# 一次OK, 我真是大笨蛋--------------------------------------------------------------------11. 功能:将指定的档案中,出现第一次【回】的那一行,加上<title> xxxx </title>foreach file (sky*.html)set filetitle = ftitle# 主要部份为sed 部份s/^ *// 表示将该行第一个字元前的空白删除echo "<title>`grep 回$file | head -1 | sed -e 's/^ *//'`</title>" > $ftitle# 将刚刚那一行,再插回去head -1 $file > ${file}headsed 1d $file > ${file}1cat $ftitle >> ${file}headcat ${file}1 >> ${file}headcp ${file}head $filerm ${file}1rm $ftitlerm ${file}headecho "$file ok"end--------------------------------------------------------------------12. 一个实际建立一个ftp server 的程式里面包括许多应用,相当有参考价值( 未完成)set path = ( /usr/bin /usr/sbin )#set true = `grep -c ftp /etc/passwd`if ( $true == 0 ) thenecho "no ftp user in your system"echo -n "do you want to create the ftp user? "set answer = $<if ($answer == 'y' || $answer == 'Y') thenset maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`echo $maxidset newid = `expr $maxid + 1`echo $newidecho "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"endifelseecho "Good. Your system already has the ftp user. "set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`echo $ftphomeendifif ( -z $ftphome ) thenecho "ftphome must be non-null"exit 2endifif ( $ftphome == "/usr" || $ftphome == "/" ) then echo "ftphome can't be / or /usr"exit 2endif# create the ftp home directoryif ( ! -d $ftphome ) thenecho "mkdir $ftphome"endifecho "Setting up the ftphome for SunOS `uname -r`"if ( ! -d $ftphome ) thenecho "mkdir -p $ftphome/usr/bin"endifcp /bin/ls $ftphome/usr/binchmod 111 $ftphome/usr/bin/lschown root $ftphome/usr/binchmod 555 $ftphome/usr/binif ( -r $ftphome/bin ) thenmv -f $ftphome/bin $ftphome/Obinendifln -s usr/bin $ftphome-------------------------------------------------------------------- 13. 取得该使用者的UIDif ( $#argv == 0 ) thenecho "$0 usage: $1 username"exit 2endifset uid = `grep $1 /etc/passwd | cut -d: -f3`echo $uid-------------------------------------------------------------------- 14. 将指定档案内的html 取代成htmforeach file ( *.html )echo "Processing $file ..."sed s/html/htm/ $file > ${file}1cp ${file}1 $filerm ${file}1end--------------------------------------------------------------------15. 一个简简单单的范例,看看就好#!/bin/csh -fecho .................echo WELCOME to \* TAPE COPY \*echo .................echo Enter your name:# $< can read from stand inputset name = $<echo " "echo Hi $name \!set D = `date`echo Today\'s date is $D[1] $D[2] $D[3]if ($D[1] == Mon) thenecho -------------------------------------------------------------echo Today is $D[1]day $name, it\'s time to copy your directorys\!echo -------------------------------------------------------------elseecho -------------------------------------------------------------echo Today is $D[1]day $name, no tape copies today\!echo -------------------------------------------------------------endif--------------------------------------------------------------------16. 一个finger 的程式set FINGER = "/usr/ucb/finger"if ( -x $FINGER ) thenif ( $#argv == 0 ) thencat << TAG---------------------------------Hahahah ....---------------------------------TAGelse$FINGER "$*"endifelseecho "Cannot find finger on this system."endif--------------------------------------------------------------------17. 取得变数的方法set W = `who -r`echo $W[9]--------------------------------------------------------------------18. 更改档案名称,将*.html --> *.htm# rename *.html to *.htmecho -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endifforeach file ( *.html )echo "Processing $file to `basename $file .html`.htm "mv $file `basename $file .html`.htmend--------------------------------------------------------------------19. 更改档案名称,将*.htm --> *.htmlecho -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endif# rename *.htm to *.htmlforeach file ( *.htm )echo "Processing $file to `basename $file .htm`.html "mv $file `basename $file .htm`.htmlend-------------------------------------------------------------------- 20. 将大写的档名改成小写的档名tr string1 string2 会将standard input 的字串,所对应到的string1, 都以string2 取代foreach file ( * )mv $file `echo $file | tr '[A-Z]' '[a-z]'`end-------------------------------------------------------------------- 21. 将小写的档名改成大写的档名foreach file (*)mv $file `echo $file | tr '[a-z]' '[A-Z]'`end</P< p>。
genesis2000脚本GUI界面编写下面就是Genesis的GUI的demo程序,从里面可以学到几乎全部的GUI的功能了.前面的变量设定的部份省略不讲,大家可以参考Shell编程#!/bin/csh# This script is for GUI demo.############################################################## ####################alias gui '${GENESIS_DIR}/e${GENESIS_VER}/all/gui'alias gui_out 'echo !:* >> $GuiDefFile'alias gui_lst 'cat !:* >> $GuiDefFile'alias dogui 'gui < $GuiDefFile > $GuiDatFile; source $GuiDatFile; rm -f $GuiDefFile $GuiDatFile'if ($?GENESIS_TMP) thenset TMP = $GENESIS_TMPelse if ($?GENESIS_DIR) thenset TMP = $GENESIS_DIR/tmpelseset TMP = /genesis/tmpendif# Set gui parametersset GuiDefFile = $TMP/GuiDefFile.$$set GuiDatFile = $TMP/GuiDatFile.$$# Set fonts for gui #设定字体前三码表示字体格式,后两码数字表示大小#格式三码h 表字型(可选t) b表字宽粗体(bold)(可选m,细体) r表字正(可选i 表斜体)set TitleFont = hbr18set NormFont = hbr14set HintFont = hbi14# Set colors for gui #颜色是用RGB的型式表示,可以用Genesis中OPTION下COLOR功能来选自己喜欢的,#然后设定到GUI中去每一种颜色用两位数字表示99表示最深00表示最浅依次为R-red G-Green B-Blueset RedColor = 990000set WhiteColor = 999999set TitleColor = 772288set NormColor = 222299############################################################## #set job_list = `dbutil list jobs | awk '{print $1}'`gui_out WIN 200 200 #确定GUI窗口左上角在屏幕中的位置gui_out BG $WhiteColor #BG background背景颜色gui_out LABEL @/tmp/orblogo.xbm #添加标签(可以是一串字符,也可以是一个XPM格式图片我们在#后面会讨论如果制作这种图片,在6.如何加入中文里有说明)gui_out BG $TitleColorgui_out FG $WhiteColor #FG font ground字体颜色gui_out LABEL GUI Demogui_out BG $NormColorgui_out TEXT user_name User name : #TEXT文字输入窗口,并将值传给user_name变量, 显示”User name”gui_out DTEXT user_name Beyond Li #设定文字窗口的初始值Default TEXT=>DTEXT, 初始为Beyond Ligui_out BW 3 #BW 区隔线宽BOLD Width 设为3gui_out FORM #表格开始gui_out LABEL 'Select Job -->'gui_out LIST StepJob 5 S 1 #LIST列表选择功能StepJob为变量5表示显示5行S表示单选#多选为M, 1表示显示时从第1个项目开始显示foreach JobName ($job_list) #这里将除了genesislib以外的所有料号名都显示于LIST列表中if ($JobName != "genesislib") thengui_out $JobName #列表的内容endifendgui_out END #LIST功能结束(LIST传回的值为具体的列表中的值)gui_out ENDFORM #表格结束gui_out BW 1gui_out OPTION pnl_size Panel size: #OPTION下拉选项功能pnl_size 为变量显示”Panel size”gui_out 16x18 #选项的内容gui_out 18x24gui_out 20x24gui_out END #选项功能结束(OPTION传回的值为项目内容具体的值如16x18等)gui_out RADIO sel_pnl 'Panel name method:' H 1 $RedColor #RADIO点选功能变量为sel_p nl “’ . ’”为显示内容#H表示水平显示1表示一栏来显示最后是颜色gui_out Default #供点选的内容gui_out Keyingui_out END #点选功能结束gui_out FORM sel_pnl 2 #表格开始注意到后面有变量sel_pnl 2表示当sel_pnl选2时表格#才显现出来否则将以阴影不可编辑或选择的方式来显示gui_out TEXT pnl_name Panel name:gui_out ENDFORMgui_out CLABEL OK #按钮功能显示”OK”gui_out END #功能结束dogui #将这些传到GUI的程序中,它就会生成我们要的GUI界面.笔者通常在GUI最后,dogui之前加入一个RADIO让人员可以选择是否退出如下gui_out RADIO Exit_Chk 'Exit:' H 1 $RedColor #RADIO点选功能变量为sel_pnl “’ . ’”为显示内容#H表示水平显示1表示一栏来显示最后是颜色gui_out No #供点选的内容gui_out Yesgui_out END #点选功能结束在dogui后紧接着就设置检查if ( $Exit_Chk == 2 ) thenexit 0endif这样就可随时推出目前的GUI画面.其它的应用大家就要思考自己的工作要求,然后将这些功能灵活使用了.。
Genesis2000使用方法介绍Genesis2000是一款功能强大的集成开发环境(IDE),它主要用于开发基于Genesis语言的软件应用。
Genesis是一种面向对象的编程语言,它结合了多种编程范式和技术,使开发者能够快速且高效地构建应用程序。
在本文中,我将向您介绍Genesis2000的使用方法,帮助您更好地了解和使用这个强大的工具。
一、安装Genesis2000二、创建项目打开Genesis2000后,您需要创建一个新的项目。
点击菜单栏的“文件”-“新建项目”,或者使用快捷键Ctrl + N。
在弹出的对话框中,选择项目的名称和存储路径。
点击“确定”按钮,即可创建一个新的Genesis项目。
三、编写代码四、调试代码Genesis2000内置了调试功能,帮助您在开发过程中找到和修复代码中的错误。
您可以设置断点,在代码执行到断点处时暂停程序的执行,并观察变量的值、调用堆栈等信息。
调试功能可以有效地帮助您定位和解决问题。
五、构建和运行项目在Genesis2000中,您可以轻松地构建和运行项目。
点击菜单栏的“生成”-“构建项目”,或者使用快捷键F9,即可编译项目。
编译完成后,您可以点击菜单栏的“运行”-“运行项目”或者使用快捷键Ctrl +F9,即可运行项目。
您还可以选择“调试运行”,以在调试模式下运行项目。
六、部署和发布项目当您开发完成一个Genesis应用程序后,您可以选择将其部署到目标环境中。
Genesis2000提供了灵活的部署和发布选项。
您可以选择将应用程序打包为可执行文件、生成安装程序,或者将它部署到云平台等。
根据您的需求,选择适合的部署和发布方式进行操作。
七、学习资源和社区支持Genesis2000拥有一个庞大的用户社区,您可以通过参加社区活动、访问论坛和博客等方式获取更多的学习资源和支持。
Genesis官方网站还提供了大量的教程、文档和示例代码,帮助您快速入门和掌握Genesis2000。
本章内容主要介绍genesis自动化程序编写运行环境:首先对genesis2000软件进行简单的介绍;而后介绍genesis2000自动化程序的开发方式和开发语言;最后介绍自动化程序在软件中的接口。
1.1、 genesis2000软件简介:Genesis2000软件是由Orbotech与Valor的合资公司—Frontline公司开发的CAM系统,其目的是为实工程现制前自动化,为CAM处理提供最佳解决方案,由于该软件拥有很强大的功能,很多PCB生产公司都已使用它为CAM 制前服务,笔者认为该软件有以下几方面的优点:1)令人喜欢的操作界面genesis2000软件界面设计人性化,操作简单,易学。
2)用ODB++格式,使用ODB++格式有以下三个优点:(1):使设计和制造之间数据交换最优化。
(2):目前唯一性的可扩充的结构。
(3):更精确的数据描述。
3)强大的操作辅助指令genesis2000软件的操作辅助指令可以简化很多复杂的工作,很简单的操作就可以达到我们想要的目的。
4)大的分析和优化功能genesis2000软件的Analysis和DFM功能在精密度要求越来越高的PCB行业显得极为重要,它自动进行精密的分析和优化,而用手动操作根本不可能实现。
5)自动化程序开发genesis2000软件的自动化程序可以让我们任何有规律的操作,有迹可寻的设定变成自动化,大大节省制作时间和减少人为误操作。
6)不断的围绕用户升级genesis2000软件不断围绕用户的需求进行开发新的实用的功能,笔者在使用的几年间,genesis2000开发了很多新的功能。
1.2:genesis2000软件自动化程序开发方式和语言:1.2.1genesis2000软件自动化程序的编写方式可分为以下三种:1)scripts2)hooks3)forms and flows1.2.2genesis2000软件自动化程序编写语言genesis2000软件自动化程序编写语言可以用多种语言进行实现:如SH、CSH、BSH、KSH、TCL/TK、PERL/TK,等等,本书主要介绍CSH,和PERL/TK两种比较常用的编写语言。
自动化程序编写和运行环境本章内容主要介绍genesis自动化程序编写运行环境:首先对genesis2000软件进行简单的介绍;而后介绍genesis2000自动化程序的开发方式和开发语言;最后介绍自动化程序在软件中的接口。
1.1、 genesis2000软件简介:Genesis2000软件是由Orbotech与Valor的合资公司—Frontline公司开发的CAM系统,其目的是为实工程现制前自动化,为CAM处理提供最佳解决方案,由于该软件拥有很强大的功能,很多PCB生产公司都已使用它为CAM 制前服务,笔者认为该软件有以下几方面的优点:1)令人喜欢的操作界面genesis2000软件界面设计人性化,操作简单,易学。
2)用ODB++格式,使用ODB++格式有以下三个优点:(1):使设计和制造之间数据交换最优化。
(2):目前唯一性的可扩充的结构。
(3):更精确的数据描述。
3)强大的操作辅助指令genesis2000软件的操作辅助指令可以简化很多复杂的工作,很简单的操作就可以达到我们想要的目的。
4)大的分析和优化功能genesis2000软件的Analysis和DFM功能在精密度要求越来越高的PCB行业显得极为重要,它自动进行精密的分析和优化,而用手动操作根本不可能实现。
5)自动化程序开发genesis2000软件的自动化程序可以让我们任何有规律的操作,有迹可寻的设定变成自动化,大大节省制作时间和减少人为误操作。
6)不断的围绕用户升级genesis2000软件不断围绕用户的需求进行开发新的实用的功能,笔者在使用的几年间,genesis2000开发了很多新的功能。
1.2:genesis2000软件自动化程序开发方式和语言:1.2.1genesis2000软件自动化程序的编写方式可分为以下三种:1)scripts2)hooks3)forms and flows1.2.2genesis2000软件自动化程序编写语言genesis2000软件自动化程序编写语言可以用多种语言进行实现:如SH、CSH、BSH、KSH、TCL/TK、PERL/TK,等等,本书主要介绍CSH,和PERL/TK两种比较常用的编写语言。
genesis2000培训教程(多场合应用)Genesis2000培训教程引言本文档旨在为您提供关于Genesis2000软件的全面培训教程。
通过本教程,您将了解Genesis2000的基本概念、功能特点以及操作方法,从而更好地掌握和应用该软件。
第一章:Genesis2000简介1.1软件背景Genesis2000是一款专业的印刷电路板(PCB)设计软件,由Altium公司开发。
自推出以来,Genesis2000凭借其强大的功能和友好的用户界面,在PCB设计领域得到了广泛的应用。
1.2软件特点(1)高度集成的设计环境:Genesis2000提供了一个统一的设计环境,使得PCB设计过程中的各个阶段可以无缝衔接。
(2)强大的布线功能:Genesis2000具备强大的布线功能,支持自动布线和手动布线,满足不同设计需求。
(3)丰富的库管理:Genesis2000内置了丰富的元件库和封装库,方便用户快速调用。
(4)高效的团队合作:Genesis2000支持多人协同设计,提高设计效率。
第二章:Genesis2000安装与启动2.1系统要求(1)操作系统:WindowsXP/Vista/7/8/10(4)硬盘:至少2GB的可用空间2.2安装步骤(1)将Genesis2000安装光盘放入光驱,打开安装程序。
(2)按照安装向导提示,完成安装过程。
2.3启动软件安装完成后,双击桌面上的Genesis2000快捷方式,启动软件。
第三章:Genesis2000基本操作3.1工作界面启动Genesis2000后,您将看到如下工作界面:(1)菜单栏:包含文件、编辑、查看、工具等菜单项。
(2)工具栏:提供常用功能的快捷操作。
(3)设计区域:用于显示和编辑PCB设计。
(4)面板:提供元件库、封装库、设计规则等信息的浏览和管理。
3.2新建项目(1)菜单栏中的“文件”→“新建”→“项目”,新建一个项目。
(2)在弹出的对话框中,输入项目名称,选择项目存储路径,“确定”。
genesis2000脚本简单的csh语法讲解一、变数1. 字串变数这个部分和Bourne Shell的变数一样,只不过在设定变数值时不能使用BourneShell的方式,而必须打:set var=value2. 数字运算基本上C Shell 没有数字变数,但C Shell 却有简单的方法处理数字运算:@ var operator expressionoperator可以是C 语言中的=, +=, -=,……,而expression则是运算式。
运算式的运算子如下:A. () 改变计算的顺序~@B. ~ 位元NOT运算@~~! 逻辑否定C.% 取馀数/ 除* 乘- 减+ 加D.>> 右移<< 左移E.> 大於< 小於>= 大於等於<= 小於等於!= 不等於== 等於F.& 位元AND运算^ 位元XOR运算| 位元OR 运算G.&& 逻辑AND|| 逻辑OR除此之外,我们也可以检验一个档案的状态,如下-n filename而-n可为下列之一-d 档案是一个目录档案-e 档案存在-f 档案为一般的档案-o 使用者拥有这个档案-r 使用者可以读取这个档案-w 使用者可以写入这个档案-x 使用者可以执行这个档案-z 档案长度为0@ count = count + 1@ flag = -e /users/cc/mgtsai/mail && -e /usr/spool/mail3. 阵列在C Shell 中,我们可以宣告阵列变数,方式如下set var=(val1 val2 ……)而var[1]之值为val1,var[2]之值为val2……。
而$var代表整个阵列。
我们可以用$#var 来计算阵列个数,也可以用$?var 来检查某个变数是否已宣告。
4. 特殊变数$argv 和Bourne Shell的$*相似,只不过这是一个阵列。
Genesis2000脚本编写常用命令解析1. switch 的用法,注意每一个case 必须要以breaksw 结尾否则会继续执行下一个case 的命令(1) 另外,$< 的意思是取得使用者的stand input(2) echo 若加上-n 的选项,则游标会停留在该行最后echo -n "Input one color: "set STOPLIGHT = $<switch ($STOPLIGHT)case red:echo "red"breakswcase orange:echo "orange"breakswcase green:echo "green"breakswdefault:echo "you input $STOPLIGHT"endsw2. 利用set 来取得变数,set ABC = "I am ABC"也可以利用`command` 来取得命令且外,case 也可以用万用字元* 来代替set VER = `uname -r`switch ($VER)case 5.5:echo "run the setup of $VER"breakswcase 5.3:echo "run the setup of $VER"breakswcase 5.*:echo "like 5.x"breakswcase 4.*:echo "like 4.x"breakswdefault:echo "no idea"endsw3. if 的语法,比较数字set n1 = 1set n2 = 2if ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif4. if 的语法,比较字串set n1 = abcdefset n2 = abcdeif ($n1 == $n2) thenecho "$n1 Equal $n2"elseecho "$n1 Not Equal $n2"endif5. if 的语法,比较相似的字串set n1 = abcdefset n2 = abcdeif ($n1 =~ $n2) thenecho "$n1 Like $n2"elseecho "$n1 Not Like $n2"endif6. if 的语法,比较数字的大小set n1 = 1set n2 = 2if ($n1 > $n2) thenecho "$n1 > $n2"elseecho "$n1 < $n2"endif7. 每分钟执行一次的程式# mm 等于当天时间的【分钟】数set mm = `date | cut -d' ' -f4 | cut -d: -f2`if ( -r $0.out ) thenrm $0.outtouch $0.outelsetouch $0.outendifwhile ( $mm <= 16 )set mm = `date | cut -d' ' -f4 | cut -d: -f2` echo "$mm now is `date`"sleep 60#echo "$mm now is `date`" >> $0.outendecho "Over" >> $0.out8. 一个回圈的范例,并且利用expr 去作加的动作回圈的语法如下:foreach number (1 2 3)echo $numberendset counter = 0while ($counter <= 10)echo "sleeping for 5 seconds"sleep 5counter = `expr $counter + 1 `end9. 设定一个用当天月份与日期作为档案名称的程式如今天是10/02 , 则$prefix 会等于该程式+ 1002date.csh1002set prefix = `basename $0``date '+ %m%d'`echo $0echo $prefix10. 移除在foreach 回圈内指定的档案内的font 字串foreach file ([b,e,g,h,s]*.html)echo -n "Processing $file, remove the line number `grep -n font $file`"# $log 表示这个$file 有几个font 字串set log = `grep -c font $file`if ( $log == '0' ) thenecho ", pass $file"else# 先找出该档案的第一次出现font 的行数,如果3,则$cmd = 3d set cmd = `grep -n font $file | cut -d: -f1 | head -1`d# 利用sed 去执行删除的动作,并把结果输出到${file}1sed $cmd $file > ${file}1# 如果${file}1 没有资料,则passingif ( -z ${file}1 ) thenecho " , ${file}1 is zero"elsecp ${file}1 $filerm {$file}1echo " , $file remove ok"endifendifend# 后来看过sed 的更进一步用法,发现先前写的太笨了,试试这个# sed /font/d $file > ${file}1# 一次OK, 我真是大笨蛋11. 功能:将指定的档案中,出现第一次【回】的那一行,加上<title> xxxx </title>foreach file (sky*.html)set filetitle = ftitle# 主要部份为sed 部份s/^ *// 表示将该行第一个字元前的空白删除echo "<title>`grep 回$file | head -1 | sed -e 's/^ *//'`</title>" > $ftitle# 将刚刚那一行,再插回去head -1 $file > ${file}headsed 1d $file > ${file}1cat $ftitle >> ${file}headcat ${file}1 >> ${file}headcp ${file}head $filerm ${file}1rm $ftitlerm ${file}headecho "$file ok"end12. 一个实际建立一个ftp server 的程式里面包括许多应用,相当有参考价值( 未完成)set path = ( /usr/bin /usr/sbin )#set true = `grep -c ftp /etc/passwd`if ( $true == 0 ) thenecho "no ftp user in your system"echo -n "do you want to create the ftp user? "set answer = $<if ($answer == 'y' || $answer == 'Y') thenset maxid = `sort /etc/passwd | tail -1 | cut -d: -f3`echo $maxidset newid = `expr $maxid + 1`echo $newidecho "/usr/sbin/useradd -d /home1/ftp -u $newid -s /etc/false ftp"endifelseecho "Good. Your system already has the ftp user. "set ftphome = `grep ftp: /etc/passwd | cut -d: -f6`echo $ftphomeendifif ( -z $ftphome ) thenecho "ftphome must be non-null"exit 2endifif ( $ftphome == "/usr" || $ftphome == "/" ) then echo "ftphome can't be / or /usr"exit 2endif# create the ftp home directoryif ( ! -d $ftphome ) thenecho "mkdir $ftphome"endifecho "Setting up the ftphome for SunOS `uname -r`"if ( ! -d $ftphome ) thenecho "mkdir -p $ftphome/usr/bin"endifcp /bin/ls $ftphome/usr/binchmod 111 $ftphome/usr/bin/lschown root $ftphome/usr/binchmod 555 $ftphome/usr/binif ( -r $ftphome/bin ) thenmv -f $ftphome/bin $ftphome/Obinendifln -s usr/bin $ftphome13. 取得该使用者的UIDif ( $#argv == 0 ) thenecho "$0 usage: $1 username"exit 2endifset uid = `grep $1 /etc/passwd | cut -d: -f3`echo $uid14. 将指定档案内的html 取代成htmforeach file ( *.html )echo "Processing $file ..."sed s/html/htm/ $file > ${file}1cp ${file}1 $filerm ${file}1end15. 一个简简单单的范例,看看就好#!/bin/csh -fecho .................echo WELCOME to \* TAPE COPY \*echo .................echo Enter your name:# $< can read from stand inputset name = $<echo " "echo Hi $name \!set D = `date`echo Today\'s date is $D[1] $D[2] $D[3]if ($D[1] == Mon) thenecho -------------------------------------------------------------echo Today is $D[1]day $name, it\'s time to copy your directorys\!echo -------------------------------------------------------------elseecho -------------------------------------------------------------echo Today is $D[1]day $name, no tape copies today\!echo -------------------------------------------------------------endif16. 一个finger 的程式set FINGER = "/usr/ucb/finger"if ( -x $FINGER ) thenif ( $#argv == 0 ) thencat << TAG---------------------------------Hahahah ....---------------------------------TAGelse$FINGER "$*"endifelseecho "Cannot find finger on this system."endif17. 取得变数的方法set W = `who -r`echo $W[9]18. 更改档案名称,将*.html --> *.htm# rename *.html to *.htmecho -n "This will change *.html to *.htm. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endifforeach file ( *.html )echo "Processing $file to `basename $file .html`.htm "mv $file `basename $file .html`.htmend--------------------------------------------------------------------19. 更改档案名称,将*.htm --> *.htmlecho -n "This will change *.htm to *.html. Can I continue ? (y/n) : " set input = $<if ( $input != "y" && $input != "Y" ) thenecho "Ok. Quit..."exit 2endif# rename *.htm to *.htmlforeach file ( *.htm )echo "Processing $file to `basename $file .htm`.html "mv $file `basename $file .htm`.htmlend20. 将大写的档名改成小写的档名tr string1 string2 会将standard input 的字串,所对应到的string1, 都以string2 取代foreach file ( * )mv $file `echo $file | tr '[A-Z]' '[a-z]'`end21. 将小写的档名改成大写的档名foreach file (*)mv $file `echo $file | tr '[a-z]' '[A-Z]'`end。
Csh的基本语法介绍在*unix系统中,常⽤的shell有sh,bash,csh/tcsh, ksh.sh来⾃于systemV的Unix,是传统的Unix的shell,直到现在很多的系统管理员仍然喜欢使⽤sh。
bash来⾃于BSD Unix,语法⾮常类似于C语⾔,所以通常有C/C++编程背景的开发⼈员最喜欢使⽤。
ksh是对sh的扩展,且吸收了csh的⼀些有⽤的功能,但是由于开始ksh的license是AT&T,所以后来出现了很多的ksh的开源版本,例如mksh,pdksh等。
bash是现在很多Linux的发⾏版中默认的shell,综合了其他shell的很多优点。
下⾯描述csh的⼀些基本的语法(在sh环境中执⾏csh切换到csh环境):1)变量通过set来定义局部变量x,通过$x或${x}来使⽤变量x的值,$%x表⽰变量的值的长度, $?x来判断变量x是否设置,如设置则为1,否则为0。
复制代码代码如下:set x = 5echo $xecho ${x}kgecho $%x全局变量的定义setenv v value 该变量将被此shell派⽣的所有⼦shell继承。
$$表⽰当前进程的PID, $status 或 $? 表⽰退出状态。
2)数组定义数组myarr, 通过$myarr[index]来访问数组中的值,注意index是从1开始的。
通过$myarr或$myarr[*]来访问数组所有的元素。
通过$#myarr来查看元素的个数。
复制代码代码如下:set myarr = (str1, str2,str3)echo $myarr[2]echo $myarrecho $myarr[*]3)命令替换通过set x = `cmd`来执⾏命令,且结果赋值给变量。
复制代码代码如下:set d = `date`echo $decho $d[6]-$d[2]-$d[3]4)命令⾏参数通过$argv[1],$argv[2]或$1,$2来访问命令⾏参数。
自动化阻抗制作脚本使用说明1,脚本运行环境:WINDOWS 操作系统,GENESIS8.2、GENESIS9.1、GENESIS9.2、GENESIS9.8 2,制作阻抗测试条种类。
差动阻抗(DF),特性阻抗(SE)。
3,程式运行界面和介绍。
阻抗信息显示区。
A,阻抗信息录入,首先阻搞信息,请确定录入阻抗是的状态,如果状态不对,参考资料将保证是正B.TopRefLayer : 阻抗顶层,即顶层C.BotRefLayer: 阻抗不,测试阻抗条底层。
D.ArtWorkLine :工作稿线宽。
E.ArtWorkSpacing :工作稿线距。
F.SafeCopperSpacing:阻抗线线距铜皮距离。
G.SafeCopperWidthMin:保护铜皮最小宽度。
H.Imp:阻抗值(注:此参数仅添加文字标注时用)。
I.ImpTol:阻抗公差(注:此参数仅添加文字标注时用)。
J.阻抗条宽:测试条宽度。
K.阻抗条长:阻抗条长度。
L.阻抗定位孔:阻抗定位孔左右各一个(左右距板边各1.5MM,上下居阻抗条宽中心)。
M.阻抗测试孔:阻抗测试孔大小为1.00mm。
单组阻抗信息:New:选项:新增阻抗,点击《添加阻抗参数》为新增一组阻抗值。
View选项:点击《添加阻抗参数》,自动计算阻抗组数和添加阻抗条数量,以及查看当Order组数的详细信息。
Edit选项:双击阻抗信息显示区对应ORDER对应组数如下,刚才当前为View,修改时点选EDIT,修改当前组抗条的参数,再选《添加阻抗参数》执行编辑。
所有阻抗参数添加OK后,执行《添加阻抗条》。
结果如下:。
genesis2000脚本简单的csh语法讲解
一、变数
1. 字串变数
这个部分和Bourne Shell的变数一样,只不过在设定变数值时不能使用Bourne
Shell的方式,而必须打:
set var=value
2. 数字运算
基本上C Shell 没有数字变数,但C Shell 却有简单的方法处理数字运算:
@ var operator expression
operator可以是C 语言中的=, +=, -=,……,而expression则是运算式。
运
算式的运算子如下:
A. () 改变计算的顺序
~@
B. ~ 位元NOT运算
@~~
! 逻辑否定
C.
% 取馀数
/ 除
* 乘
- 减
+ 加
D.
>> 右移
<< 左移
E.
> 大於
< 小於
>= 大於等於
<= 小於等於
!= 不等於
== 等於
F.
& 位元AND运算^ 位元XOR运算| 位元OR 运算G.
&& 逻辑AND
|| 逻辑OR
除此之外,我们也可以检验一个档案的状态,如下
-n filename
而-n可为下列之一
-d 档案是一个目录档案
-e 档案存在
-f 档案为一般的档案
-o 使用者拥有这个档案
-r 使用者可以读取这个档案
-w 使用者可以写入这个档案
-x 使用者可以执行这个档案
-z 档案长度为0
@ count = count + 1
@ flag = -e /users/cc/mgtsai/mail && -e /usr/spool/mail
3. 阵列
在C Shell 中,我们可以宣告阵列变数,方式如下
set var=(val1 val2 ……)
而var[1]之值为val1,var[2]之值为val2……。
而$var代表整个阵列。
我们
可以用$#var 来计算阵列个数,也可以用$?var 来检查某个变数是否已宣告。
4. 特殊变数
$argv 和Bourne Shell的$*相似,只不过这是一个阵列。
$argv[n] 和Bourne Shell的$n相同,但不受个数限制。
$#argv 和Bourne Shell的$#相同
$home 和Bourne Shell的$HOME相同
$path 和Bourne Shell的$PATH相似,只不过这是一个阵列$prompt 和Bourne Shell的$PS1相同
$shell Shell的路径名称
$status 和Bourne Shell的$?相同
$$ 和Bourne Shell的$$相同
$< 键盘输入
二、执行命令
基本上和Bourne Shell相同,只有一点在Bourne Shell中的”.”命令在C Shell 中
则为”source”命令。
三、流程控制
在C Shell 中流程控制不像Bourne Shell中一般需要使用test命令。
相反地,它和
C 语言类似只要在条件中写出运□式即可。
当运算结果不为零时,其值为真,为零
时其值为伪。
以下是C Shell的流程控制
1. if
语法如下
if (expression) simple-command
2. goto
语法如下
goto label
这时程式会跳至以l”label:”开头的那一行执行
if ($#argv == 2) goto goodargs
echo ‘Please use two arguments.’
exit
goodrags:
…
3. if then else
这和Bourne Shell的if then, if then else, if then elif 相似。
语法如下A. if (expression) then
commands
endif
B. if (expression) then
commands
else
commands
endif
C. if (expression) then
commands
else if (expression) then
else
commands
endif
4. foreach
这和Bourne Shell的for in相似。
语法如下
foreach var (arg-list)
commands
end
5. while
这和Bourne Shell的while相似。
语法如下
while (expression)
commands
end
6. break及continue
这和Bourne Shell的break 及continue相似,是用来中断foreach 及while 回
圈。
7. switch
这和Bourne Shell的case相似。
语法如下
switch (string)
case pat1:
breaksw
case pat2:
commands2
breaksw
case pat3:
commands3
breaksw
endsw
□附录A expr命令
命令格式
expr expression
叙述
expression是由字串以及运算子所组成,每个字串或是运算子之间必须用空白隔开。
下表是运算子的种类及功能,而优先顺序则以先後次序排列,我们可以利用小括
号来改变运算的优先次序。
其运算结果则输出至标准输出上。
: 字串比较。
比较的方式是以两字串的第一个字母开始,而以第二个字串的
字母结束。
如果相同时,则输出第二个字串的字母个数,如果不同时则传
回0 。
* 乘法
/ 除法
% 取馀数
+ 加法
- 减法
< 小於
<= 小於等於
= 等於
!= 不等於
>= 大於等於
> 大於
& AND运算
| OR运算
当expression中含有”*”, “(”, “)”等符号时,必须在其前面加上””,以免被
Shell 解释成其它意义。
expr 2 * ( 3 + 4 ) 其输出为14
□附录B test命令
命令格式
test expression
叙述
expression中包含一个以上的判断准则以作为test评诂的标准。
两准则间用”-a”代
表逻辑AND 运算,”-o”代表逻辑OR运算,而在准则前放置一”!”代表NOT 运算。
如
果没有括号,则优先权则为”!” > “-a” > “-o”。
和expr命令相同,相使用左右括
号时,必须在其前面加上””。
以下是有关准则的叙述(合叙述时传回真,否则传
回伪):
string string不为空白字串
-n string string的长度大於0
-z string string的长度等於0
string1=string2 string1等於string2
string1!=string2 string1不等於string2
int1 -gt int2 int1大於int2
int1 -ge int2 int1大於等於int2
int1 -eq int2 int1等於int2
int1 -ne int2 int1不等於int2
int1 -le int2 int1小於等於int2
int1 -lt int2 int1小於int2
-r filename 档案可读取
-w filename 档案可写入
-x filename 档案可执行
-f filename 档案为一般档
-d filename 档案为目录
-s filename 档案为非空的一般档test -r “$filename” -a -s “$filename”。