重定向
什么是重定向
将原本要输出到屏幕上的内容,重新输入到其他设备中
为什么要学重定向
#1:输出的内容,比较重要的时候,我们想把它保存到文件中
#2:在后台执行的程序,我不想让它输出的内容,干扰到屏幕
#3:将定时任务的结果保存下来(备份,是否成功)
#4:一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出
# 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至
不同的文件。
命令返回值(扩展)
如何判断一个命令是否执行成功?????
$? 命令的返回值
返回值是0,则代表上一条命令执行成功
返回值非0,则代表上一条命令执行不成功
输入输出
0 ✓ 21:29:23 root@jinnan,10.0.0.101:~ # ll /proc/7187/fd
total 0
lrwx------ 1 root root 64 Apr 13 16:19 0 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 13 16:19 1 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 13 16:19 2 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 13 18:40 255 -> /dev/pts/0
0 ✓ 21:29:29 root@jinnan,10.0.0.101:~ # ll /dev/std*
lrwxrwxrwx 1 root root 15 Apr 13 16:18 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Apr 13 16:18 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Apr 13 16:18 /dev/stdout -> /proc/self/fd/1
##举例(查看系统“tangli1"标准输出到/tmp/a.log;错误输出到/tmp/d.log。
[tangli1@jinnan ~]$ find / -type d -name 'tangli1' 1>/tmp/a.log
2>/tmp/d.log
#查看标准输出
[tangli1@jinnan ~]$ tail -3 /tmp/a.log
/home/tangli1
#查看错误输出
[tangli1@jinnan ~]$ tail -3 /tmp/d.log
find: ‘/home/zls’: Permission denied
find: ‘/home/oldboy’: Permission denied
find: ‘/home/yourname’: Permission denied
输入输出符号
输出重定向举例
##错误输出和正确输出,同时写入同一个文件中
##( 1> /tmp/a.log:把标准输出重定向到文件中;2>&1:把错误输出重定向到标准输出中;
&:固定用法)
[tangli1@jinnan ~]$ find / -type d -name 'tangli1' 1>/tmp/a.log 2>&1
# &:所有文件描述符
[tangli1@jinnan ~]$ find / -type d -name 'tangli1' &> /tmp/d.log
输入重定向
dd if=/dev/zero of=/file1.txt bs=1M count=20
dd if=/dev/zero of=/opt/disk bs=1K count=1024
##举例 /dev/zero标准输入到dd,再有dd标准输出到/opt/disk
dd bs=1K count=1024 </dev/zero >/opt/disk
知识点
#0.文件描述符
#1.标准输入
#2.标准输出
#3.重定向