TCSH+shell+编程入门文档格式.doc

上传人:聆听****声音 文档编号:32395 上传时间:2023-04-28 格式:DOC 页数:25 大小:142.50KB
下载 相关 举报
TCSH+shell+编程入门文档格式.doc_第1页
第1页 / 共25页
TCSH+shell+编程入门文档格式.doc_第2页
第2页 / 共25页
TCSH+shell+编程入门文档格式.doc_第3页
第3页 / 共25页
TCSH+shell+编程入门文档格式.doc_第4页
第4页 / 共25页
TCSH+shell+编程入门文档格式.doc_第5页
第5页 / 共25页
TCSH+shell+编程入门文档格式.doc_第6页
第6页 / 共25页
TCSH+shell+编程入门文档格式.doc_第7页
第7页 / 共25页
TCSH+shell+编程入门文档格式.doc_第8页
第8页 / 共25页
TCSH+shell+编程入门文档格式.doc_第9页
第9页 / 共25页
TCSH+shell+编程入门文档格式.doc_第10页
第10页 / 共25页
TCSH+shell+编程入门文档格式.doc_第11页
第11页 / 共25页
TCSH+shell+编程入门文档格式.doc_第12页
第12页 / 共25页
TCSH+shell+编程入门文档格式.doc_第13页
第13页 / 共25页
TCSH+shell+编程入门文档格式.doc_第14页
第14页 / 共25页
TCSH+shell+编程入门文档格式.doc_第15页
第15页 / 共25页
TCSH+shell+编程入门文档格式.doc_第16页
第16页 / 共25页
TCSH+shell+编程入门文档格式.doc_第17页
第17页 / 共25页
TCSH+shell+编程入门文档格式.doc_第18页
第18页 / 共25页
TCSH+shell+编程入门文档格式.doc_第19页
第19页 / 共25页
TCSH+shell+编程入门文档格式.doc_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

TCSH+shell+编程入门文档格式.doc

《TCSH+shell+编程入门文档格式.doc》由会员分享,可在线阅读,更多相关《TCSH+shell+编程入门文档格式.doc(25页珍藏版)》请在冰点文库上搜索。

TCSH+shell+编程入门文档格式.doc

12、eval

13、exec

14、exit

15、fg

16、foreach

17、history

18、hup

19、if-then

20、if-then-else

21、jobs

22、kill

23、logout

24、nice

25、nohup

26、notify

27、onintr

28、popd

29、printenv

30、pushd

31、repeat

32、set

33、setenv

34、shift

35、source

36、stop

37、switch

38、time

39、umask

40、unalias

41、unset

42、unsetenv

43、wait

44、where

45、which

46、while

第二篇TCSH配置

一、TCSHshell特征

1、echo

2、ignoreeof

3、noclobber

4、noglob

5、附录:

常用的TCSHshell特征;

二、TCSHshell变量

1、promptprompt2prompt3

2、cdpath

3、history和savehist

4、mail

5、附常用的TCSHshell配置变量

三、TCSHshell初始化文件

1、.login

2、.tcshrc

3、.logout

关于本文

相关文档

++++++++++++++++++++++++++++++++++++++++++++++++++

正文

用户可以在shell中定义变量,为变量赋值以及引用脚本参数。

TCSH使用set,@,setenv定义一变量,也可以用相同的方法定义数值变量和数组,用户通过@命令定义的数值变量来进行算术运算,用户使用圆括号()和方括号[]定义和引用数组。

脚本也可以用相同的方法操作,但是有个例外,尽管可以用echo命令输出提示符,但没有read命令处理输入,相反,必须重定向到一个变量里。

用户能够在脚本范围中定义和使用变量。

在下例中,使用文本编辑器把赋值操作和echo之类的linux命令放在一个文件中。

然后可以产生可执行文件并像其他命令一样在命令行中执行它,要记住添加可执行权限,必须使用带u+x参数的chmod命令或者带绝对参数700的chmod命令。

本中,可以使用echo命令去输出数据,但是,必须通过重定向标准输入把输入读入变量。

在TCSH中没有linuxread命令的比较版本。

记住TCSH全部的脚本文件的第一行的第一个字符必须是“#”字符。

比如:

#

#display"

hello"

setstring="

echoThevalueofstringis$string

set命令和重定向符号结合$<

将用户输入的任何数据读入标准的输入中,下例中,把用户输入读入string变量中。

%setstring=$<

