1 5 資料流重導向(redirect)

2021-09-28 12:18:21 字數 1927 閱讀 7371

當我們執行乙個指令時,此指令可能由檔案讀取資料,經處理之後,輸出到螢幕上,此外,若指令執行失敗,則會傳回錯誤指示。

在這個過程中,

輸出操作被稱為:standend output,簡稱stdout。輸出**為1,使用符號》或》表示。

輸出錯誤操作被稱為:standend error output,簡稱stderr。輸出**為2,使用符號2>或2>>表示。

其中,對於輸出方式而言,我們可以將輸出的資訊直接指向檔案,進行儲存,這樣也可以節省螢幕空間。使用規則如下:

將所有輸出資訊儲存至乙個檔案下

[haoqiqi@localhost ~]$ find /home -name .bashrc >list 2>

&1

[haoqiqi@localhost ~]$

此時將沒有任何輸出資訊,因為他們都被輸出至list檔案中了。

讀取操作被稱為:standard input,簡稱stdin。輸出**為0,使用符號《或《表示。

對於讀取操作,簡單的理解就是:將原本由鍵盤輸入的資料,改為由檔案內容來取代。

下面首先使用cat指令建立檔案,並利用鍵盤輸入內容。

[haoqiqi@localhost ~]$ cat

>new_cat_file

these are wrinting by my keyboard!

#按下ctrl+d退出輸入

然後執行以下語句,得到檔案中的內容:

[haoqiqi@localhost ~]$ cat new_cat_file

these are wrinting by my keyboard!

cat指令後面加上了">",因此new_cat_file檔案會被主動建立,其內容是剛才打上去的。

現在,使用stdin取代鍵盤的輸入向檔案中寫入內容。

[haoqiqi@localhost ~]$ cat

>new_cat_file <~/.bashrc

[haoqiqi@localhost ~]$ ll new_cat_file ~/.bashrc

-rw-r--r--. 1 haoqiqi haoqiqi 231 8月 8 20:06 /home/haoqiqi/.bashrc

-rw-rw-r--. 1 haoqiqi haoqiqi 231 10月 10 19:41 new_cat_file

[haoqiqi@localhost ~]$ cat new_cat_file

# .bashrc

# source global definitions

if[ -f /etc/bashrc ]

;then

. /etc/bashrc

fi# uncomment the following line if you don't like systemctl's auto-paging feature:

# export systemd_pager=

# user specific aliases and functions

#本例中,由於使用的是「>」,因此之前寫入的字元被覆蓋掉了。

指令回傳值"$?"與 「&&」、「||」

之前講過指令回傳值的概念。對於指令回傳值,若前乙個指令執行的結果為正確,則回傳$?=0。它與「&&」、「||」的關係如下表所示:

指令下達情況

說明cmd1&&cmd2

1.若cmd1執行完畢且正確($?=0),則開始執行cmd2

2.若cmd1執行完畢且錯誤($?≠0),則不執行cmd2

cmd1||cmd2

1.若cmd1執行完畢且正確($?=0),則不執行cmd2

2.若cmd1執行完畢且錯誤($?≠0),則開始執行cmd2

簡單來說,&&表示的為和的關係,||表示的是或的關係。

Linux資料流重導向

當我們使用linux的時候,每下達1個命令,通常都會有對應的資訊輸出在螢幕上,這些輸出的資料就是資料流,而linux資料流重導向,就是把這些資料輸出到不同的地方了。而資料流通常分為正確的資料跟錯誤的資料,如果我們要把正確的資料導向到我們要的檔案裡面去,可以使 覆蓋 新增 來處理。malt malt ...

BASH 資料流重導向

資料流重導向 即將本應在標準輸入輸出 std input output error output 的資料傳到別的地方去。例如將除錯資訊存入文件中,而非直接輸出到螢幕上。也可以用 tee 命令,即輸出到標準輸出,又寫入指定文件 也叫雙向導向。傳送字元如下所示 1.標準輸入 stdin 為0,使用 或 ...

Linux之資料流重導向

其實一開始繞進檔案描述符這個大坑裡去了,越挖越深,什麼系統檔案表,記憶體索引節點,vfs等等都一下子冒了出來,而我暫時還沒那麼多精力搞定所有,於是只能遮蔽底層的一些細節,暫且當作黑盒子,來日再挖。1 linux系統中,一切資源都被視為檔案,包括放在磁碟上的各種文件,甚至各種裝置。檔案是linux組織...