day6.3
输入输出
重定向
# 什么是重定向?
将原本要输出到屏幕的数据信息,重新定向到指定文件中。
# 为什么要使用重定向?
1.输出的内容比较重要的时候时,我们想要把它保存到文件中
2.在后台执行的程序,我不想让他输出的内容,干扰,显示到屏幕上。
3.将定时任务结果保存下来(备份是否成功)
4.一些执行的命令,知道他可能会有错误输出,当不想看到错误输出
5.执行一个命令,可能报错和正确的输出并存,类似错误日志需要分别输出至不同的文件
标准输入与输出
# 执行一个shell程序时通常会自动打开三个文件描述符
名称 |
文件描述符 |
作用 |
标准输入(stdin) |
0 |
通常是键盘,也可以是其他文件或者命令的输出的内容可以作为标准输入 |
标准输出(srdout) |
1 |
默认输出到屏幕 |
错误输出(stderr) |
2 |
默认输出到屏幕 |
文件名称(filename) |
3+ |
|
# 进程将从标准输入中得到数据,将正常输出打印至屏幕终端,将错误的输出的信息也打印至屏幕终端。
进程使用文件描述符(file descriptost)来管理打开文件
![]()
输入输出过程检测
# 查看输入输出设备
[root@28technicians ~]# ls -l /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 08:14 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 08:14 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 08:14 /dev/stdout -> /proc/self/fd/1
输入输出重定向符号
类型 |
操作符 |
用途 |
标准覆盖输出重定向 |
> 或者 1> |
将命令的执行结果输出到指定文件中,而不是直接显示在屏幕上 |
标准追加输出重定向 |
1>>或者>> |
将命令执行的结果追加输出到指定文件中 |
错误覆盖输出重定向 |
2> |
将程序错误的输出结果输出到执行文件中,会覆盖原文件内容 |
错误追加输出重定向 |
2>> |
将程序错误的输出的结果追加到指定文件中,不会覆盖 |
标准输入重定向 |
<<或者< |
将符号右边的内容交给符号左边的命令 |
所有输出结果 |
& |
重定向所有输出 |
输出重定向
# 标准输出重定向(覆盖)
[root@28technicians ~]# ll xxx > nba
[root@28technicians ~]# cat nba
-rw-r--r--. 1 root root 0 Apr 11 16:23 xxx
![]()
# 标准输出重定向(追加)
[root@28technicians ~]# echo "123456789" >>nba
[root@28technicians ~]# cat nba
-rw-r--r--. 1 root root 0 Apr 11 16:23 xxx
123456789
![]()
# 将标准输出和标准错误输出重定向到不同文件
[qq@28technicians ~]$ find /etc -name "*.conf" 1>a 2>b
![]()
# 将标准输出和标准错误输出重定向到同一个文件中
1.[qq@28technicians ~]$ find /etc -name "*.conf" &>c
2.[qq@28technicians ~]$ find /etc -name "*.conf" >d 2>&1
输入重定向
# 输入重定向,既原本从键盘等设备获取的输入信息,重定向由命令的输出作为输入
标准输入:< 等价 0 <
dd if=/dev/zero of=/file1.txt bs=1M count=20
dd if=/dev/zero of=/opt/disk bs=1K count=102
[root@28technicians ~]# dd bs=1k count=1024 </dev/zero >/opt/disk
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0150209 s, 69.8 MB/s
![]()