IO重定向笔记

输出重定向部分的复习笔记

标准输入输出

文件描述符的概念

可以通过命令查看以及绑定文件描述符FD。

1
2
3
4
5
6
7
8
9
liarlee@hayden-pc ~
> $ ll /proc/$$/fd
总用量 0
dr-x------ 2 liarlee liarlee 0 624 20:22 .
dr-xr-xr-x 9 liarlee liarlee 0 624 20:22 ..
lrwx------ 1 liarlee liarlee 64 624 20:22 0 -> /dev/pts/0
lrwx------ 1 liarlee liarlee 64 624 20:22 1 -> /dev/pts/0
lrwx------ 1 liarlee liarlee 64 624 20:22 10 -> /dev/pts/0
lrwx------ 1 liarlee liarlee 64 624 20:22 2 -> /dev/pts/0

Linux提供的I/O设备

Linux系统提供的IO设备,共有三种:

  • STDIN - 0 默认键盘输入
  • STDOUT - 1 默认输出信息到终端
  • STDERR - 2 默认输出错误信息到终端

Linux输入输出重定向

重定向说明

STDOUT和STDERR可以被重定向到文件中,STDIN可通过读取文件实现输入重定向,重定向命令的基本格式如下:  
[CMD] [lOPERATION_SYMBOL] [FILENAME]  
命令    操作符号    文件名

操作符号包括:

  • > 把STDOUT重定向到文件
  • 2> 把STDERR重定向到文件
  • &> 把所有结果输出重定向到文件
  • >> 在原有文件内容的基础上进行追加
  • < 标准输入的重定向

例子

那么会有如下的操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    > $ ls 1> /tmp/echo.stdout  
# 正确的命令结果输出到文件中

> $ ls 2> /tmp/echo.stderr
# 命令执行的错误结果输出到文件中

> $ ls /error /usr 2>&1 >/tmp/right.test
# 将错误信息重定向输出到屏幕显示,正确的信息输出到文件
# 通俗的讲是-- 将STDERR(2)重定向为STDOUT(1)输出到屏幕上,
# 命令的其他结果输出到文件中

> $ ls /error /usr >true 2>false
# 将正确的信息输出到true中,把错误的信息输出到false中

> $ ls /error /usr >all 2>&1
# 先将标准输出重定向到文件all中,在将错误信息追加到标准输出中
# 命令结果等于ls /error /usr &>all

> $ ls /error /usr &> /dev/null
# 静默执行命令,不显示结果,不输出到终端

> $ ls /error /usr 2>&1 >/dev/null
# 错误的信息显示在终端上,其他信息不显示

# 某些命令可以使用管道将STDIN输入重定向作为命令的值
echo [PASSWD] | passwd --stdin [username] &> /dev/null
# 更改某个用户的用户名和密码
文章目录
  1. 1. 标准输入输出
    1. 1.1. 文件描述符的概念
    2. 1.2. Linux提供的I/O设备
  2. 2. Linux输入输出重定向
    1. 2.1. 重定向说明
    2. 2.2. 操作符号包括:
    3. 2.3. 例子