abc

%echo$string

能够把提示符放置到相同的行用作echo的输入。

TCSH使用一个特殊的选项-n,将消除输出字符串中的回车符.光标将保留在输出字符串的结尾处。

%echo-npleaseenterastring

%cathello

echo-n"

pleaseenterastring:

"

setstring=$<

echo"

thevalueofstringis$string"

%chmodu+xhello

%hello

hello

thevalueofstringishello

%

TCSH有一系列标准的赋值,算术和关系运算以及重定向和后台操作等函数。

赋值运算符功能说明

=赋值操作

+=先加再赋值

-=先减再赋值

*=先乘再赋值

/=先除再赋值

%=取余再赋值

++自增量1

--自减量1

算术运算符说明

-负号

+加法

-减法

*乘法

/除法

%取余

关系运算符说明

>

大于

<

小于

=大于等于

=小于等于

!

=不等于

==等于

重定向和管道符

TCSH支持标准输入和标准输出的重定向和管道操作.如果设置了noclobber特征,要用重定向操作重写当前文件,需要用符号>

代替>

四、控制结构

同其他shell一样,TCSH也有一系列的控制结构控制脚本的命令的执行。

while和if控制结构是最常用的控制结构,switch和foreach是更专用的控制结构。

switch是if条件的限定形式,检查数值是否等于一系列可能的数值中的一个数值。

foreach是循环结构的限定形式.浏览数值列表,给变量赋新的数值。

TCSH不同的控制结构列表:

if(expression)then 

注:

如果expression为真,则执行commands

commands

endif

if(expression)then注:

如果expression为真,则执行command1,否则执行

command1command2.

else

command2

switch(string) 

加注:

允许在几条替换命令中选择,string为不同的模式

casepattern:

breadsw

default:

endsw

while(expression)只要expression为真,则重复执行commands,

commands直到expression为假时跳出循环

end

foreachvariable(argument-list)迭代循环获得和argument-list中一样多的参数commands(每次循环variable被设置为列表的下一个参数;

end操作方式同BSH)

TCSH中的控制结构有别于其他的shell,因为它更接近编程语言(C).TCSH的条件表达式的值为true/false.BASH和TCSH主要区别在于TCSH的结构不可重定向或进行管道输出.

if和while控制结构把表达式用作测试.表达式测试的结果为非零

(1)表示真,而零(0)表示假(跟BASH相反).测试表达式可由算术/字符串比较,但是字符串只能作相等和不相等的比较.而且表达式必须要在()括号内.

如:

if(expression)then

command

TCSH有一系列的运算符来分别对字符串进行测试比较.正则表达式可以包含shell脚本的指令的字符串;

if($var=~[Hh]*)then#如果变量$var以字母是大写/小写Hh开头,的字符串

echoinformation#执行命令

endif#结束

有很多测试文件的操作与BASH完全相同;

if(-rmyfile)then#测试myfile是否可读

echoinfo

测试表达式的基本操作:

==是否相等,若相等返回真

=是否不等,若不等返回真

=~字符串和模式进行测试是否相等(模式为任意正则表达式)

~字符串和模式测试是否不等(模式为任意正则表达式)

文件测试:

-e测试文件是否存在

-r测试文件是否可读

-w测试文件是否可写

-x测试文件是否可执行

-d测试文件名是否为目录

-f测试文件是否为普通文件

-o测试文件是否被用户所拥有

-z测试文件是否为空

&

与运算,两个条件同时蛮族

||或运算,有一个条件满足

取反

1、数字变量@

在TCSH中,用@命令代替set命令来声明数字变量,然后进行算术,关系和位操作,数字和字符串变量是两个不同的对象,需要用不同的方法管理,不能把set用于数值变量的设置@命令由关键词,变量名,赋值运算符和表达式构成。

%@num=10#注意空格

%@sum=2*($num+3)

%echo$sum

%26

格式:

alias[name[command]]

关键词

alias别名name引用的命令command

aliaslistls

aliaslist'

ls-l'

当脚本被执行时,命令行中的单词被分析并放入argv数组中。

argv[0],argv[1]...argv[n],其中argv[0]保存命令名,argv[1]保存命令的第一个参数,argv[n]命令的第n个参数。

argv数组元素可缩写元素号码,前面加$。

如:

$argv[1]写为$1;

$argv[*]写为$*。

#argv参数标识符包含输入在命令行中的参数号码,可检查$#argv变量。

