⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcsh shell 编程入门 linuxsir_org.htm

📁 linuxSir 网站的精华文章
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      取消变量</CODE></DIV>
      <P></P>
      <P>由于这些变量常用于打开/关闭特征,所以有时也被叫做双态切换.<BR><FONT id=2011 
      size=3><B><BR>1、echo<BR></B></FONT></P>
      <P>在echo被执行之前,设置echo启动显示命令的特征;</P>
      <P>
      <DIV class=codeblock><CODE>set echo 打开echo特征<BR>unset echo 
      关闭echo特征</CODE></DIV><BR><FONT id=2012 
      size=3><B><BR>2、ignoreeof<BR></B></FONT>
      <P></P>
      <P>设置ignoreeof启动防止用户使用CTRL+D注消用户shell的特征,它用于防止突发性的注消操作,如果此特征关闭,可以用CTRL+D注消过程.由于在标准输入中CTRL+D是结束用户输入的操作,所以很容易造成突发注消shell进程.因此,ignoreeof特征就能防止这种突发的注消,当此特征被设置后,用户必须用logout命令明确注消.<BR><FONT 
      id=2013 size=3><B><BR>3、noclobber<BR></B></FONT></P>
      <P>设置noclobber启动预防现有文件不被重定向输出的特征,借助此特征,如果把输出重定向到已经存在的文件中,就不用标准的输出重写文件.原文件被保存.也许会发生这种情况:把现有文件名用作保存被重定向的输入的文件名.因此,noclobber特征使用户不会意外的重写原文件.<BR>
      <DIV class=codeblock><CODE>%set noclobber<BR>%cat oldfile &gt; 
      newfile<BR>newfile: file exist</CODE></DIV>
      <P></P>
      <P>有时,用户想用重定向输出重写某个文件,那么就可在重定向符号操作符之后放置惊叹号!实现重写操作.这将重写noclobber特性,用标准的输出代替文件内容.<BR>
      <DIV class=codeblock><CODE>%cat oldfile &gt;!newfile</CODE></DIV><BR><FONT 
      id=2014 size=3><B><BR>4、noglob<BR></B></FONT>
      <P></P>
      <P>设置noglob使某特性有效,该特征禁止用户shell中的某些字符.字符 * ? [ ] ~将不再扩展为匹配的文件名.如:<BR>
      <DIV class=codeblock><CODE>%set noglob<BR>%ls 
      myfile?*<BR>myfile?*</CODE></DIV>
      <P></P>
      <P><FONT id=2015 size=3><B><BR>5、附录:常用的TCSH shell特征;<BR></B></FONT></P>
      <P>
      <DIV class=codeblock><CODE>特征 功能<BR>set 打开shell特征<BR>unset 
      关闭shell特征<BR>echo 执行命令前显示该命令<BR>ignoreeof 禁止用CTRL+D注消<BR>noclobber 
      不必通过重新定向重写文件<BR>noglob 禁止特殊字符用于文件名扩展:* ? ~ [ ]<BR>notify 
      当完成后台任务时立即通知用户<BR>verbose 历史命令引用后显示命令</CODE></DIV>
      <P></P>
      <P><FONT id=202 size=4><B><BR>二、TCSH shell 变量<BR></B></FONT></P>
      <P>正如在BASH shell中一样,也可在TCSH 
      shell中使用特殊shell变量来匹配自己的系统.一些变量在系统初始化中定义,也可以在shell中用新的值重新定义变量,有些必须在系统初始化时定义,如最常用的特殊变量prompt变量,它允许建立自己的命令行提示符另外一个是history变量,该变量确定保存了多少历史命令/事件. 
      </P>
      <P>在TCSH shell中,许多特殊变量的名称与函数都与BASH/ZSH 
      shell中的变量名称和函数类似.一些必须用大写表示,但是大多数用小写表示.某些特殊变量起类似的作用,但是具有完全不同的实现方法,如mail变量保存的信息与BASH 
      shell的MAIL,MAILPATH,MAILCHECK变量保存的信息完全相同.</P>
      <P><FONT id=2021 size=4><B><BR>1、prompt prompt2 prompt3<BR></B></FONT></P>
      <P>这三个变量为命令行保存提示符.用户可以设置自己想要的符号/字符串作为提示符.为了设置命令行提示符,可以用<BR>
      <DIV class=codeblock><CODE>%set prompt="+"<BR>+</CODE></DIV>
      <P></P>
      <P>这样提示符就变成了+号.也可以使用预定义的一组代码使得配置提示符更容易,在每个代码前加个%号,例如,用%/表示当前的工作目录,%t表示时间,%n表示用户名,%!表示下一个历史事件的号码,如:<BR>
      <DIV class=codeblock><CODE>%set 
      prompt="%/"<BR>/home/dirname</CODE></DIV><BR><B><BR>代码列表:<BR>代码 
      说明<BR></B><BR>
      <DIV class=codeblock><CODE>%/ 当前运行目录<BR>%h,%!,! 当前历史号码<BR>%t 当天时间<BR>%n 
      用户名称<BR>%d 日期<BR>%w 当前月份<BR>%y 当前年份</CODE></DIV>
      <P></P>
      <P>当命令分为若干行输入时,变量prompt2被用于特殊情况,为需要输入改命令而增加的行显示prompt2,prompt3提示符用于检查拼写特征是否被激活.</P>
      <P><FONT id=2022 size=3><B><BR>2、cdpath<BR></B></FONT></P>
      <P>cdpath变量保持目录的路径名,用cd搜索特定的子目录,这些路径名形成一个数组,就像赋值给TCSH 
      shell的path变量的路径名数组一样,注意在路径名之间要求有空格.<BR>
      <DIV class=codeblock><CODE>%set cdpath=(/usr/bin /var/bin 
      /home/username)</CODE></DIV><BR><FONT id=2023 
      size=3><B><BR>3、history和savehist<BR></B></FONT>
      <P></P>
      <P>正如前面了解的那样,history变量常用于确定要保存的历史事件的数量,只需给该变量赋值history应该记录的事件的最大的数值.当达到最大值时,计数器从1开始.但是当注消时,savehist变量保存存储在.history文件中事件的数量,当再次注册时,这些事件<BR>就成为初始化历史事件.如:<BR>
      <DIV class=codeblock><CODE>%set history=20<BR>%set savehist=5</CODE></DIV>
      <P></P>
      <P>当注册时,历史列表中将记录20个事件,但是当注消后,仅仅最后5个事件被保存在.history文件中,下一次注册时,历史列表将由以前的最后5个命令组成.<BR><FONT 
      id=2024 size=3><B><BR>4、mail<BR></B></FONT></P>
      <P>在TCSH shell中,mail变量综合了BASH和ZSH shell中的MAIL,MAILCHECK,MAILPATH变量的特征.TCSH 
      shell 
      mail变量值是一个数组,该数组的元素既包括检查电子邮件的时间间隔,又包括检查电子邮箱文件的路径.要给这些元素赋值,可以把赋值的数组赋值给mail变量,用圆括号括起来,空格分割的一系列指定数组的新值.第一个值是再次检查电子邮件前设置等待的秒数,它类似BASH 
      shell的MAILCHECK变量保存的数组.其余的值由电子邮箱文件的路径构成,检查该文件获取邮件.注意,这些变量保存了BASH和ZSH shell 
      MAIL,MAILPATH变量的功能. 如:<BR>
      <DIV class=codeblock><CODE>%set mail ( 1200 /usr/mail/user)</CODE></DIV>
      <P></P>
      <P>mail变量被设置成每1200秒检查一次电子邮件,被检查的电子邮箱文件在/usr/mail/user目录中.<BR>
      <DIV class=codeblock><CODE>%set mail (1200 /usr/mail/user 
      /home/userdir)</CODE></DIV>
      <P></P>
      <P>也可以容易的给mail数组添加更多的邮箱文件路径,注意每个元素之间的空格.<BR><FONT id=2025 
      size=3><B><BR>5、附常用的TCSH shell配置变量:<BR></B></FONT><BR>
      <DIV class=codeblock><CODE>变量 说明<BR>home 用户主目录的路径名<BR>user 注册名<BR>pwd 
      当前运行目录的路径名<BR>shell 用于注册过程的程序路径名<BR>prompt 主提示符<BR>path 
      目录路径名列表,搜寻目录获取可执行命令<BR>mail mail实用程序检查该变量来获取接受信息的邮件文件名<BR>cdpath 
      cd命令搜索该变量获取子目录的目录路径名<BR>history 历史列表中命令数量<BR>savehist 
      为下一个注册存储历史列表中的命令数量<BR>EXINIT EX/vi编辑器的初始化命令<BR>TERM 终端名</CODE></DIV>
      <P></P>
      <P><FONT id=203 size=4><B><BR>三、TCSH shell初始化文件<BR></B></FONT></P>
      <P>TCSH shell有3个初始化文件: .login .tcshrc .logout,.login文件是每次注册时执行的注册初始化文件, 
      .tcshrc文件是每次进入TCSH shell时执行的shell初始化文件, 
      该文件在注册时执行或者用tcsh命令直接从另一个shell进入TCSH shell时<BR>执行,每次注消时执行.logout文件</P>
      <P><FONT id=2031 size=3><B><BR>1、 .login<BR></B></FONT></P>
      <P>TCSH shell有自己注册初始化login,该文件用于配置用户shell的shell命令和特殊变量定义, 
      .login文件相当于BASH和ZSH 
      shell中使用的.profile文件。<BR>.login文件包含setenv命令,给TERM之类的特殊环境变量赋值,可以用任何标准的编辑器编辑它,改变这些值,也可添加新的值.但是要记住:在TCSH 
      shell中,为环境变量赋值的命令是setenv,如:<BR>
      <DIV class=codeblock><CODE>%setenv EXINIT 'set nu ai'</CODE></DIV>
      <P></P>
      <P>定义EXINIT变量并设置vi编辑器行计数和自动缩排的功能.</P>
      <P>当编辑.login文件时要十分小心,不经意的编辑可能造成错误的变量设置或者根本没有设置变量,因此,编辑之前最好备份.login文件.如果更改了.login文件,想让这些变化在当前注册期间生效,需要使用source命令重新执行该文件,source命令实际上可执行<BR>任何初始化文件,其中包括.tcshrc文件和.logout文件,如:<BR>
      <DIV class=codeblock><CODE>%source .login</CODE></DIV><BR><FONT id=2032 
      size=3><B><BR>2、 .tcshrc<BR></B></FONT>
      <P></P>
      <P>每当进入TCSH shell或产生任何子shell时,就执行.tcshrc初始化文件,如果TCSH 
      shell是用户注册的shell,那么当用户注册时, .tcshrc文件和.login文件一起运行,如果从另外一个shell进入TCSH 
      shell, .tcshrc文件被自动执行,文件中包含的变量<BR>和别名被定义.</P>
      <P>实际上,每当产生一个shell时,如运行shell脚本,就执行.tcshrc文件,也就是说,每当创建一个shell时,就执行.tcshrc文件,这允许在.tcshrc中定义局部变量,在某种意义上说,局部变量可以进入任何子shell,即时像history这样的用户定义的变量也是局部变量,但要为每个产生的子shell定义特殊变量,这样,为每个子shell变量设置history,但是,每个子shell都有自己的局部history变量,用户甚至可在不影响其他子shell的变量的情况下改变一个子shell的局部history变量,在shell初始化文件中定义特殊变量可以看做是BASH 
      shell导出变量,在BASH shell和ZSH shell中的导出变量只把自己的拷贝传送给子shell,改变拷贝不会影响原始定义.</P>
      <P>.tchsrc文件也可包含别名变量和用于打开shell特征的特征变量,别名变量和特征变量是局部变量,限定于shell内部.但是.tcshrc文件在每个shell中都将定义这些变量.因此, 
      .tcshrc文件通常保存各种命令定义的别名,如:</P>
      <P>.tcshrc<BR>
      <DIV class=codeblock><CODE>#<BR>set shell=/usr/bin/csh<BR>set path=$PATH 
      (/bin /usr/bin .)<BR>set cdpath=(/home/dirname/filename 
      /home/dirname/files)<BR>set prompt="!$pwd&gt;"<BR>set history=20<BR>set 
      ignoreeof<BR>set noclobber<BR>alias rm 'rm -i'<BR>alias mv 'mv 
      -i'<BR>alias cp 'cp -i'</CODE></DIV>
      <P></P>
      <P>与环境变量不同,局部变量用set命令定义,在.tcshrc文件中的局部变量应该使用set命令定义,用setenv命令定义的环境变量是放在.login文件中的,请记住:当改变path或cdpath的路径名时,数组中包含这些路径名,数组中的每个元素要用空格分开,如果添加新的路径名时,必须保证用空格把它和其他的路径名分开.如果已经改变了.tcshrc文件,希望这些变化在当前注册中立即生效,别忘了用source命令重复执行.tcshrc文件。</P>
      <P><FONT id=2033 size=3><B><BR>3、 .logout<BR></B></FONT></P>
      <P>.logout文件也是初始化文件,只不过它在注消时执行,用户可以设置.logout文件以使其完成任何在注消时想要完成的操作,文件中没有定义变量,常包括关闭进程的shell命令.可以向.logout文件中添加自己的shell命令,如:</P>
      <P>.logout<BR>
      <DIV class=codeblock><CODE>#<BR>clear<BR>echo "Good-bey..."</CODE></DIV>
      <P></P>
      <P><BR></P>
      <P><FONT id=300 size=4><B>关于本文</B></FONT></P>
      <P>“现在关于BASH的资料,在网上很多,我一直没有找到关于TCSH编程的入门资料,因此,特从我的书中摘抄下来,终于打完啦~~,请喜欢tcsh编程的兄弟们多提意见,有想了解ZSH 
      shell的兄弟也别急,我正在找ZSH方面的书,不久就可以整理出来啦~~~”──<A 
      href="http://www.linuxsir.org/bbs/member.php?u=5341" 
      target=_blank>KornLee</A></P>
      <P>本文是Lee兄整理的文档,原文参见<A 
      href="http://www.linuxsir.org/bbs/showthread.php?t=35732" 
      target=_blank>《【TCSH 
      shell编程入门】》</A>;北南重新整理,把说明性的标点,由英文标点改为中文标点。并对全文进行了序号化,制作出HTML格式,方便大家查看和索引;</P>
      <P>感谢Lee兄所做的巨大贡献~~</P>
      <P>── 北南南北 </P>
      <P><FONT id=400 size=4><B>相关文档</B></FONT></P></DIV>
      <DIV class=links>By 北南南北 at 2005/12/20 - 16:18 | <A 
      href="http://www.linuxsir.org/main/?q=taxonomy/term/52">命令/SHELL/PERL</A> 
      | <A title=共享你有关本文的思想和意见。 
      href="http://www.linuxsir.org/main/?q=comment/reply/139#comment">参与评论</A> 
      | 4400 阅读</DIV></DIV><A id=comment></A>
      <FORM action=?q=comment method=post>
      <DIV><INPUT type=hidden value=139 name=edit[nid]> </DIV></FORM><!-- end content -->
      <DIV id=footer>
      <CENTER><A href="http://www.linuxsir.org/"><IMG 
      src="TCSH shell 编程入门  LinuxSir_Org.files/logo.jpg"></A> <BR><A 
      href="http://www.miibeian.gov.cn/" target=_blank><FONT color=blue 
      size=3><B>闽ICP备06025536号</B></FONT></A><BR>
      <SCRIPT language=JavaScript 
      src="TCSH shell 编程入门  LinuxSir_Org.files/cyberpolice.htm"></SCRIPT>
      <BR><A href="http://www.linuxsir.org/main/?q=node/78"><FONT color=blue 
      size=3><B>© 2002-2006 LinuxSir.Org</B></FONT></A><BR></CENTER></DIV></TD>
    <TD id=sidebar-right>
      <DIV class="block block-block" id=block-block-2>
      <H2 class=title>基础知识</H2>
      <DIV class=content>
      <UL>
        <LI><A href="http://www.linuxsir.org/main/?q=taxonomy/term/23">安装配置</A> 
        <LI><A 
        href="http://www.linuxsir.org/main/?q=taxonomy/term/1/25/">基础入门</A> 
        <LI><A href="http://www.linuxsir.org/main/?q=taxonomy/term/22/">硬件解决</A> 

        <LI><A href="http://www.linuxsir.org/main/?q=taxonomy/term/21">软件管理</A> 
        <LI><A 
        href="http://www.linuxsir.org/main/?q=taxonomy/term/35/48/">重要资源</A> 
        </LI></UL></DIV></DIV>
      <DIV class="block block-block" id=block-block-4>
      <H2 class=title>软件应用</H2>
      <DIV class=content>
      <UL>
        <LI><A href="http://www.linuxsir.org/main/?q=taxonomy/term/30">网络工具

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -