20181205 I/O 重定向

I/O 重定向

一.標準輸入、標準輸出、標準錯誤
20181205 I/O  重定向
file descriptors (FD,文件描述符 或 Process I/O channels):
進程使用文件描述符來管理打開的文件
[root@tianyun ~]# ls /proc/$$/fd
0 1 2 3 4
0, 1, and 2, known as standard input, standard output, and standard error
20181205 I/O  重定向
二.輸出重定向 (覆蓋,追加)
正確輸出: 1> 1>> 等價於 > >>
錯誤輸出: 2> 2>>
案例 1:輸出重定向(覆蓋)
[root@tianyun ~]# date 1> date.txt
20181205 I/O  重定向
案例 2:輸出重定向(追加)
[root@tianyun ~]# date >> date.txt
20181205 I/O  重定向
案例 3:錯誤輸出重定向
[root@tianyun ~]# ls /home/ /aaaaaaaaa >list.txt
ls: 無法訪問/aaaaaaaaa: 沒有那個文件或目錄
[root@tianyun ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt //重定向到不同的位置
20181205 I/O  重定向
案例 4: 正確和錯誤都輸入到相同位置
[root@tianyun ~]# ls /home/ /aaaaaaaaa &>list.txt //混合輸出
20181205 I/O  重定向
案例 5: 正確和錯誤都輸入到相同位置
[root@tianyun ~]# ls /home/ /aaaaaaaaa >list.txt 2>&1 //重定向到相同的位置
20181205 I/O  重定向
案例 6:重定向到空設備/dev/null
[root@tianyun ~]# ls /home/ /aaaaaaaaa >list.txt 2>/dev/null //空設備,即將產生的輸出丟掉
[root@tianyun ~]# ls /home/ /aaaaaaaaa &>/dev/null //空設備,即將產生的輸出丟掉
20181205 I/O  重定向
思考:
cp /etc/passwd /dev/null ???
cp /etc/passwd /etc/passwd1 2>/dev/null ???
案例 7:腳本中使用重定向
[root@tianyun ~]# 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@tianyun ~]# vim ping1.sh
[root@tianyun ~]# chmod +x ping1.sh
[root@tianyun ~]# ./ping1.sh
案例 7:腳本中使用重定向
[root@tianyun ~]# 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:腳本中使用重定向
[root@tianyun ~]# 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
[root@tianyun ~]# vim ping2.sh
[root@tianyun ~]# chmod +x ping1.sh
[root@tianyun ~]# ./ping2.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章