Shell脚本笔记(六)呈现数据

呈现数据

一、文件描述符

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:为追加

posted @ 2018-01-22 11:21  Shadowplay  阅读(293)  评论(0编辑  收藏  举报