输出重定向部分的复习笔记
标准输入输出
文件描述符的概念
可以通过命令查看以及绑定文件描述符FD。
1 2 3 4 5 6 7 8 9
| liarlee@hayden-pc ~ > $ ll /proc/$$/fd 总用量 0 dr-x------ 2 liarlee liarlee 0 6月 24 20:22 . dr-xr-xr-x 9 liarlee liarlee 0 6月 24 20:22 .. lrwx------ 1 liarlee liarlee 64 6月 24 20:22 0 -> /dev/pts/0 lrwx------ 1 liarlee liarlee 64 6月 24 20:22 1 -> /dev/pts/0 lrwx------ 1 liarlee liarlee 64 6月 24 20:22 10 -> /dev/pts/0 lrwx------ 1 liarlee liarlee 64 6月 24 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 # 更改某个用户的用户名和密码
|