[TOC]
输入输出day20
重定向
什么是重定向
将原本要输出到屏幕上的内容,重新输入到其他设备中
为什么要学重定向
# 1.输出的内容,比较重要的时候,我们想把它保存到文件中
# 2.在后台执行的程序,我不想让它输出的内容,干扰到屏幕
# 3.将定时任务的结果保存下来(备份,是否成功)
# 4.一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出
# 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件
命令返回值(扩展)
如何判断一个命令是否执行成功???
$? 命令的返回值
返回值是0,则代表上一条命令执行成功
返回值不是0,则代表上一条命令执行不成功
输入输出
文件描述符
名称 | 文件描述符 | 作用 |
stdin | 0 | 标准输入 |
stdout | 1 | 标准输出 |
stderr | 2 | 错误输出 |
文件名 | 3+ |
0 ? 07:18:30 root@miaosen,10.0.0.100:<sub> # ll /proc/7224/fd
total 0
lrwx------ 1 root root 64 Apr 15 07:19 0 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 15 07:19 1 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 15 07:18 2 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 15 07:19 3 -> socket:[39306]
0 ✓ 07:20:32 root@miaosen,10.0.0.100:</sub> # ll /dev/std*
lrwxrwxrwx 1 root root 15 Apr 15 07:05 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Apr 15 07:05 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Apr 15 07:05 /dev/stdout -> /proc/self/fd/1
0 ✓ 07:27:39 root@miaosen,10.0.0.100:~ # find / -type d -name '*sj*' 1>/tmp/a.log 2>/tmp/b.log
输入输出符号
名称 | 符号 | 作用 |
标准输入重定向 | <或者 0< | 将符号右边的内容交给符号左边的命令 |
<<或者 0<< | ||
标准输出覆盖重定向 | > 或者1 > | 将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中 |
标准输出追加重定向 | >>或者1>> | 将原本要输出在屏幕上的正确内容,追加到重定向的文件中 |
错误输出覆盖重定向 | 2> | 将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中 |
错误输出追加重定向 | 2>> | 将原本要输出在屏幕上的错误内容,追加到重定向的文件中 |
输出重定向举例
## 错误输出和正确输出,同时写入同一个文件
find / -type d -name 'sj' &> /tmp/s.tx
find / -type d -name 'sj' > /tmp/s.txt 2>&1
输入重定向
dd if=/dev/zero of=/file1.txt bs=1M count=20
dd if=/dev/zero of=/opt/disk bs=1K count=1024
dd bs=1K count=1024 </dev/zero >/opt/dis
知识点
#0.文件描述符
#1.标准输入
#2.标准输出
#3.重定向