arglist

Thenumberofargumentsenteredis$#argv"

Thelistofargumentsis:

$argv[*]"

%tcsharglistabc

Thenumberofargumentsenteredis3

abc

argv变量列表:

命令行参数说明

$argv[0]或$0命令名

$argv[n]或$n从1($1-$)开始的第n个命令行参数

$argv[*]或$*从1开始的所有命令行参数

$#argv或$#命令行参数的计数

bg[%job]

bg命令把指定的任务放入后台。

如果此任务已经停止,则继续执行,如果没有参数,将当前任务放入后台。

(详细用法与BASH相同此处略)

break

break命令用于退出最接近的foreach/while循环过程,执行同一行中其他的命令。

breaksw

可以从switch语句处中断,在endsw后继续执行。

列出全部shell的内建命令表.

cd[-p][-l][-nl-v][name]

如果给出目录名,此命令把name设置为当前目录,如果命令中没有name,当前目录自动设置成用户主目录。

用于name的"

-"

引用上一级目录,如果参数name没有给出子目录,或不是全路径,或使用./或../引用当前目录及父目录,那么就检查在cdpathshell变量中列出的目录来寻找该目录名。

如果此操作失败,将检查shell变量中是否保存着的目录路径名。

用-p选项,linux显示目录列表,用-l,-n,-v选项与用在dirs命令中的选项完全相同。

默认选项-p;

此命令继续执行最靠近while/foreach语句,当前行其余的命令被执行。

dirs[-l][-n|-v]

dirs-S|-L[filename]

dir-c

如果不带参数,dirs将显示目录列表,列表开头被列在作侧,第一个目录是当前目录。

带-l选项,用户主目录中的全部子目录被展开。

输入项在到达屏幕边缘时,-n选项隐藏输入项,-v选项显示每一行的输入项入口,-c选项将清除目录列表,-S选项可以把目录列表作为一系列的cd和pushed命令保存在文件中,-L选项可以从指定的文件中将cd和pushed命令读入,该文件包含-S选项所存储的cd和pushed命令。

如果没有指定的文件名,将使用赋值到dirsfileshell变量中的文件名。

如果没有设置dirsfile,将使用~/.cshdirs,在启动时注册shell将对dirs-L求值,如果设置了savedirs,退出前使用dirs-S,由于在~/.cshdirs之前,仅仅~/.tcshrc是正常来源,dirsfile应该以~/.tcshrc设置而不是以~/.login设置.

echo[-n]word/string

此命令把每个单词或字符串写入shell的标准输出.可设置echostyleshell变量来仿真选项以及BSD的换码序列或者echo的SystemV版本;

evalargument...

此命令把参数作为shell的输入,执行当前shell的上下文中的结果命令,由于分析发声在替换前,所以该命令通常用于执行命令或变量替代所产生的命令。

execcommand

此命令代替当前的shell执行指定的命令,并退出终端;

exit[expression]

shell可以带指定的表达式的值退出,如果没有包含表达式,也可带状态变量值退出。

fg[%job...]

把指定的任务带到前台,如果任务在终止状态,在带到前台的同时使他运行;

job参数是使用任务号或者下列字符串之一的任务引用:

'

%+-

foreachvariable(listofvalues)

foreach结构被设置为顺序引用数值列表,它类似BASHshell的forin结构.foreach结构产生两个操作数:

一个变量和一组包含在()中的数值列表.将列表中的值赋值到结构中的变量中.循环体的结尾由语句end构成.下例中脚本list输出由项目和foreach循环读取每一项当前的日期构成的一行信息,列表中的每一项被连续赋值到变量objectlist

settdate=`date+%D`

foreachobject(milkcookiesapplescheese)

echo$object$tdate

%tcshlist

milk04/26/03

cookies04/26/03

apples04/26/03

cheese04/26/03

使用foreach循环有助于管理文件,可以模式中的shell特定字符来产生用作数值列表的文件名列表,然后所产生的文件名列表就成为foreach结构引用的列表.如果在列表中不带任何变量,可以使用命令行参数实现循环.

list

#settdate=`date+D%`

foreachobject($argv[*])

$object$tdate"

%tcshlistabc

a04/26/03

b04/26/03

c04/26/03

使用argv[*]特殊参数变量,可以直接引用命令行参数。

