Linux中的几种规范文件描述符详解。
Linux系统将各个目标作为文件解决,这包含输入和输出过程。Linux用文件描述符(file descriptor)来标志每一个文件目标。文件描述符是一个非负整数,能够**标志会话中打开的文件。每一个过程一次多可以有九个文件描述符。出自于独特目地,bash shell保存了前三个文件描述符(0、1和2),详细信息见下列。
Linux的规范文件描述符
这三个独特文件描述符会解决脚本制作的输入和输出。shell用他们将shell默认的输入和输出导向性到对应的部位。下边赣州网站开发,赣州网络公司,赣州网站seo,赣州电脑网站开发,赣州手机网站开发来为大家介绍一下这种规范文件描述符,供大家参照!
一、STDIN
STDIN文件描述符意味着shell的规范输入。对用户页面而言,规范输入是电脑键盘。shell从STDIN 文件描述符相对应的电脑键盘得到输入,在用户输入时解决每一个标识符。
使用输入重定向标记(<)时,linux用到重定向指定的文件来更换规范输入文件描述符。他会载入文件并提取数据,就如同这是键盘上输入的。< p="">
很多bash命令可以接受STDIN的输入,特别是没有在命令行上特定文件得话。下面是个用cat 命令解决STDIN输入的信息的例子。
$cat
this is a test
this is a test
this is a second test.
this is a second test.
如在命令行上只输入cat命令时,它是从STDIN接纳输入。输入一行,cat命令便会显现出 一行。
但是你还可以通过STDIN重定向标记强制性cat命令接纳来源于另一个非STDIN文件的输入。
$cat<><>
This is the first line.
This is the second line.
This is the third line.
$
如今cat命令会用testfile文件里的行做为输入。你能使用这种技术性将数据输入到一切可以从 STDIN接纳数据信息的shell命令中。
二、STDOUT
STDOUT文件描述符意味着shell的规范输出。在终端设备界面上,规范输出便是终端设备显示屏。shell 的所有输出(包含shell中运转的程序和脚本制作)能被定项到规范输出中,其实就是显示屏。
默认设置前提下,大部分bash命令会把输出导向性STDOUT文件描述符。与此同时,你还可以用输出重定向来改变。
$ls-l>test2
$cat test2
total 20
-rw-rw-r--1 rich rich 53 2014-10-16 11:30 test
-rw-rw-r--1 rich rich 0 2014-10-16 11:32 test2
-rw-rw-r--1 rich rich 73 2014-10-16 11:23 testfile
$
根据输出重定向标记,一般会表明到显示器全部输出能被shell重定向到指定的重定向文件。你也可以将数据信息增加到某一文件。这样可以用>>标记来完成。
$who>>test2
$cat test2
total 20
-rw-rw-r--1 rich rich 53 2014-10-16 11:30 test
-rw-rw-r--1 rich rich 0 2014-10-16 11:32 test2
-rw-rw-r--1 rich rich 73 2014-10-16 11:23 testfile
rich pts/0 2014-10-17 15:34(192.168.1.2)
$
who命令生成的输出能被增加到test2文件中已经有数据库的后边。可是,如果你对脚本制作用了规范输出重定向,你会遇到一个问题。下边的例子反映了有可能出现什么原因。
$ls-al badfile>test3
ls:cannot access badfile:No such file or directory
$cat test3
$
当命令形成不正确消息时,shell并没有将异常信息重定向到输出重定向文件。shell创建了输出重 定项文件,但不正确信息却显示在了显示器屏幕上。留意,在表明test3文件内容时并没有任何不正确。test3文件建立通过了,仅仅里有空的。
shell针对不正确信息的处理是跟普通输出分开的。假如你创建了在后台模式中运作的shell脚本制作,一般你需要依靠发送至日志文件的输出信息。用这种方法得话,如果出现了错误报告,这些信息一般不会出现在了日志文件里的。你必须换个方式来处理。
三、STDERR
shell根据特殊STDERR文件描述符来处理错误信息。STDERR文件描述符意味着shell的规范不正确输出。shell或shell中运转的程序和脚本制作出差错时形成的错误信息都是发送至这里。
默认设置前提下,STDERR文件描述符会与STDOUT文件描述符偏向相同的地区(虽然分配给它们文件描述符值不一样)。换句话说,默认设置前提下,不正确信息还会输出到显示屏输出中。
可是却上边的例子看得出,STDERR并不能伴随着STDOUT的重定向而发生变化。应用脚本制作时,你常会想改变这种做法,特别是当你希望将不正确信息保留到日志文件中时。
声明:本网站部分文章转载自网络媒体稿件,是为了传播更多的信息以及学习交流,此类稿件不代表本站观点,本站不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请把您的相关内容发至此邮箱【1361323860@qq.com】,我们在确认后,会立即删除,保证您的版权。