day6.3
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


浙公网安备 33010602011771号