输入输出

重定向

什么是重定向?

将原本要输出到屏幕上的内容,重新输入到其他设备中

为什么要学重定向?

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

命令返回值(扩展)

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

输入输出

查看进程


[root@wujiahao ~]# ps -ef
文件描述符

名称

文件描述符

作用

stdin

0

标准输入

stdout

1

标准输出

stderr

2

错误输出

文件名

3


佳豪哥哥教你学Linux的第十八天_标准输入

[root@wujiahao <sub>]# ll /proc/6193/fd
total 0
lrwx------. 1 root root 64 Apr 12 08:28 0 -> /dev/null
lrwx------. 1 root root 64 Apr 12 08:28 1 -> /dev/null
lrwx------. 1 root root 64 Apr 12 08:28 10 -> anon_inode:[eventfd]
lrwx------. 1 root root 64 Apr 12 08:28 11 -> socket:[34349]
lrwx------. 1 root root 64 Apr 12 08:28 2 -> /dev/null
lr-x------. 1 root root 64 Apr 12 08:28 3 -> anon_inode:inotify
lrwx------. 1 root root 64 Apr 12 08:28 4 -> anon_inode:[eventfd]
lrwx------. 1 root root 64 Apr 12 08:28 5 -> anon_inode:[eventfd]
lrwx------. 1 root root 64 Apr 12 08:28 6 -> socket:[33559]
lrwx------. 1 root root 64 Apr 12 08:28 7 -> anon_inode:[eventfd]
lrwx------. 1 root root 64 Apr 12 08:28 8 -> anon_inode:[eventfd]
lr-x------. 1 root root 64 Apr 12 08:28 9 -> anon_inode:inotify



[root@wujiahao </sub>]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 12 08:28 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 12 08:28 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 12 08:28 /dev/stdout -> /proc/self/fd/1



[wjh@wujiahao ~]$ find / -type d -name '*wjh*' 1>/tmp/a.log 2>/tmp/b.log

输入输出符号

名称

符号

作用

标准输入重定向

< 或者 0<

将符号右边的内容交给符号左边的命令


<< 或者 0<<


标准输出覆盖重定向

> 或者 1>

将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中

标准输出追加重定向

>> 或者1>>

将原本要输出在屏幕上的正确内容,追加到重定向的文件中

错误输出覆盖重定向

2>

将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中

错误输出追加重定向

2>>

将原本要输出在屏幕上的错误内容,追加到重定向的文件中

  • 标准输出重定向(覆盖)

佳豪哥哥教你学Linux的第十八天_标准输出_02

  • 标准输出重定向(追加)

佳豪哥哥教你学Linux的第十八天_标准输入_03

  • 错误输出重定向

佳豪哥哥教你学Linux的第十八天_重定向_04

  • 正确和错误都输入到相同位置

佳豪哥哥教你学Linux的第十八天_标准输出_05

出重定向举例

## 错误输出和正确输出,同时写入同一个文件
[wjh@wujiahao <sub>]$ find / -type d -name '*wjh*' &> /tmp/a.txt

[wjh@wujiahao </sub>]$ find / -type d -name '*wjh*' > /tmp/a.txt 2>&1

佳豪哥哥教你学Linux的第十八天_标准输出_06

不想看命令出来的结果,可以把他引入到黑洞中

#例如
[root@wujiahao ~]# ls /root /error >ab 2>/dev/null

[root@wujiahao ~]# ls /wjh.txt >ab &>/dev/null
  • 重定向到/dev/null

佳豪哥哥教你学Linux的第十八天_重定向_07

输入重定向

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/disk


<adsadasd>

知识点

#0.文件描述符
#1.标准输入
#2.标准输出

#3.重定向

佳豪哥哥教你学Linux的第十八天_重定向_08