linux重定向 管道

2022-09-10 19:27:13 字數 2635 閱讀 3176

1、這條命令是什麼意思?cat file1 file2 | grep "name" | tee file3 file4 file5 | wc -l

該命令表示 將 file1 file2 中的包含 name 的行重定向輸出。使用 tee 命令表示 將該輸出有兩個去向。乙個是定向到檔案 file3,file4,flie5.(三個檔案內容相同),另乙個方向是將輸出作為 命令 wc -l 的標準輸入,此條命令的標準輸出是顯示器。    它相當於下面幾條命令的組合:

1、cat file1 file2 >temp1 temp2

2、grep "name" temp1 temp2 >te***

3、cat te*** > file3 file4 file5

4、wc -l te***

2、寫一條命令將檔案 file1 複製到檔案 file.bak,用 mail 命令將排好序的 file1 檔案傳送到 [email protected] ,如果出錯,將錯誤資訊定向到 file1.error

cat file1 | tee file1.bak | sort | mail [email protected] > file1.error

3、什麼是標準檔案?

linux 系統中為每個命令都要開啟三個檔案,標準輸入、標準輸出、標準出錯輸出。(stdin、stdout、stderr)。

4、什麼是 linux的檔案描述符?標準檔案的檔案描述符是什麼?怎麼利用檔案描述符來進行重定向?

linux 的特殊機制。

cat file1 執行這條命令時,系統新建乙個程序。該程序會建立乙個檔案描述符表。表裡包含著所需要的檔案描述符。接著讀入 cat,為這個命令分配三個檔案。每個檔案都有自己的檔案描述符,為 0、1、2。接著是 file1,系統為它分配的檔案描述符是 4。通過這第四個檔案描述符,關聯到系統的檔案表-->系統的 inode 表-->(檔案的各種資訊)讀取 它在磁碟中的位置-->讀入檔案

所以,標準檔案的檔案描述符分別是 0、1、2。重定向命令為:cat 0file_out 2>file.err。表示從檔案file_in 讀入,輸出到file_out,出錯的話輸出到 file_err。

5、什麼是管道?

管道是 程序間通訊的一種機制,直接在記憶體中操作。cat file1 | file2 表示將 file1 作為輸入,同時將輸出定向到 file2 檔案。省去了中間步驟:cat file1 >temp ; cat temp>file2。

6、tee 是什麼命令?

tee 可以將管道中的輸出進行分流。參見第一條。

7、下面兩條命令有什麼區別?

1: cat 1>letter 2>s**e 0letter 2>s**e

命令 1 表示 標準輸入到 letter 出錯輸入到 s**e memo作為標準輸入。這條語句是錯誤的。因為要將標準輸入放在最左邊

8、    cat 1>letter 0&1 裡面的 "2>&1" 是什麼意思?

表示將 2 作為 1 的備份,使 錯誤輸出也輸出到 標準輸出。

例:cat file1 > file1.bak 2>&1 ,表示如果有錯誤的話,也會輸出到 1 上,即輸出到 file1.bak裡面。

9、考慮下面的 bourne shell 命令

(1) cat memo letter 2>communication 1>&2

(2) cat memo letter 1>&2 2>communication

在下面的情況中,輸出和錯誤資訊分別送到何處?

(1) 兩個檔案 ( memo和 letter) 在當前目錄下都存在。

(2) 兩個檔案中的乙個在當前目錄下不存在。

分析:在第一種條件下,第一條命令:兩個檔案的內容會全部輸入到 檔案 communication 裡面。它相當於:

cat memo letter > temp

cat temp 2>communication

cat temp >temp2

cat temp2>communication

也就是有兩個錯誤輸出。先後順序不同而已。

在第一種條件下,第二條命令:首先在控制台輸出兩個檔案的內容。標準輸入成了標準出錯的乙個備份,先在控制台輸出。接著標準出錯輸出到 檔案 communication 裡面。相當於下面幾條命令的組合:

cat memo letter > temp1

cat temp1 > 2(stderr)

cat 2

cat 2>communication 將出錯檔案再次定向到 communication

在第二種條件下,第一條命令:首先將標準出錯輸入到 communication ,然後將 標準輸出 作為 標準出錯輸出的備份,再次輸出 communication裡面。因為前面已經定義了標準錯誤的輸出目的地。

在第二種條件下,第二條命令:先將「標準輸出」作為標準出錯的備份並輸出。因為此時錯誤輸出並未指定目的地。先輸出「標準輸出」。接著,再次定向錯誤輸出到檔案 communication。所以應該顯示的是 :控制台 顯示乙個檔案的內容,檔案 communication 顯示出錯資訊。

第二種條件還要分兩種:memo存在而 letter不存在;memo 不存在而 letter 存在。大家自己分析吧!

10、通過使用輸出重定向,將問候資訊「hello friends」送到朋友的終端上?

11、怎麼樣顯示出第乙個登入系統的使用者的名字?

12、用一條命令顯示當前目錄下的內容,每行5個檔案。

Linux管道及重定向

這是看itercast的學習筆記 命令列shell的資料流有以下定義 名稱說明 編號預設 stdin 標準輸入0鍵盤 stdout 標準輸出1終端 stderr 標準錯誤2終端 命令通過stdin接收資料,通過stdout輸出結果或者通過stderr輸出錯誤 通過管道和重定向我們可以控制資料流 分類...

linux 重定向與管道

linux中重定向表示符號有 linux中管道表示符號 先說重定向,重定向符號的指向的方向代表了資料的流向,這句話很重要!先說 與 可以看出資料流向為從左到右,命令在左邊,所以又叫重定向輸出。通常用於輸出到檔案。如cat test1.txt test2.txt,會發現,檔案test2.txt中的原有...

Linux重定向 管道符

輸出重定向 file 重新定向正確輸出到file中 會覆蓋原檔案 2 file 重新定向錯誤輸出到file中 會覆蓋原檔案 file 重新定向所有輸出到file中 會覆蓋原檔案 file 清空file 重新定向會覆蓋原檔案內容 示例 find etc name passwd file 定向正確輸出到...