xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能硬件

当前位置:美高梅游戏网站 > 智能硬件 > 1.5 文件陈说符和重定向

1.5 文件陈说符和重定向

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-02 13:42

Linux---文件陈说符和重定向

1.文书陈述符是与公事输入、输出相关联的卡尺头。它们用来追踪已开荒的文书。最广大的文本陈说符是stdin、stdout、stderr。大家得以将某些文件呈报符的内容重定向到另三个文书叙述符中。
文本陈诉符0、1以及2是系统留住的。
0 ——— stdin (标准输入)
1 ——— stdout (标准输出)
2 ——— stderr (规范错误)

1.备选知识

正式输入(stdin)、规范输出(stdout)和典型错误(stderr)是编写脚本的时候时有时应用的,因为出口的音信只怕是上述的一种。
文本陈说符 是与开发的某部文件或然数额流相关联的整数。文件陈诉符0,1,2是系统留住的。
0 - stdin(规范输入)
1 - stdout(标准输出)
2 - stderr(标准错误)

2.将出口文本重定向或保存到多少个文书中
(1).以下方法通过截取文件的情势,将出口文本存款和储蓄到文件temp.txt中,即在把echo命令的输出写入文件以前,temp.txt中的内容首先会被清空。
$ echo “This is a sample text 1” > temp.txt
(2).以下方法会将文件追加到对象文件中。
$ echo “This is a sample text 2” >> temp.txt
>和>>并差异。就算那多个操作符都能够将文件重定向到文件,不过前面一个会先清空文件,再写入内容;而后人会将内容充实到存活文件的尾巴。
当使用重定向操作符时,重定向的从头到尾的经过不会并发在终点,而是直接被导入文本。重定向操作符暗中认可使用标准输出。如若想利用一定的文本描述符,则必需将呈报符置于操作符在此以前。
>等同于1>;>>等同于1>>。
(3).能够将stderr单独重定向到二个文件,将stdout重定向到另叁个文书:
$ cmd 2>err.txt 1>out.txt
还是能行使上边的艺术将stderr转换到stdout,使得stderr和stdout都被重定向到同三个文书中:
$ cmd 2>&1 out.txt

2.实例

echo This is a sample. > temp.txt

可将文本输出到 temp.txt 中,是通过截断文件的方式,也就是说在echo命令写入前先将文件中的内容清空。

echo This is a sample. >> temp.txt

上述命令是追加的方式。

说明重定向之前先了解一下什么是成功和不成功的命令。

当一个命令发生错误并退出的时候,它会返回一个非0的值。成功后会返回0。可以通过 $? 查看返回的值。

ls 2> out.txt

将错误输出到文件中。

你也可以这样:

cmd 2> out.txt 1> temp.txt

将标准错误和标准输出重定向到两个文件中。当然,还有更精简的方式输出到同一个文件中:

cmd 2>&1 out.txt

有时候你并不想保存错误输出,那就将它引向一个“黑洞”(/dev/null)吧,就像错误输出没有产生过一样。

这个时候,如果你既想把输出保存起来,同时又想查看输出,怎么办呢?

command | tee out.txt | cat -n

这个时候command 的结果会保存在 out.txt 中,同时也会通过管道最为标准输出向下传递。 cat -n 将结果加上行号输出。

我们也可以使用 stdin 作为命令参数。只需要将-作为命令的文件名即可。

$ echo who is this | tee -
who is this
eho is this

抑或采用下列方法:
$ cmd &> out.txt
(4).用tee命令实现:一方面将数据重定向到文件,另一方面能够提供一份重定向数据的别本作为接二连三命令的stdin。
command | tee FILE1 FILE2
$ cat a* | tee out.txt | cat -n
代码表达:tee命令接收到来自stdin的数额。它将stdout的一份别本写入文件out.txt,同不常候将另一份别本作为后续命令的stdin。命令cat -n将从stdin中接到到的每一行数据拉长行号并写入stdout。tee命令只好从stdin中展开读取。
默许处境下,tee命令会将文件覆盖,但它提供了贰个-a选项,能够用于扩大内容。

3.原理

默认的重定向操作符使用标准输出。因此 > 等同于 1> 。

#!/bin/bash
#<redirect.sh>

echo "This is a sample text 1" > out.txt

echo "This is a sample text 2" >> out.txt

cmd 2>err.txt 1>out.txt

cmd 2>&1 out.txt

cat out.txt

cmd &> out.txt

cat out.txt

echo "tee命令" | tee err.txt out.txt

本文由美高梅游戏网站发布于智能硬件,转载请注明出处:1.5 文件陈说符和重定向

关键词:

上一篇:CentOS 6.5开机自动挂载硬盘

下一篇:没有了