day13-重定向

什么是重定向

將原本要輸出到屏幕的數(shù)據(jù)信息,重新定向到某個(gè)指定的文件中。

為何要使用重定向

1.當(dāng)屏幕輸出的信息很重要,而且希望保存重要的信息時(shí);
2.后臺(tái)執(zhí)行中的程序,不希望他干擾屏幕正常的輸出結(jié)果時(shí);
3.系統(tǒng)的例行命令,例如定時(shí)任務(wù)的執(zhí)行結(jié)果,希望可以存下來時(shí);
4.一些執(zhí)行命令,我們已經(jīng)知道他可能出現(xiàn)錯(cuò)誤信息,想將它直接丟掉時(shí);
5.錯(cuò)誤日志與正確日志需要分別輸出至不同的文件保存時(shí);

標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,錯(cuò)誤輸出

當(dāng)運(yùn)行一個(gè)程序時(shí)通常會(huì)自動(dòng)打開三個(gè)標(biāo)準(zhǔn)文件,分別是標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、錯(cuò)誤輸出


image.png

進(jìn)程將從標(biāo)準(zhǔn)輸入中得到數(shù)據(jù),將正常輸出打印至屏幕終端,將錯(cuò)誤的輸出信息也打印至屏幕終端
PS:進(jìn)程是使用文件描述符(file descriptors)來管理打開文件的


image.png

輸出、輸入重定向

輸出重定向

重定向就是用來改變標(biāo)準(zhǔn)輸出或者標(biāo)準(zhǔn)錯(cuò)誤輸出的一個(gè)指向

1>  標(biāo)準(zhǔn)輸出重定向(覆蓋) 
1>>標(biāo)準(zhǔn)輸出重定向(追加)
2>  標(biāo)準(zhǔn)錯(cuò)誤輸出重定向(覆蓋)
2>>標(biāo)準(zhǔn)錯(cuò)誤輸出重定向(追加)
&>/dev/null  混合輸出(覆蓋)
&>>/tmp/t.log  混合輸出(追加)

案例1:標(biāo)準(zhǔn)輸出重定向(每次都會(huì)覆蓋文件之前的內(nèi)容)


image.png
[root@oldboy ~]# ifconfig ens32 > 1.txt

案例2:標(biāo)準(zhǔn)輸出重定向(在文件的尾部添加內(nèi)容)


image.png
[root@oldboy ~]# echo "123" >> 1.txt

案例3:錯(cuò)誤輸出重定向


image.png
將錯(cuò)誤輸出重定向至一個(gè)文件
[xc@oldboy ~]$ find /etc/ 2>1.txt
將正確輸出和標(biāo)準(zhǔn)輸出重定向至不同的文件文件
[xc@oldboy ~]$ find /etc/ >1.txt 2>2.txt

案例4:正確和錯(cuò)誤都輸入到相同的位置


image.png
將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到同一個(gè)文件,混合輸出
[xc@oldboy ~]$ find /etc/ &>1.txt 
合并兩個(gè)文件至一個(gè)文件
[xc@oldboy ~]$ cat 1.txt 2.txt >3.txt

案例5:正確和錯(cuò)誤都輸入到相同文件


image.png
[xc@oldboy ~]$ find /etc/ >1.txt 2>&1

案例6:重定向到空設(shè)備/dev/null


image.png
[root@oldboy ~]# ls /root /error >1.txt 2>/dev/null
[root@oldboy ~]# ls /root /error >1.txt &>/dev/null

案例7:腳本中使用重定向

[root@oldboy ~]# vim ping2.sh
ping 10.0.0.200 -c 1 -W 1 >/dev/null
if [ $? -eq 0 ];then
   echo "10.0.0.200 is up." >>up.txt
else
   echo "10.0.0.200 is down." >>down.txt
fi
[root@oldboy ~]# chmod +x ping2.sh
[root@oldboy ~]# ./ping2.sh
輸入重定向

