linux输出重定向

前言

在Ubuntu的shell终端中输入命令,终端窗口上就会显示相对应的信息,假如现在你需要调试一款软件,默认调试信息是输出到显示屏上的,如果信息量巨大,问题复现的时候你就很难去查找出错信息,此时可以将调试的信息重定向输出到指定文件中,复现问题的时候去查看文件里的调试信息就会方便很多。

概念简述

标准输入:STDIN ,文件描述符为0,默认键盘为输入端;

标准输出:STDOUT,文件描述符为1,默认输出到屏幕;

错误输出:STDERR ,文件描述符为2,默认输出到屏幕;

PS:文件描述符0~2被它们3个占用了,所以打开其它文件返回的文件描述符永远都是大于2的。标准输入重定向个人感觉没啥好说的,输出重定向平时应用比较多。

1缓冲区

缓冲区是内存空间的一部分,也叫缓存,这部分内存空间预留来缓冲输入、输出的数据,例如文件打开后,文件数据拷贝到缓冲区中,然后对文件的操作都是对该缓冲区数据的操作。对缓冲区的操作可以加快计算机的访问速度和减少对磁盘的读写。

缓冲区分为三种类型:

全缓冲:当填满标准输入或输出缓存后才进行实际输入/输出操作。例如对磁盘文件的读写;

行缓冲:当输入或输出中遇到换行符时,执行真正的I/O操作。例如标准输入、标准输出就是行缓冲,当遇到换行符的时候才去读取缓冲区的内容;

不带缓冲:顾名思义就是缓冲区的读取没有条件限制。例如错误输出STDERR就是,有错误信息的时候立马就输出到终端显示。

2输出重定向

首先需要认识下重定向符号“>”文件覆盖输出,“>>”文件追加输出

2.1 文件覆盖输出

command > file:标准输出重定向,将命令的输出信息以覆盖的形式输出到file文件中,因为其文件描述符为1,可以默认不写,格式也可以写成command 1> file,注意文件描述符1和>之间不能用空格间隔开。

command 2> file:错误输出重定向,将命令的错误输出信息以覆盖的形式输出到file文件中。

linux输出重定向_第1张图片

2.2 文件追加输出

command >> file:标准输出重定向,将命令的输出信息以追加的形式输出到file文件中。

linux输出重定向_第2张图片

command 2>> file:错误输出重定向,将命令的错误输出信息以追加的形式输出到file文件中。

linux输出重定向_第3张图片

2.3 同时重定向标准输出和错误输出

command >>(或者>)file_1 2>>(或者>)file_2:搭配 “>”和“>>”以不同的方式输出到不同文件中。

command >>(或者>)file 2>>(或者>)&1:搭配 “>”和“>>”以不同的方式输出到同一个文件中。

你可能感兴趣的:(Ubuntu,服务器,运维)