下例中,当调用shell脚本cbackuparg时,在命令行下输入C程序文件的列表,在foreach循环中,argv[*]引用命令行中的所有参数,将按顺序把各个参数赋值给变量backfile,变量argnum用于引用每个参数。

显示参数和backfile的值来说明它们两个是相同的。

cbackuparg

@argnum=1

foreachbackfile($argv[*])

 

cp$backfilesourcebak/$backfile

echo"

$backfile$argv[$argnum]"

@argnum=$argnum+1

%cbackupargmain.clib.cio.c

main.cmain.c

lib.clib.c

io.cio.c

history[-hr][n]

history-S|-L|M[filename]

history-c

如果history没有任何参数,将显示开行号的历史命令列表。

用作参数的号码将列出行的最后号码,如果没有任何选项参数。

她将用作历史文件名;

否则,将使用hisfile变量值。

用-h选项,将以注释的形式显示不带行号的历史文件列表

用-r选项,将反向显示,以最近的列表开始

用-c选项,则清除历史列表

如果用-S选项,可以把历史列表存入文件,如果savehistshell变量的第一个单词被设置为数值,历史文件将被保存为最大的行数,如果第二单词为'

merge'

,历史列表将被合并到当前的历史文件中,而不替代历史列表,时间图章排序历史列表。

如果用-L选项,shell将从存储的历史列表文件中读取历史列表并把她追加到当前历史列表中。

如果用-M选项,将从历史文件读取历史列表信息,但用当前历史列表信息合并,排序历史列表。

如果没有用这些选项给出文件名,那么就使用赋值到histfileshell变量的文件名,如果没有设置histfile,就使用~/.history。

hup[command]

如果带有括起来的command参数,hup运行command,根据停机信号退出。

当shell退出时,hup安排shell发出停机信号。

注意:

命令也许设置自己的停机响应,重写hup,如果没有参数(只有在shell脚本中才允许),hup使shell根据脚本的余项的停机信号退出。

if-then结构把条件放入几个linux命令,该条件是expression,如果expression得出非零的数值,那么expression为真,执行if结构内的命令,如果expression得出零值那么expression为假,就不执行if结构内的命令。

if-then结构以if关键词开始,expression表达式用()括起来,关键词then后可以跟任意数量的linux命令,以关键词endif结束if命令。

在TCSH中,if(expressiong)和then必须在同一行!

举例:

ifls

Pleaseenteroption:

setoption=$<

if($option=="

s"

)then

echoListfilesbysize

ls-s

%tcshifls

S

Listfilesbysize

total2

1monday2today

if(expressiong)then

用户需要经常需要根据expression是真还是假来进行选择;

关键词else允许if结构在两者之间选择;

如果expression为真,那么执行第一个command,否则执行第二个就是else后面的command。

举例:

elsels

echoEnterstolistfilesizes

echootherwiseallfileinformationislisted

pleaseenteroption:

else

ls-l

echoGood-bey

(结果略)

jobs[-l]

此命令列出所有活动的任务,如果带-l选项,将列出进程号,以及正常的信息.

kill[-signal]%job\pid...

kill-l

此命令用于终止进程或者任务,如果带-signal选项,应该指定要发送的信号,默认发送的信号是SIGTERM,如果带有-l选项,则列出信号名,对于带-l选项提供的信号数,将列出与其相关的信号名。

此命令用于终止注册shell,如果设置了ignoreeof,它将非常有用;

nice[+number][command]

此命令设置shell调整优先为number,如果没有设置number,调整优先设置为4,带有指定的command,nice适当的优先运行command,number值越大,进程获得的CPU的时间就越少.

nohup[command]

如果不带command参数,nohup指示shell忽略任何停机信号,如果带command参数,将执行此命令并忽略执行中的任何停机信号.

notify[%job...]

Linux执行命令后,如果有后台任务在执行,系统将通知到目前为止已经完成的后台任务,该系统不会中断如编辑这样的操作来通知用户关于完成的任务,当某任务完成时,如果想马上知道,无论系统在作什么,可以使用notify命令指令系统通知用户,它的参数作为任务号,当任务完成时,系统将中断当前命令并通知用户任务已经完成,如:

%notify%2

当2号任务完成时,告诉系统通知用户.

格式:

onintr[-|label]

此命令控制shell在中断时的动作,不带任何参数,将回复shell中断默认的动作,将终止shell脚本或返回输入级的终止符,如果带-参数,则忽略全部的中断,当接受中断或当子进程终止时,带label的命令将使s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2