输入输出

学向勤中得,萤窗万卷书。这篇文章主要讲述输入输出相关的知识,希望能为你提供帮助。
重定向
什么是重定向?
将原本要输出到屏幕上的内容,重新输入到其他设备中
为什么要学重定向?

# 1.输出的内容,比较重要的时候,我们想把它保存到文件中
# 2.在后台执行的程序,我不想让它输出的内容,干扰到屏幕
# 3.将定时任务的结果保存下来(备份,是否成功)
# 4.一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出
# 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。

命令返回值
如何判断一个命令是否执行成功?????
echo $?命令的返回值
返回值是0,则代表上一条命令执行成功
返回值非0,则代表上一条命令执行不成功

输入输出文件描述符
名称
文件描述符
作用
stdin
0
标准输入
stdout
1
标准输出
stderr
2
错误输出
【输入输出】 文件名
3+



[root@shiying < sub> ]# ll /proc
total 0
dr-xr-xr-x.9 rootroot0 Apr 13 18:01 1174

[root@shiying < /sub> ]# ll /proc/1174/fd
total 0
lrwx------. 1 root root 64 Apr 13 18:01 0 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 18:01 1 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 18:01 2 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 18:45 255 -> /dev/pts/0

[root@shiying < sub> ]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdout -> /proc/self/fd/1


[root@shiying < /sub> ]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdout -> /proc/self/fd/1
含有zls文件名的内容标准输出到/tmp/b.log,错误内容输出到/tmp/a.log
[root@shiying < sub> ]# find / -type d -name *zls* 2> /tmp/a.log 1> /tmp/b.log
[root@shiying < /sub> ]# cat /tmp/a.log

输入输出符号
名称
符号
作用
标准输入重定向
< 或者 0<
将符号右边的内容交给符号左边的命令


< < 或者 0< <


标准输出覆盖重定向
> 或者 1>
将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中
标准输出追加重定向
> > 或者1> >
将原本要输出在屏幕上的正确内容,追加到重定向的文件中
错误输出覆盖重定向
2>
将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中
错误输出追加重定向
2> >
将原本要输出在屏幕上的错误内容,追加到重定向的文件中
输出重定向举例
## 错误输出和正确输出,同时写入同一个文件
[root@shiying < sub> ]# find /type d -name *111* & > /tmp/a.txt

[root@shiying < /sub> ]# find /type d -name *111* > /tmp/a.txt 2> & 1

# 正确输出 错误输出放进正确输出里,然后全部重定向到/tmp/c.txt
[yyy@shiying < sub> ]$ find / -type d -name *111* > /tmp/c.txt 2> & 1
#正确输出 错误输出和别的所有输出同时放进c.txt文件里
[yyy@shiying < /sub> ]$ find / -type d -name *111* & > /tmp/c.txt
# > >
[root@shiying < sub> ]# cat > > 111.txt < < EOF
> 456
> 789
> qwe
> EOF
[root@shiying < /sub> ]# cat 111.txt
1 a !
2 b @
3 c #
4 d $
5 e %
456
789
qwe

[root@shiying < sub> ]# echo qqq > > 222.txt
[root@shiying < /sub> ]# cat 222.txt
456
qqq
# >
[root@shiying < sub> ]# ls /oiuui > 222.txt
ls: cannot access /oiuui: No such file or directory
[root@shiying < /sub> ]# cat 222.tx
cat: 222.tx: No such file or directory
[root@shiying < sub> ]# cat 222.txt

# 正确内容覆盖到重定向的文件中,错误输出到屏幕上,222.txt文件中内容为空
[root@shiying < /sub> ]# ls /oiuui > 222.txt
ls: cannot access /oiuui: No such file or directory
[root@shiying < sub> ]# cat 222.txt

[root@shiying < /sub> ]# > 222.txt
[root@shiying < sub> ]# cat 222.txt
# 错误输出 报错内容会写进文件里
[root@shiying < /sub> ]# ls /oiuui 2> 222.txt
[root@shiying ~]# cat 222.txt
ls: cannot access /oiuui: No such file or directory

输入重定向
[root@shiying ~]# cat < /etc/passwd
< 可省略

dd if=/dev/zero of=/file1.txt bs=1M count=20
dd if=/dev/zero of=/opt/disk bs=1K count=1024

ddbs=1K count=1024< /dev/zero > /opt/disk
dd < /dev/zero > /opt/disk bs=1K count=1024

知识点
#1.文件描述符 0 1 2 3+
#2.标准输入 0< < 0< < < <
#3.标准输出 > > > 1
#4.重定向 输出:1> > > 2> > > & > > >
输入:< 0< < < 0< <


    推荐阅读