一 .管道及重定向
I/O重定向
I/O Input/Output Redirection
标准输入、标准输出、标准错误
输出重定向及综合案例
输入重定向及结合案例
标准输入、标准输出、标准错误
file descriptors (FD,文件描述符 或 Process I/O channels): 进程使用文件描述符来管理打开的文件
[root@youngfitn ~]# ls /proc/$$/fd
0 1 2 3 4
0, 1, and 2, known as standard input, standard output, and standard error
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QGtEpuit-1584621260360)(image\2.png)]
输出重定向 (覆盖,追加)
正确输出: 1> 1>> 等价于 >覆盖 >> 追加 命令结果能够正确的显示
错误输出: 2> 2>> 命令结果不能正确的显示或者命令错误
如果不加012 ,则>默认是1 使用时,会将正确的接受,错误的报错
1.1. 案例1:输出重定向(覆盖)
[root@youngfitn ~]# date 1> date.txt
[root@youngfitn ~]# date > date.txt
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGRQVa0Y-1584621260361)(image\3.png)]
1.2.案例2:输出重定向(追加)
[root@youngfitn ~]# date >> date.txt
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-brmBRy7e-1584621260361)(image\4.png)]
1.3. 案例3:错误输出重定向
[root@youngfitn ~]# ls /home/ /aaaaaaaaa >list.txt
ls: cannot access /aaaaaaa: No such file or directory
[root@cuichengjie ~]# cat list.txt
/home/:
cuichengjie4
如果不加012 ,则>默认是1 使用时,会将正确的接收,错误的报错
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
[root@youngfitn ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt
[root@cuichengjie ~]# cat list.txt //接受了正确的结果
/home/:
cuichengjie4
[root@cuichengjie ~]# cat error.txt //接收了错误的结果
ls: cannot access /aaaaaaa: No such file or directory
list会接收正确的结果,error会接收错误的结果,
//重定向到不同的位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HeFHqykS-1584621260361)(image\5.png)]
1.4.正确和错误都输入到相同位置
[root@youngfitn ~]# ls /home/ /aaaaaaaaa &>list.txt //混合输出,将正确和错误的内容一同输入到list里
[root@cuichengjie ~]# cat list.txt //将正确和错误de
ls: cannot access /aaaaaa: No such file or directory
/home/:
cuichengjie4
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wjVib6B5-1584621260361)(image\6.png)]
1.5. 正确和错误都输入到相同位置
[root@youngfitn ~]# ls /home/ /aaaaaaaaa >list.txt 2>&1 //重定向到相同的位置 ,与上面的结果相同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BecJl5D6-1584621260362)(image\7.png)]
$?是返回上一次命令返回的值,如果是0则上条命令成功,如果不是则代表失败。
-ep 在if语句中是 等于 的意思
1.6.脚本中使用重定向
[root@youngfitn ~]# vim ping1.sh
ping -c1 10.18.40.100
if [ $? -eq 0 ];then
echo "10.18.40.100 is up."
else
echo "10.18.40.100 is down!"
fi
[root@youngfitn ~]# chmod +x ping1.sh
[root@youngfitn ~]# ./ping1.sh ./是当前目录
1.7.脚本中使用重定向
[root@youngfitn ~]# vim ping1.sh
ping -c1 10.18.40.100 &>/dev/null
f [ $? -eq 0 ];then
echo "10.18.40.100 is up."
else
echo "10.18.40.100 is down!"
fi
案例8:脚本中使用重定向