基本命令命令简要说明aliashistorysethistory100建立历史命令的列表长度为100setsavehist100将登陆过程中最近的100个事件记录下来退出后下次登陆依然可见用起始的命令重新执行先前的命令重新执行前一条命令nn为正数时表示执行历史列表中第n条命令n为负数表示执行倒数第n条命令需要注意当前输入的n会先被存入history列表再计算nstring当感叹号后跟字符串时将重新执行的命令是以字符串开头的最近一条命令nw选中特定事件中的某个单词其中n与前面描述定义相同冒号后的字符指定事件中的具体字符如w为单个数字表示事件中的第w个单词w从0开始如w表示事件中的第一个单词如w表示事件中最后一个单词如w24表示事件中第2到第4个单词以此类推总的来说命令是通过后续的规则将之前命令的全部或部分填到当前命令中然后再解析当前命令并执行cmdsoldnew将当前需要执行的命令cmd中的字符串old用新字符串new替换再执行典型应用当上一条复杂命令存在个别输入错误或想要修改个别参数可用soldnew进行修改oldnew快速替换等效于soldnew如果oldnew后无其它输入可省略最后一个事件修饰符h删除路径最后的元素r删除文件扩展名e删除指定文件扩展名以外东西t删除路径除最后一个外的所有元素p不执行修改后的命令只打印gsoldnew用new替换第一个出现的old若采用g选项则替换所有出现的oldaliasaliasnamevalue用以定义别名等号周围不应该用空格若value中包含空格或tab必须将value用引号包围查看alias列表可直接输入alias查看某条具体的alias输入aliasname别名中的引号双引号如aliasp1xxxxxxxxx变量在别名创建时被扩展单引号如aliasp2xxxxxxxxx变量在别名被使用时扩展别名中使用历史机制例1aliaslastecho4545454545454545454545别名last显示当前命令最后一个参数例2aliasfn2echo2t4545454545454545454545别名fn2显示简单文件名或第二个命令行参数输入命令时如果不希望别名被替换可在前面加unalias命令可删除别名定义命令行扩展大括号机制用于扩展指定文件名用于生成任意字符串例echochaponetwothreetxt前面的chap叫前文后面的后文都是可选的括号内的字符串顺序保留在扩展中大括号扩展可嵌套大括号扩展的另一种用法是创建相关名称的目录例mkdirversionABCDE代字号扩展shell在遇到将它后面的字符串直到第一个符号或没有的情况直到单词结尾当作可能的登陆名若没有这样的登陆名则使用HOME变量替代例echoHOME等效于echoechoxjshen等效于echohomexjshenn参数扩展后跟一个数字时shell把对应该整数的位置参数值替代为记号0指当前程序正在读取的文件的名字例dealpara1para2para3定义deal为一个shell可执行脚本则在deal内0代表deal1代表para1以次类推NAME扩展后跟的变量名整个用以替代用户定义的内容cmd命令扩展无详细描述没搞懂目录栈操作目录栈即目录列表用户可将其当作一个堆叠起来的餐盘在这些餐盘中用户通常从其顶部添加或去除盘子命令dirs显示目录栈的内容如果用户在目录栈为空时调用dirs它将显示工作目录名称pushd将目录推进栈命令执行还会显示堆栈的内容例pushddemo当pushd不带参数时它的功能是交换堆栈顶部的两个目标并让新的顶级目录成为新的工作目录当pushd带n的参数时它的功能是调用堆栈第n个目录将其改变为工作目录并移动到堆顶其中堆栈是从顶部开始标号的从0开始popd从堆栈从删除目录popdn从堆栈从删除非顶级目录文件名补全设置filec使文件名补全功能生效例setfilecxxxshell不在意xxx的具体值键入部分文件名按CONTROLD会显示以键入字符开头的所有文件按ESCAPE自动补全到以键入字符开头的最长文件名变量cshell中变量包含120个字符可以是字母数字下划线但第一个字符不能是数字setsetenv可用于声明显示对变量赋值setsetenv都假定为非数字字符串变量内置命令只对数值变量起作用set都可声明本地变量setenv可声明全局变量set不带参数则显示本地shell变量和值的列表set带参数而不带值则变量值设为nullunset从声明变量中取消变量setenv不带参数则显示环境变量的列表根据规定环境变量必须大写字符串变量数组例setcolorsreggreenblueorangeyellowechocolors3colors24命令为数据变量赋值只跟一个数值参数是语法错误不带参数shell为向用户打印shell变量的列表进行申明和赋值的格式如下veriablenameoperatorexpressionveriablename是用户要赋值的变量名称operator是C语言的赋值运算符之一注意在被赋值的变量前面不能使用美元符号数值变量数组数值变量数组在被赋值前必须用set命令声明声明时可以为数组元素赋值任何值包括0其它数字空字符串等veriablenameindexoperatorexpressionindex指定具体搜寻的元素第一个元素索引为1index必须是数字常量或一个变量不能是表达式特殊变量格式variablename为特殊变量它的值是veriablename数组中元素的数目veriablename为特殊变量用于查看变量是否已经被设置为特殊变量用于从终端读取数值它用于set命令中例echonEnterinputsetinputline表达式表达式可由常量变量和以下运算符组成其中部分是涉及文件而不是数值变量或字符串的表达式运算符功能括号改变计算次序一元运算符一元减号补全逻辑取反递增45递减数学运算符余数除乘减加移位运算符右移左移比较运算符大于小于大于或等于小于或等于不等于比较字符串等于比较字符串amp位运算符与异或同或ampamp逻辑运算符与或表达式遵守以下规则shell将丢失参数或零参数看作是0所有的结果都是十进制数除了和外运算符的参数都是数字用户必须将表达式的每个元素与比邻的元素用空格分开除非相邻元素是amp等变量含有值的变量shell变量说明argv数组变量包含shell调用的命令的命令行参数该数组从1开始索引即argv1表示第1个参数可以使用argv来索引所有参数argv可缩写为argvn可缩写为nargv或表示argv数组元素的数目cdpath它是包含绝对路径名的数组这个变量通常在login中设置如setcdpathhomescotthomescottletters当用户调用带简单文件名的cd命令时它在工作目录寻找具有该名字的子目录如果找到一个那么cd将在cdpath所列出的目录中搜索该文件好像不是这样理解的cwdshell将该变量设置为工作目录的名字当用户通过符号链接访问目录时csh将cwd设置为符号链接的名字filec一旦设置则启用文件名补全功能history控制用户历史列表的大小规定其值必须在100左右home或HOMEHOME环境变量它用于初始化home本地变量HOME的值是用户根目录的路径名path或PATHPATH环境变量path本地变量是由shell通过PATH变量所设置的数组可以搜索path数组中的目录得到可执行命令如果path为空或没有设置用户只能通过给定其全路径才可以执行相应的命令path的设置如下例例setpathusrbinbinusrlocalbinusrbinx11binprompt控制主要提示符类似于PS1变量如没有设置则该提示或例setpromptsavehist指定用户注销时历史列表存储的命令编号这些事件存储在用户根目录下的history文件内shell包含用户使用的shell的路径名status包含上个命令所返回的退出状态time两个功能一使用time命令为命令自动计时二time所采用的计时格式time可被设置为数值或拥有数值和字符串的数组数值用于控制自动计时任何占用过多cpu秒数的命令将使用得命令执行完成后time立即显示命令执行的统计情况值为0导致统计情况在每个命令之后被显示字符串则用于控制统计情况的格式并使用专门的格式序列这些格式序列包含以下内容缺省的time命令使用字符串UuSsEPXDkIOioFpfWw输出格式例00u10s33252000k00io0pf0w详细格式序列见表后user包含用户登陆名该变量包含当前shell的PID号格式序列结果命令运行用户代码所消耗的时间单位是秒用户模式命令运行系统代码所消耗的时间单位是秒核心模式命令所消耗的时钟时间整个时间任务周期内所耗费的时间百分比按照计算命令进程交换到磁盘的次数命令使用的平均共享代码内存量单位是千字节命令使用的数据代码内存量单位是千字节命令使用整个内存内存量就是单位是千字节命令使用的最大内存量单位是千字节主页错误数不得不脱离磁盘读取的内存页输入操作数输出操作数作为开头的shell变量shell变量说明echo当用户调用带x选项的csh时它将设置echo变量用户也可以用set设置echo当echo被设置csh在执行命令前都会显示每个命令ignoreeof设置该变量时用户不能用controld从shell退出只能用exit或logout离开shellnoclobber设置该变量时可防止用户偶然在重定向输出时覆盖用户的文件它还可防止用户在试图将输出追加到不存在文件时创建一个文件为屏蔽这项功能在重定向或追加输出的符号添加惊叹号如和noglob设置该变量时csh不扩展模糊文件名nonomatch设置该变量时csh将把一个不匹配文件的文件索引传递给正被调用的命令当不设置时csh将产生nomatch错误消息而且不执行命令notify设置该变量时将发送一个消息给用户的终端而不论用户的后台工作之一是否完成通常在下一个提示完成之前将立刻通知用户工作完成verbose在用户调用带的选项时声明该变量用户还可以用声明它在这两种情况下使得将在历史替代之后显示每个命令控制结构ifexpressionsimplecommand只对简单命令起作用对管道或命令列表无效可以用ifthen控制结构来执行更复杂的命令除逻辑表达式外用户可以用表达式来返回基于文件状态的值如下nfilename其中n的含义如下表n含义d文件是目录文件e文件存在f文件是普通文件o用户拥有该文件r用户可以读取该文件w用户可以写该文件x用户控制执行该文件或搜索其目录z文件为空长度为0如果指定的文件不存在或不可访问csh将表达式的值算作0否则如果测试结果是true则表达式的值为1如果为false则表达式的值为0gotolabelgoto命令将控制传送给开始于label的表达式onintrlabel中断处理当用户在脚本执行过程中按下中断键shell将把控制传递给以label开始的语句该语句可以让用户在其被中断时正常终止脚本ifthenelse形式1ifexpressionthencommandsendif形式2ifexpressionthencommandselsecommandsendif形式3ifexpresstionthencommandselseifexpresstionthencommandselsecommandsendifforeachforeachloopindexargumentlistcommandsendwhilewhileexpresstioncommandsendbreakcontinue可以用break中断foreach或while这些语句在传递控制前执行命令行中剩下的命令break将控制传递给end之后的语句continue语句则将控制传递给end语句并且持续执行该循环switchswitchteststringcasepatterncommandsbreakswcasepatterncommandsbreakswcasepatterncommandsbreakswdefaultcommandsbreakswendsw内置命令命令功能job等同于fg命令job是用户打算转移到前台的作业的作业编号jobamp等同于bg命令job同上aliasbg将作业转移到后台cddirs显示目录栈echoeval扫描并计算命令行当用户在命令之前放置eval时命令在被执行前被扫描两次exec用同一shell中的其他程序覆盖当前正被执行的程序原来的程序则被丢弃exit从当前cshell中退出当命令后添加数字参数时该数字是shell返回其父进程的退出状态fg将作业转移到前台glob除了不显示参数之前的空格及不在其显示之后添加newline外类似echohashstat报告csh的hash机制的效率hash机制加速了搜索用户的搜索路径下的目录的过程还可以参看该列表中的rehash和unhash命令historyjobs表示当前作业或命令kill终止作业或进程limit限制当前进程和它所创建的进程所使用的计算机资源用户可以限制进程可以使用的CPU时间秒数进程可以创建的文件大小等login登录后面可跟用户名logout如果用户在使用先前登录的shell那么将退出过程nice降低命令或者shell的进程优先权如果用户想运行需要大量CPU资源的命令而用户又不需要立即产生输出那么该命令是很有用的如果是超级用户那么用户可以用nice提高命令的进程优先权nohup该命令可以让用户在进程还在后台运行而没有终止进程时注销某些系统对该设置是自动的nointrnotifypopdpushdrehash重新创建csh的hash机制所采用的内部表只要启动了csh的新实例hash机制就会创建对用户可用的命令的排序表并建立在PATH值基础之上repeat接纳两个参数一个计数和简单的命令并且根据由count所指定的数目重复命令setsetenvshift没有参数的shift提示argv数组的索引用户可以用其带参数的命令来完成对其他数组的同样操作source执行所谓参数给出的shell脚本4545不启动其他进程source命令需要cshell脚本所以在脚本中不需要作为前导的英镑符号stop停止运行在后台的作业或进程为停止一个作业可以通过加作业编号字符串或PID号来表示该作业stop可接受多个参数suspend停止当前的shell类似于controld停止前台运行的作业timeumask标识改变分配给用户所创建的文件的访问权限unaliasunlimitunsetunsetenvwait使得shell等待所有子进程终止当用户给出wait命令以响应cshell的提示时csh直到所有后台进程完成其执行后才显示提示并且接受命令如果用户中断键来中断它那么wait将在返回控制给shell之前显示进程