IO重定向笔记
输出重定向部分的复习笔记
标准输入输出
文件描述符的概念
可以通过命令查看以及绑定文件描述符FD。
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重定向到文件
- &> 把所有结果输出重定向到文件
- >> 在原有文件内容的基础上进行追加
- < 标准输入的重定向
例子
那么会有如下的操作:
> $ 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
# 更改某个用户的用户名和密码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Liarlee's Notebook!