資料流重定向

2021-09-30 15:23:36 字數 2465 閱讀 9280

linux在你登入時,便將預設的標準輸入、標準輸出、標準錯誤輸出安排成你的終端。i/o重定向就是你通過與終端互動,或者在shell script裡設定,重新安排從**輸入或者輸出到**。每個程式都應該有標準輸入/輸出(錯誤輸出)。

重定向的方法大抵有:>、<、<<、管道等

先了解stdin、stdout、stderr。

標準輸出(stdout):**為1,使用》或者》,是命令執行所回傳的正確的資訊。

1>:以覆蓋的方法將正確的資料輸出到指定的檔案或者裝置上

1>>:以追加的方法將正確的資料輸出到指定的檔案或者裝置上

標準錯誤輸出(stderr):**為2,使用2>或2>>,是命令執行失敗後,所回傳的錯誤資訊。

2>:以覆蓋的方法將錯誤的資料輸出到指定的檔案或者裝置上

2>>:以追加的方法將錯誤的資料輸出到指定的檔案或者裝置上

[root@localhost ~]# cat /etc/crontab /etc/thinksay

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

home=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

cat: /etc/thinksay: 沒有那個檔案或目錄

[root@localhost ~]# cat /etc/crontab /etc/thinksay > list_right 2> list_error

[root@localhost ~]# cat list_error

cat: /etc/thinksay: 沒有那個檔案或目錄

[root@localhost ~]# cat list_right

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

home=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

標準輸入(stdin):**為0,使用《或<<,是將原本需要由鍵盤輸入的資料改由檔案內容來替代。注意,《代表的是結束輸入的意思。

[root@localhost think]# cat > test <<"eof"

> my name is think

> hello world

> eof

[root@localhost think]# cat test

my name is think

hello world

可以把》、<、>>想象成漏斗:資料會從大的一端進入,由小的一端出來。

>重定向符在目的檔案不存在時,會新建乙個。然而,目的檔案已存在,它就會被覆蓋掉,原本的資料都會丟失。而》在目的檔案不存在時,會新建乙個;存在時會追加到檔案尾。

管道可以把兩個以上執行中的程式鏈結在一起,第乙個程式的標準輸出可以變成第二個程式的標準輸入。因為,>或者《使用的是臨時檔案,管道在速度上比臨時檔案快上10倍。從最原始的資料開始,然後構造一條條管道,一步步地,管道中的每個階段都會讓資料更接近要的結果。請記得,構造管道時,應該試著讓每個階段的資料量變得更少。

[root@localhost think]# cat > test01 << "eof"

> 1 2 5

> eof

[root@localhost think]# tr -d 2 < test01 | sort > test02

[root@localhost think]# cat test02

1 5

有個特殊檔案,便是大家耳熟能詳的」位桶「--/dev/null。重定向到此檔案的資料都會被系統丟掉。

最後介紹一下,什麼時候重定向?

運用場景:

1)螢幕輸出資訊很重要,而且我們需要將其存下時

2)後台執行中的程式,不希望它打攪螢幕正常的輸出結果時

3)一些系統的例行工作,希望它可以存下來時

4)一些執行命令的可能已知錯誤資訊,想以「2> /dev/null"將其丟棄時

5)錯誤資訊與正確資訊需要分別執行時

資料流重定向

重定向,將原本輸出到標準輸出的資料重定向到乙個檔案中,因為標準輸出 dev stdout 本身也是乙個檔案,我們將命令輸出導向另乙個檔案自然也是沒有任何問題的。下面我們簡單的回顧一下我們前面經常用到的兩個重定向操作 echo hello shiyanlou redirect echo www.jly...

資料流重定向

管道預設是連線前乙個命令的輸出到下乙個命令的輸入 linux中提供三個標準輸入與輸出 檔案路徑 檔案作用 dev stdin 用於標準輸入 dev stdout 用於標準輸出 dev stderr 用於錯誤輸出 簡單的重定向 通過管道把檔案的輸出作為cat的輸出,並把cat的輸出作為檔案test的輸...

資料流重定向

linux在你登入時,便將預設的標準輸入 標準輸出 標準錯誤輸出安排成你的終端。i o重定向就是你通過與終端互動,或者在shell script裡設定,重新安排從 輸入或者輸出到 每個程式都應該有標準輸入 輸出 錯誤輸出 重定向的方法大抵有 管道等 先了解stdin stdout stderr。標準...