輸入重定向,即原本從鍵盤等上獲得的輸入信息,重定向由命令的輸出作為輸入。
案例1:從文件中讀入輸入

沒有改變輸入的方向,默認(rèn)鍵盤
[root@oldboy ~]# mail alice 
Subject: hello
1111 
2222
3333
.   #結(jié)束
EOT

檢查是否收到郵件
[root@oldboy ~]# su - alice
[root@oldboyi ~]# mail

輸入重定向,來自于文件
[root@oldboyi ~]# mail -s "test01" alice < /etc/hosts

案例2

[root@oldboy ~]# grep "root" </etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

案例3:

[root@oldboy ~]# dd if=/dev/zero of=/file1.txt bs=1M count=20
[root@oldboy ~]# dd </dev/zero >/file2.txt bs=1M count=20

案例4:腳本中打印菜單的一種使用方法

[root@oldboy ~]# vim vm.sh
cat <<-EOF
+------------------- --- ---- --- ---- --- --- ---- --- --+ ||
| ====================== | 
| 虛擬機(jī)基本管理 v5.0 |
| by xuliangwei |
| ====================== | 
| 1. 安裝 KVM |
| 2. 安裝或重置 CentOS-6.9 | 
| 3. 安裝或重置 CentOS-7.4 | 
| 5. 安裝或重置 Windows-7  | 
| 6. 刪除所有虛擬機(jī) |
| q. 退出管理程序 |
+------------------- --- ---- --- ---- --- --- ---- --- --+ 
EOF

進(jìn)程管理技術(shù)

1.管道操作符號(hào)“|”,主要用來連接左右兩個(gè)命令,將左側(cè)的命令的標(biāo)準(zhǔn)輸出,交給右側(cè)的標(biāo)準(zhǔn)輸入
PS:無法傳遞標(biāo)準(zhǔn)錯(cuò)誤輸出至后著命令


image.png

PS:管道命令符能進(jìn)一步掌握命令之間的搭配使用方法,進(jìn)一步提高命令輸出值的處理效率
2.管道中的tee技術(shù)


image.png

選項(xiàng):-a 追加
[root@oldboy ~]# ifconfig |grep "inet " |tee -a ip.txt |awk '{print $2}'
10.0.0.200
127.0.0.1
[root@oldboy ~]# cat ip.txt 
        inet 10.0.0.200  netmask 255.255.255.0  broadcast 10.0.0.255
        inet 127.0.0.1  netmask 255.0.0.0

3.xargs 參數(shù)傳遞,主要讓一些不支持管道的命令可以使用管理技術(shù)

[root@oldboy ~]# which cat| xargs ls -l
-rwsr-xr-x. 1 xc root 54160 Oct 31  2018 /usr/bin/cat
[root@oldboy ~]# ls | xargs rm -fv
removed ‘1.txt’
removed ‘2.txt’
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、.什么是重定向 定義: 將原本要輸出到屏幕的數(shù)據(jù)信息,重新定向到某個(gè)指定的文 件中。 二、為什么要使用重定向 ...
    矮寨坡的M3閱讀 231評(píng)論 0 0
  • 一,什么是重定向 將原本要輸出到屏幕的數(shù)據(jù)信息,重新定向到某個(gè)指定的文件中。預(yù)備知識(shí):當(dāng)運(yùn)行一個(gè)程序時(shí)通常會(huì)自動(dòng)打...
    不大不小的小雯子閱讀 367評(píng)論 0 0
  • day13 2019.8...
    丶向陽閱讀 295評(píng)論 0 1
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,712評(píng)論 0 5
  • 1.什么是重定向 2.為何要使用重定向 3.標(biāo)準(zhǔn)輸入與輸出 進(jìn)程將從標(biāo)準(zhǔn)輸入中得到數(shù)據(jù),將正常輸出打印至屏幕終端,...
    江枍_a99e閱讀 299評(píng)論 0 3

友情鏈接更多精彩內(nèi)容