重定向,管道及檔案查詢

2021-09-12 10:34:27 字數 2567 閱讀 7323

i/o 重定向:

什麼是重定向:先了解幾個概念:標準輸入(即從鍵盤輸入),標準輸出(即從顯示屏輸出),標準錯誤(就是錯誤資訊error,也是標準輸出到顯示屏上)

那麼重定向呢? 其實就是更改它的標準輸入輸出錯誤模式,比如說標準輸出到檔案中,就把本該在顯示屏上的東西,新增到乙個檔案中,檔案的內容就是本在顯示屏上的東西。

(數字表示:0表示標準輸入,1表示標準輸出,2表示標準錯誤)

輸出重定向:

> : 覆蓋 >> : 追加

輸出正確內容: > / >> 等價於 1> / 1>>

輸出錯誤內容: 2> / 2 >>

正確和錯誤的內容都輸出到相同位置: &> (混合輸出) , 2>&1

區別:

輸出到空裝置: > /dev/null (/dev/null 檔案相當於乙個無底洞,就相當於丟棄)

輸出重定向:

< 等價於 0<

組合使用:

eg: cat > test.txt 管道: |

管道就是把乙個程序的標準輸出作為乙個程序的標準輸入

eg: ps -ef | grep httpd #選擇httpd 的程序

匿名管道和命名管道:

咱們就簡單理解就行,普通的管道一般都是匿名管道,他會隨著程序的結束而結束,是乙個血緣的程序通訊,乙個半雙工通訊方式等

比如 ps -ef | grep httpd 這個例子,ps -ef 就相當於父程序, grep httpd 就相當於子程序,他就只能從父程序到子程序

命令管道(fifo)

fifo不同於管道之處在於它提供乙個路徑名與之關聯,以fifo的檔案形式儲存於檔案系統中。命名管道是乙個裝置檔案(就是上篇文章中講到的管道檔案,可以使用ll 命令來檢視),因此,即使程序與建立fifo的程序不存在親緣關係,也是半雙工通訊,只要可以訪問該路徑,就能夠通過fifo相互通訊。值得注意的是,fifo(first input first output)總是按照先進先出的原則工作,第乙個被寫入的資料將首先從管道中讀出

如何建立命名管道?

在linux系統下,命名管道可由兩種方式建立(假設建立乙個名為「fifoexample」的有名管道):

( 1)mkfifo("fifoexample","rw");

( 2)mknod fifoexample p

mkfifo是乙個函式,mknod是乙個系統呼叫

tee 管道:

就直接上圖了

tee命令就像管道的t接頭。將stdin的資料同時傳送到兩個目的地。乙個是stdout,乙個是指定 的檔名

檔案查詢:which, locate,find(重要)

which:

查詢可執行檔案的路徑

什麼意思呢?簡單理解就是which之能查詢命令的路徑

locate:

相當於find -name ,但是比find 的速度快,因為locate是從資料庫中直接查詢的,而find是從通過遍歷磁碟來查詢

whereis:

引數說明:

-b : 只找二進位制檔案

-m: 只找在說明檔案manual路徑下的檔案

-s : 只找source原始檔

-u : 沒有說明文件的檔案

whereis 也是直接從資料庫中查詢,速度也是很快的

find (重要的乙個)

用法: find 路徑 引數

eg: find / -name test.txt

(從 / 開始查詢test.txt的檔案)

時間查詢引數:

-atime n :將n*24小時記憶體取過的的檔案列出來

-ctime n :將n*24小時內改變、新增的檔案或者目錄列出來

-mtime n :將n*24小時內修改過的檔案或者目錄列出來

-newer file :把比file還要新的檔案列出來

與使用者或組名有關引數:

-gid n       :尋找群組id為n的檔案

-group name  :尋找群組名稱為name的檔案

-uid n       :尋找擁有者id為n的檔案

-user name   :尋找使用者者名稱為name的檔案

-nouser  :尋找檔案的擁有者不存在 /etc/passwd 的人!

-nogroup  :尋找檔案的擁有群組不存在於 /etc/group 的檔案!

-name :按照名字查詢

-size: 按照大小查詢

-exec

1.引數是乙個乙個傳遞的,傳遞乙個引數執行一次rm

2.檔名有空格等特殊字元也能處理

-xargs

1.一次將引數傳給命令,可以使用-n控制引數個數

2.處理特殊檔名需要採用如下方式:

find . -name "*.txt" print0 |xargs -0 rm {}

Linux管道及重定向

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

管道及I O重定向

管道符 前乙個命令的輸出,作為後乙個命令的輸入 命令1 命令2 命令3 輸出 hello,world.並將小寫轉換為大寫 root localhost echo hello,world.tr a z a z hello,world.顯示passwd檔案中按 分割的每行第乙個部分並排序並將小寫轉換為大...

重定向 管道

1 輸入輸出重定向可分為 標準輸入 由鍵盤輸入 標準輸出 由監視器輸出 錯誤輸出 與標準輸出相同,但是他們是具有各自的資料流,各佔乙個資料流 通常用識別符號對位 標準輸入用0,標準輸出用1,錯誤輸出用2。重定向 顧名思義就是將標準的輸入和輸出位置重新定向 覆蓋重定向 每一次的輸出都要覆蓋原始檔中的內...