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。重定向 顧名思義就是將標準的輸入和輸出位置重新定向 覆蓋重定向 每一次的輸出都要覆蓋原始檔中的內...