基础day18
作者:互联网
输入输出
重定向
-
什么是重定向
-
将原本输出到屏幕上的内容,重新输入到其它设备中
-
-
为什么要学重定向
# 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:指定数据流的位置,将数据流放入{}中
标签:输出,重定向,标准,root,基础,dev,命令,day18 来源: https://www.cnblogs.com/LZA1218/p/16182517.html