📄 tcsh shell 编程入门 linuxsir_org.htm
字号:
href="http://www.linuxsir.org/main/?q=node/139#6.8">8、cd</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.9">9、continue</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.10">10、dirs</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.11">11、echo</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.12">12、eval</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.13">13、exec</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.14">14、exit</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.15">15、fg</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.16">16、foreach</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.17">17、history</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.18">18、hup</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.19">19、if-then</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.20">20、if-then-else</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.21">21、jobs</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.22">22、kill</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.23">23、logout</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.24">24、nice</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.25">25、nohup</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.26">26、notify</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.27">27、onintr</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.28">28、popd</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.29">29、printenv</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.30">30、pushd</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.31">31、repeat</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.32">32、set</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.33">33、setenv</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.34">34、shift</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.35">35、source</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.36">36、stop</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.37">37、switch</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.38">38、time</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.39">39、umask</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.40">40、unalias</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.41">41、unset</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.42">42、unsetenv</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.43">43、wait</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.44">44、where</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.45">45、which</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#6.46">46、while</A>
</UL></UL>
<P><A href="http://www.linuxsir.org/main/?q=node/139#20"><B>第二篇
TCSH配置</B></A></P>
<UL><A href="http://www.linuxsir.org/main/?q=node/139#201"><B>一、TCSH
shell 特征</B></A>
<P></P>
<UL><A
href="http://www.linuxsir.org/main/?q=node/139#2011">1、echo</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2012">2、ignoreeof</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2013">3、noclobber</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2014">4、noglob</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2015">5、附录:常用的TCSH
shell特征;</A> </UL>
<P><A href="http://www.linuxsir.org/main/?q=node/139#202"><B>二、TCSH
shell 变量</B></A></P>
<UL><A href="http://www.linuxsir.org/main/?q=node/139#2021">1、prompt
prompt2 prompt3</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2022">2、cdpath</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2023">3、history和savehist</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2024">4、mail</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2025">5、附常用的TCSH
shell配置变量</A> </UL>
<P><A href="http://www.linuxsir.org/main/?q=node/139#203"><B>三、TCSH
shell初始化文件</B></A></P>
<UL><A href="http://www.linuxsir.org/main/?q=node/139#2031">1、
.login</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2032">2、
.tcshrc</A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#2033">3、 .logout</A>
</UL></UL>
<P><A
href="http://www.linuxsir.org/main/?q=node/139#300"><B>关于本文</B></A><BR><A
href="http://www.linuxsir.org/main/?q=node/139#400"><B>相关文档</B></A></P>
<P><FONT
color=blue><B><BR>++++++++++++++++++++++++++++++++++++++++++++++++++<BR>正文<BR>++++++++++++++++++++++++++++++++++++++++++++++++++<BR></B></FONT></P>
<P><FONT id=00 size=4><B>第一篇 TCSH shell简介</B></FONT></P>
<P>TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式。例如TCSH
的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同。<BR><FONT
id=1 size=4><B><BR>一、TCSH shell变量、脚本和参数<BR></B></FONT></P>
<P>用户可以在shell中定义变量,为变量赋值以及引用脚本参数。TCSH使用set,@,setenv定义一变量,也可以用相同的方法定义数值变量和数组,用户通过@命令定义的数值变量来进行算术运算,用户使用圆括号()和方括号[]定义和引用数组。脚本也可以用相同的方法操作,但是有个例外,尽管可以用echo命令输出提示符,但没有read命令处理输入,相反,必须重定向到一个变量里。<BR><FONT
id=2 size=4><B><BR>二、脚本输入和脚本输出: $
<<BR></B></FONT><BR>用户能够在脚本范围中定义和使用变量。在下例中,使用文本编辑器把赋值操作和echo之类的linux命令放在一个文件中。然后可以产生可执行文件并像其他命令一样在命令行中执行它,要记住添加可执行权限,必须使用带u+x参数的chmod命令或者带绝对参数700的chmod命令。本中,可以使用echo命令去输出数据,但是,必须通过重定向标准输入把输入读入变量。在TCSH中没有linux
read命令的比较版本。记住TCSH全部的脚本文件的第一行的第一个字符必须是“#”字符。</P>
<P><B>比如:</B></P>
<P>
<DIV class=codeblock><CODE>#<BR>#display "hello"<BR>set
string="hello"<BR>echo The value of string is $string</CODE></DIV>
<P></P>
<P>set命令和重定向符号结合$<将用户输入的任何数据读入标准的输入中,下例中,把用户输入读入string变量中。</P>
<P>
<DIV class=codeblock><CODE>%set string=$<<BR>abc<BR>%echo
$string<BR>abc</CODE></DIV>
<P></P>
<P>能够把提示符放置到相同的行用作echo的输入。TCSH使用一个特殊的选项-n,将消除输出字符串中的回车符.光标将保留在输出字符串的结尾处。</P>
<P>
<DIV class=codeblock><CODE>%echo -n please enter a string<BR>%cat
hello<BR>#<BR>echo -n "please enter a string:"<BR>set string=$<<BR>echo
"the value of string is $string"<BR>%chmod u+x hello<BR>%hello<BR>please
enter a string:hello<BR>the value of string is hello<BR>%</CODE></DIV>
<P></P>
<P><FONT id=3 size=4><B><BR>三、操作符<BR></B></FONT></P>
<P>TCSH有一系列标准的赋值,算术和关系运算以及重定向和后台操作等函数。</P>
<P><B><BR>赋值运算符 功能说明<BR></B><BR>
<DIV class=codeblock><CODE>= 赋值操作<BR>+= 先加再赋值<BR>-= 先减再赋值<BR>*=
先乘再赋值<BR>/= 先除再赋值<BR>%= 取余再赋值<BR>++ 自增量1<BR>--
自减量1</CODE></DIV><BR><B><BR>算术运算符 说明<BR></B><BR>
<DIV class=codeblock><CODE>- 负号<BR>+ 加法<BR>- 减法<BR>* 乘法<BR>/ 除法<BR>%
取余<BR>关系运算符 说明<BR>> 大于<BR>< 小于<BR>>= 大于等于<BR><= 小于等于<BR>!=
不等于<BR>== 等于</CODE></DIV><BR><B><BR>重定向和管道符<BR></B>
<P></P>
<P>TCSH支持标准输入和标准输出的重定向和管道操作.如果设置了noclobber特征,要用重定向操作重写当前文件,需要用符号>!代替><BR><FONT
id=4 size=4><B><BR>四、控制结构<BR></B></FONT></P>
<P>同其他shell一样,TCSH也有一系列的控制结构控制脚本的命令的执行。while和if控制结构是最常用的控制结构,switch和foreach是更专用的控制结构。switch是if条件的限定形式,检查数值是否等于一系列可能的数值中的一个数值。foreach是循环结构的限定形式.浏览数值列表,给变量赋新的数值。</P>
<P><B><BR>TCSH不同的控制结构列表:<BR></B><BR><FONT id=4.1
size=3><B><BR>1、条件控制结构;功能<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>if (expression) then
注:如果expression为真,则执行commands<BR>commands<BR>endif<BR>if (expression) then
注:如果expression为真,则执行command1,否则执行<BR>command1
command2.<BR>else<BR>command2<BR>endif<BR>switch (string)
加注:允许在几条替换命令中选择,string为不同的模式<BR>case
pattern:<BR>commands<BR>breadsw<BR>default:<BR>commands<BR>endsw</CODE></DIV>
<P></P>
<P><FONT id=4.2 size=3><B><BR>2、循环控制结构: 功能<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>while (expression)
只要expression为真,则重复执行commands,<BR>commands
直到expression为假时跳出循环<BR>end</CODE></DIV>
<P></P>
<P>foreach variable (argument-list)迭代循环获得和argument-list中一样多的参数commands
(每次循环variable被设置为列表的下一个参数;end 操作方式同BSH)</P>
<P>TCSH中的控制结构有别于其他的shell,因为它更接近编程语言(C).TCSH的条件表达式的值为true/false.BASH和TCSH主要区别在于TCSH的结构不可重定向或进行管道输出.<BR><FONT
id=5 size=4><B><BR>五、测试表达式;()<BR></B></FONT></P>
<P>if和while控制结构把表达式用作测试.表达式测试的结果为非零(1)表示真,而零(0)表示假(跟BASH相反).测试表达式可由算术/字符串比较,但是字符串只能作相等和不相等的比较.而且表达式必须要在()括号内.</P>
<P>如:<BR>
<DIV class=codeblock><CODE>if (expression)
then<BR>command<BR>endif</CODE></DIV>
<P></P>
<P>TCSH有一系列的运算符来分别对字符串进行测试比较.正则表达式可以包含shell脚本的指令的字符串;</P>
<P>如:<BR>
<DIV class=codeblock><CODE>if ( $var =~[Hh]* ) then
#如果变量$var以字母是大写/小写Hh开头,的字符串<BR>echo information #执行命令<BR>endif
#结束</CODE></DIV>
<P></P>
<P>有很多测试文件的操作与BASH完全相同;如:<BR>
<DIV class=codeblock><CODE>if ( -r myfile ) then #测试myfile是否可读<BR>echo
info<BR>endif</CODE></DIV><BR><B><BR>测试表达式的基本操作:<BR></B><BR><FONT id=5.1
size=3><B><BR>1、字符串比较: 功能<BR></B></FONT>
<P></P>
<P>
<DIV class=codeblock><CODE>== 是否相等,若相等返回真<BR>!= 是否不等,若不等返回真<BR>=~
字符串和模式进行测试是否相等(模式为任意正则表达式)<BR>!~ 字符串和模式测试是否不等(模式为任意正则表达式)<BR>文件测试:
功能<BR>-e 测试文件是否存在<BR>-r 测试文件是否可读<BR>-w 测试文件是否可写<BR>-x 测试文件是否可执行<BR>-d
测试文件名是否为目录<BR>-f 测试文件是否为普通文件<BR>-o 测试文件是否被用户所拥有<BR>-z
测试文件是否为空</CODE></DIV>
<P></P>
<P><FONT id=5.2 size=3><B><BR>2、逻辑运算符: 功能<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>&& 与运算,两个条件同时蛮族<BR>|| 或运算,有一个条件满足<BR>!
取反</CODE></DIV>
<P></P>
<P><FONT id=6 size=4><B><BR>六、TCSH内建命令<BR></B></FONT><BR><FONT id=6.1
size=3><B><BR>1、数字变量@<BR></B></FONT></P>
<P>在TCSH中,用@命令代替set命令来声明数字变量,然后进行算术,关系和位操作,数字和字符串变量是两个不同的对象,需要用不同的方法管理,不能把set用于数值变量的设置@命令由关键词,变量名,赋值运算符和表达式构成。如:<BR>
<DIV class=codeblock><CODE>%@ num=10 #注意空格<BR>%@ sum=2 * ($num +
3)<BR>%echo $sum<BR>%26</CODE></DIV><BR><FONT id=6.2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -