20181205 I/O 重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20181205 I/O 重定向相关的知识,希望对你有一定的参考价值。

I/O 重定向

一.标准输入、标准输出、标准错误
技术分享图片
file descriptors (FD,文件描述符 或 Process I/O channels):
进程使用文件描述符来管理打开的文件
[[email protected] ~]# ls /proc/$$/fd
0 1 2 3 4
0, 1, and 2, known as standard input, standard output, and standard error
技术分享图片
二.输出重定向 (覆盖,追加)
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
案例 1:输出重定向(覆盖)
[[email protected] ~]# date 1> date.txt
技术分享图片
案例 2:输出重定向(追加)
[[email protected] ~]# date >> date.txt
技术分享图片
案例 3:错误输出重定向
[[email protected] ~]# ls /home/ /aaaaaaaaa >list.txt
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
[[email protected] ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt //重定向到不同的位置
技术分享图片
案例 4: 正确和错误都输入到相同位置
[[email protected] ~]# ls /home/ /aaaaaaaaa &>list.txt //混合输出
技术分享图片
案例 5: 正确和错误都输入到相同位置
[[email protected] ~]# ls /home/ /aaaaaaaaa >list.txt 2>&1 //重定向到相同的位置
技术分享图片
案例 6:重定向到空设备/dev/null
[[email protected] ~]# ls /home/ /aaaaaaaaa >list.txt 2>/dev/null //空设备,即将产生的输出丢掉
[[email protected] ~]# ls /home/ /aaaaaaaaa &>/dev/null //空设备,即将产生的输出丢掉
技术分享图片
思考:
cp /etc/passwd /dev/null ???
cp /etc/passwd /etc/passwd1 2>/dev/null ???
案例 7:脚本中使用重定向
[[email protected] ~]# 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
[[email protected] ~]# vim ping1.sh
[[email protected] ~]# chmod +x ping1.sh
[[email protected] ~]# ./ping1.sh
案例 7:脚本中使用重定向
[[email protected] ~]# vim ping1.sh
ping -c1 10.18.40.100 &>/dev/null
if [ $? -eq 0 ];then
echo "10.18.40.100 is up."
else
echo "10.18.40.100 is down!"
fi
案例 8:脚本中使用重定向
[[email protected] ~]# vim ping2.sh
ping -c1 10.18.40.100 &>/dev/null
if [ $? -eq 0 ];then
echo "10.18.40.100 is up." >>up.txt
else
echo "10.18.40.100 is down!" >>down.txt
fi
[[email protected] ~]# vim ping2.sh
[[email protected] ~]# chmod +x ping1.sh
[[email protected] ~]# ./ping2.sh

以上是关于20181205 I/O 重定向的主要内容,如果未能解决你的问题,请参考以下文章

标准I/O重定向和管道

I/O重定向详解

标准I/o重定向和管道

I/O重定向

I/O重定向

10标准I/O输入输出重定向及管道