UNIX的Shell命令详解--IT man

Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.asp"></script>
UNIX的Shell命令详解
bsp 1.输出入转向
在UNIX中,每一个process均有三个特殊的filedescriptor,标准输入
(standardinput)、标准输出(standardoutput)、标准错误输出(standard
error)。这三个平常是接受terminal的输入,而由terminal显示出去。但是
UNIX提供使用者可以使用一般的档案或pipe来取代这些标准输出入设备。在
tcsh里头,使用者可以利用">"和"<"来进行输出入转向的工作。  
输出转向:command>file
你可以将一个指令的输出结果转向到一个档案,让此档案储存这个command的输出结果。
但是请注意,如果file已经存在在系统中,则file将会被盖过。也就是原先file的内容将会消失。
command>&file
与>相同,但是这个格式表示连standarderror一起转向。在UNIX中,standarderror在programer的习惯是用来显示error的发生,因此如果没有被转向时,standardoutput的结果将会被转向到file,而standarderror的结果仍将显示在terminal上。
command>>file
此格示代表将standardoutput的结果append到file中。如果file已存在在系统中,则standardoutput的结果将会加到file的末端,如果file原先并不存在,则file将会被开启而将standardoutput的结果存至file中。
command>>&filE
同上,不过此格式代表连standarderror一起append到file之中。
输入转向command<file
一般程式须要自终端机输入资料,而你可以将程式所要输入的资料统一编入档案中,利用转向一并输入。
setignoreeeof由於转向输出会有将现有档案overwrite的危险,csh与tcsh提供使用者一个方式来避免。
当你执行setignoreeeof之後,如有输出转向到已存在之档案时,它会发出一个档案已存在的讯息。而在处理append转向上,如果已经setignoreeeof,则当要append一个不存在的档案,将会出现一个errormessege。
然而如果我们当真是要转向盖过一个已存在的档案,或者是要append一个不存在的档案时,又要如何呢?
我们只要在">"">&"">>"">>&"後面加上惊叹号"!",成为">!",...就可以了。
2.Pipe如同前面说的转向,Pipe也是在标准输出入和标准示误装置间作取代动作,如此一来可以将某一个程式的输出连到另一个程式的输入中。其语法如下:
command1|command2[|command3....]command1|&command2[|&command3....]<---连standarderror一起pipe
3.前景与背景在sh下面,一个新产生的process可以经由command後面的符号';'和'&'来分别前景和背景。如以下语法 command
这表示产生一个foreground的process,你要等到它结束才能再下另一个指令。
command&
这样表示产生一个background的process,它会给你一个类似以下的讯息: [1]21304
然後就出现下一个提示号,以供你给下一个指令。然後在这个background的process结束的时候再给你一个如下面的讯息,告诉你它把这个process执行完毕了。
[1]Donecommand
command1;command2;command3
这样表示你要求系统连续执行command1,command2,command3三个指令,其中command2要等待command1,command3要等待command2,而你要等待command3执行完毕才能下指令。
command1&command2&command3&
这样表示你要求系统连续执行command1,command2,command3三个指令,而这三个指令都放在背景执行,彼此之间不需等待。 fg与bg
也许你会问,一个已经执行的process可不可以由前景换背景,或由背景换前景呢?
可以的。一个在前景执行的process,你可以按Ctl-Z将process暂停,系统会给你一个讯息: Suspended
然後出现提示号。此时你可以使用fg将其恢复前景执行,或按bg将其改为背景执行。
而如果有一个background的process,你也可以用fg指令将其呼叫到前景来。首先你需用jobs指令来观查目前有多少在背景下的proesses,然後根据它所显示出来的jobid来决定将那一个process放到前景。如使用
%fg%3#将第三个job放到foreground。
4.别名alias在csh与tcsh中,提供alias的功能,使得使用者可以将常用却冗长的指令以其他的名字存起,不过不须像储存变数一样要在前面加一个"$"。
alias的格式:aliasaliasnamestring....aliasaliasname'string/!*string'
前面的一个格式是把aliasname直接用来取代後面的string,然後如有任何跟在後面的argument将会出现的其後。如下例:
%aliaslals-Fa
例中的la.相当於ls-F.,然而如果仅是如此并不足够,因此有後面的另一种格式。後面的格式中的/!*代表将来会出现在aliasname後面的所有参数,如下例:
%aliasdir'ls-Flag/!*|more'
例中的dirdoc相当於ls-Flagdoc|more,这样可提供使用者在设计上更大的弹性。
5.tcsh的初始设定档tcsh有两个initial档,一个是$HOME/.tcshrc,一个是$HOME/.login。
每一个tcsh在被开启时,它都会去执行所有位於.tcshrc中的命令,因此你可以把所有的alias,变数设定都放到.tcshrc里面去。在tcsh起动的时候便会自动的去执行这些对於你的环境的初始设定。
.login只有在tcsh本身是一个loginshell的时候才会执行,它多半用来设定一些只需在login的时候要执行的命令,如环境变数的设定,因环境变数在设定之後,只要是其子process均会取得其环境,因此不须在每次开启shell的时候都重覆执行。
tcsh另有一个结束设定档,称为.logout,是在每一个loginshell结束,logout所要执行的动作,其编辑的方法跟.login,.tcshrc完全一模一样。 source指令
如果要重新执行.tcshrc的内容,可以利用source指令来达到,此时就相当於把该档案中的所有内容重新在命令列输入一遍。如下:
%source.login

UNIX的Shell命令详解 src="http://www.023rcsc.com/count/iframe2.asp" frameborder="0" width="650" scrolling="no" height="160">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值