文章目录
1. 简述
一般情况下:
- 输入方向就是数据从哪里流向程序。数据默认从键盘流向程序,如果改变了他的方向,数据就从让其他地方流入,这就是
输入重定向
; - 输出方向就是数据从程序流向哪里。数据默认从程序流向显示屏,如果改变了它的方向,数据就流向其他地方,这就是
输出重定向
;
Linux中一切皆文件,包括标准输入设备(键盘)和标准输出设备(显示器)在内的所有计算机硬件都是文件;
为了表示和区分已经打开的文件,Linux会给每一个文件分配一个ID,这个ID就是一个整数,被称为文件描述符;
输出重定向是指命令的结果不再输出到显示屏上,而是输出到其他地方,一般是文件中,这样做的最大好处就是,把命令的结果保存起来,当我们需要的时候可以随时查询;
2. 输入 输出重定向
2.1.输入重定向 command1 < file1
就是你登陆linux服务器 你想将某个文件,事先准备好的,里面有内容的,导入到系统里面去,最常见的,将sql文件导入到数据库 就是输入重定向
2.2 输出重定向 command1 > file1
举个最简单的列子,就是你在控制台输出的日志,你想放到文件里面去,就是输出重定向
2.3.追加就是 >>
就是基于原先重定向的基础之上追加,而不是覆盖原来的
2.4.简单命令说明
命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。
2.5. 深入命令说明 stdin stdout stderr
文件描述符 缩写 描述
0 STDIN 标准输入
1 STDOUT 标准输出
2 STDERR 标准错误
-
只重定向错误 $ command 2>file
-
基础上追加 $ command 2>>file
-
只重定向标准输出 $ command 1>file
-
基础上追加 $ command 1>>file
如果希望将 stdout (输出)和 stderr(错误) 合并后重定向到 file -
错误和输出一起 $ command > file 2>&1
或者 $ command &> file
bash shell提供了符号&>,使用这个符号的话,bash shell会自动赋予错误消息更高的优先级。
- 基础上追加 $ command >> file 2>&1
如果希望对 stdin(输入) 和 stdout(输出) 都重定向,可以这样写: - 输入和输出一起 $ command < file1 >file2
2.6 /dev/null 文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
$ command > /dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
如果希望屏蔽 stdout 和 stderr,可以这样写:
$ command > /dev/null 2>&1
注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
这里的 2 和 > 之间不可以有空格,2> 是一体的时候才表示错误输出。