呈现数据

一、文件描述符

Linux系统将每个对象当做文件处理,这包括输入和输出进程。Linux用文件描述符来标识每个文件对象。每个进程最多可以有9个

文件描述符,bash shell保留了前三个文件描述符。

文件描述符                                  缩写                                                    描述

        0-----------------------------------STDIN--------------------------------------标准输入,对于终端界面来说就是键盘

        1-----------------------------------STDOUT-----------------------------------标准输出,对于终端界面来说就是屏幕

        2-----------------------------------STDERR-----------------------------------标准错误,对于终端界面来说就是屏幕

1.STDIN

在使用输入重定向符号(<)时, Linux会用重定向指定的文件来替换标准输入文件描述符。
它会读取文件并提取数据,就如同它是键盘上键入的。

2.STDOUT

在使用标准输出将数据导入文件时,如果遇到错误,错误信息是不会被导入到文件中去的。

3.STDERR

STDERR文件描述符代表shell的标准错误输出,脚本出错时错误信息都会发送到该位置。

重定向错误



ls -al badfile 2> err_log.txt



同时重定向错误和标准输出到不同文件



ls -al file1 file2 badfile 1> log.txt 2> err_log.txt



同时重定向错误和标准输出到同一个文件



ls -al file1 file2 badfile &> log.txt
#注意相对于标准输出,bash shell 给与标准错误输出更高优先级



二、在脚本中重定向输出

1.临时重定向

将信息重定向到STDERR



echo "A error msg" >&2



2.永久重定向



exec 1> out.txt



三、在脚本中重定向输入



exec 0< in.txt



 

四、创建自己的重定向

1.创建输出文件描述符



#!/bin/bash
exec 3> textout
echo "My output" >&3



当然也可以使用追加



exec 3>> out



2.重定向文件描述符



#!/bin/bash
exec 3>&1
exec 1>out.txt
#注意此时3指向屏幕,1指向out.txt文件
echo "Going to 1"
echo "Going to 3" >&3



3.创建输入文件描述符



exec 6<&0
exec 0<myfile



4.创建读写文件描述符

可以打开单个文件同时作为输入和输出



exec 3<> file



5.关闭文件描述符

一般情况下,如果创建了输入或输入文件描述符,shell会在脚本退出时自动关闭它们。但有时候我们需要手动关闭。



exec 3>&-



一旦关闭了文件描述符,就不能向它写入任何东西否则会报错。

6.阻止命令输出



ls -al /dev/null



用/dev/null清空文件中的数据



cat /dev/null > file



 

五、创建临时文件

1.创建本地临时文件



mktemp testfile
#会将读写权限分配给owner,文件创建者为owner



#将文件名保存到变量中
fileName=$(mktemp testfile)



2.在/tmp目录创建临时文件



mktemp -t testfile



3.创建临时目录    -d

六、记录消息

tee命令相当于管道的一个T型接头。它将从STDIN过来的数据同时发往两处。一处是
STDOUT,另一处是tee命令行所指定的文件名

命令格式:tee filename



date | tee test.txt



-a:为追加