输入输出

输入输出

重定向

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

命令返回值(扩展)

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

# 例:
[root@localhost ~]# ll 
total 0
[root@localhost ~]# echo $?
0

输入输出

文件的描述符

名称 文件描述符 作用
stdin 0 标准输入
stdout 1 标准输出
stderr 2 错误输出
文件名 3+
# 例:
[root@localhost ~]# ll /proc/2090/fd
total 0
lrwx------. 1 root root 64 Apr 13 16:35 0 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 16:35 1 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 16:35 2 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 17:20 255 -> /dev/pts/0

[root@localhost ~]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 08:24 /dev/stderr -> /p roc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 08:24 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 08:24 /dev/stdout -> /proc/self/fd/1

输入输出符号

名称 符号 作用
标准输入重定向 < 或 0< 将符号右边的内容交给符号左边的命令
<< 或 0<<
标准输出覆盖重定向 > 或 1> 将原本要输出在屏幕上的正确内容,覆盖到重定向文件
标准输出追加重定向 >> 或 1>> 将原本要输出在屏幕上的正确内容,追加到重定向文件
错误输出覆盖重定向 2> 将原本要输出在屏幕上的错误内容,覆盖到重定向文件
错误输出追加重定向 2>> 将原本要输出在屏幕上的错误内容,追加到重定向文件

输出重定向举例

# 将标准输出和错误输出分开
普通用户执行下列命令:
find / -type d -name'文件名' > 常规日志 2> 错误日志

# 将标准输出和错误输出放在同一文件中
find / -type d -name'文件名' &> 文件名
find / -type d -name'文件名' > 文件名 2>&1

# 如果执行的命令只有标准输出和错误输出,以上两条命令,输出结果一样,但是执行流程不一样
# 如果执行命令除了标准和错误输出还有其他输出,以上两条命令,输出结果不一样,执行流程也不一样


# 将两个命令输出的内容重定向到一个文件中
[root@localhost ~]# (ls; date) &>/dev/null

输入重定向

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

管道技术

# |:将管道符左边命令的标准输出,交给管道符右边命令的标准输入处理

# tree
-a:append 追加

# xargs:处理数据流,有些命令如果没有标准输入可以使用xargs
1.将管道符前面的标准输出进行排列
2.将排列后的内容,放到后面命令结尾处理
没有标准输入的命令,可以用xargs,有标准输入的命令也可以用,效果不同

-i:指定数据流的位置,将数据流放入{}中 

思维导图

posted @ 2022-10-08 18:58  安(za)  阅读(155)  评论(0)    收藏  举报