1. 程式人生 > >Linux Shell 管道命令(pipe)的使用

Linux Shell 管道命令(pipe)的使用

command1正確輸出,作為command2的輸入 然後comand2的輸出作為,comand3的輸入 ,comand3輸出就會直接顯示在螢幕上面了。 

通過管道之後:comand1,comand2的正確輸出不顯示在螢幕上面 

注意:

1、管道命令只處理前一個命令正確輸出,不處理錯誤輸出 

2、管道命令右邊命令,必須能夠接收標準輸入流命令才行。

例項程式碼:

#可以相互轉換情況
#輸入重定向
 
[[email protected] shell]$ cat test.sh| grep -n 'echo'
5:    echo "very good!";
7:    echo "good!";
9:    echo "pass!";
11:    echo "no pass!";
#"|"管道兩邊都必須是shell命令
 
 
[
[email protected]
shell]$ grep -n 'echo' <test.sh 5: echo "very good!"; 7: echo "good!"; 9: echo "pass!"; 11: echo "no pass!"; #"重定向"符號,右邊只能是檔案(普通檔案,檔案描述符,檔案裝置) [[email protected] shell]$ mail -s 'test' [email protected] <test.sh [[email protected] shell]$ cat test.sh|mail -s 'test'
[email protected]
#以上2個也相同,將test.sh內容傳送到指定郵箱。 [[email protected] shell]$ (sed -n '1,$p'|grep -n 'echo')<test.sh 5: echo "very good!"; 7: echo "good!"; 9: echo "pass!"; 11: echo "no pass!"; #這個指令碼比較有意思了。由於前面是管道,後面需要把test.sh內容重定向到 sed ,然後sed輸出通過管道,輸入給grep.需要將前面用"()"運算子括起來。在單括號內的命令,可以把它們看作一個象一個命令樣。如果不加括號test.sh就是grep 的輸入了。 #上面一個等同於這個 [
[email protected]
shell]$ sed -n '1,$p'<test.sh | grep -n 'echo' 5: echo "very good!"; 7: echo "good!"; 9: echo "pass!"; 11: echo "no pass!"; #重定向運算子,在shell命令解析前,首先檢查的(一個命令,執行前一定檢查好它的輸入,輸出,也就是0,1,2 裝置是否準備好),所以優先順序會最高 [[email protected] shell]$ sed -n '1,10p'<test.sh | grep -n 'echo' <testsh.sh 10:echo $total; 18:echo $total; 21: echo "ok"; #哈哈,這個grep又接受管道輸入,又有testsh.sh輸入,那是不是2個都接收呢。剛才說了"<"運算子會優先,管道還沒有傳送資料前,grep綁定了testsh.sh輸入,這樣sed命令輸出就被拋棄了。這裡一定要小心使用 #輸出重定向 [[email protected] shell]$ cat test.sh>test.txt [[email protected] shell] cat test.sh|tee test.txt &>/dev/null #通過管道實現將結果存入檔案,還需要藉助命令tee,它會把管道過來標準輸入寫入檔案test.txt ,然後將標準輸入複製到標準輸出(stdout),所以重定向到/dev/null 不顯示輸出 #">"輸出重定向,往往在命令最右邊,接收左邊命令的,輸出結果,重定向到指定檔案。也可以用到命令中間。 [[email protected] shell]$ ls test.sh test1.sh testsh.sh 2>err.txt | grep 'test' test.sh testsh.sh #目錄下面有:test,testsh檔案,test1.sh不存在,因此將ls 命令錯誤輸出輸入到err.txt 正確輸出,還會通過管道傳送到grep命令。 [[email protected] shell]$ ls test.sh test1.sh testsh.sh &>err.txt | grep 'test' #這次列印結果是空,&代表正確與錯誤輸出 都輸入給err.txt,通過管道繼續往下面傳遞資料為空,所以沒有什麼顯示的 #同樣">"輸出重定向符,優先順序也是先解析,當一個命令有這個字元,它就會與左邊命令標準輸出繫結。準備好了這些,就等待命令執行輸出資料,它就開始接收

相關推薦

Linux Shell 管道命令(pipe)的使用

command1正確輸出,作為command2的輸入 然後comand2的輸出作為,comand3的輸入 ,comand3輸出就會直接顯示在螢幕上面了。  通過管道之後:comand1,comand2的正確輸出不顯示在螢幕上面  注意: 1、管道命令只處理前一個命令正確輸出,不處理錯誤輸出  2、

linux shell 管道命令(pipe)使用及shell重定向

管道命令操作符是:”|”,它僅能處理經由前面一個指令傳出的正確輸出資訊,也就是 standard output 的資訊,對於 stdandard  error 資訊沒有直接處理能力。然後,傳遞給下一個命令,作為標準的輸入 standard input. 管道命令使用說明: 先

[Linux] shell read命令 通過管道讀取檔案 [大三TJB_708]

shell read 命令除可以從標準輸入流中讀取字串給變數外,還能從特定的檔案中向變數賦值檔案中的“一行內容”。每次給變數賦值為管道內容的輸入的行內容。 1.例:read_file.sh 圖1.read_file.sh讀取檔案內容 【3】對CountNum賦初始值為1.

Linux每天學習一個命令管道命令(pipe)

之前學習命令的時候使用了管道命令,只知道如何使用,不是十分清楚其使用規則,決定學習總結一下管道的使用 什麼是管道:管道就是用 | 連線兩個命令,以前面一個命令的標準輸出作為後面命令的標準輸入,與連續

Linux中常用命令pipe

必須 強調 std 而且 ss命令 strong 目錄下的文件 文件 last 大多數linux命令處理數據後都會輸出到標準輸出,但是如果數據要經過系列列的步驟處理後,才是需要的數據個數,這種需求就需要管道來幫助完成。 管道命令使用"|"作為界定符,將界定符前的命令的執行結

Linux學習——管道命令、文字提取命令、排序命令、雙向重導向、字元轉換命令、分割命令、引數代換

目錄   管道命令 文字提取命令:cut、grep cut grep 排序命令:sort、wc、uniq sort uniq wc 雙向重導向:tee 字元轉換命令 tr col join paste expand 分割命

Linux Shell ls命令

1、簡介     ls 命令是 linux 下最常用的命令,是 list 的縮寫     2、主要功能     檢視 目錄清單     

Linux shell 操作命令 cd

1、簡介     cd 命令是 change directory 的縮寫     2、主要功能     切換當前目錄至指定的目錄     3、

Linux shell 操作命令 pwd

默認 dir 參數 pri 工作 說明 腳本 ble 完整路徑 1、簡介     pwd 命令是 Print Working Directory 的縮寫     2、主要功能  

Linux shell 操作命令 mkdir

1、簡介     mkdir 命令是 make directory 的縮寫     2、主要功能     建立指定名稱的目錄     注意:&

Linux Shell基礎命令

1.基礎命令 命 令 說 明 pwd 顯示當前目錄 passwd 修改使用者密碼 ls 列出目錄內容 cd 改變當前的工作目錄 * 匹配任意長度的任意字元 ? 匹配任意一個字元 cat 顯示輸出檔案的全部內容

Linux shell join命令詳解

Linux join命令 2012-02-09 17:49:00| 分類: SHELL | 標籤:linux join 檔案連線 |字號 訂閱 join命令 功能:“將兩個檔案裡指定欄位同樣的行連線起來”,即依照兩個檔案裡共有的某一列,將相應的行拼接成一行。 join [o

linux Shell echo命令

shell echo命令 格式命令: echo string 1.顯示普通字串: echo It is a test 或者(忽略雙引號): echo It is a test 2.顯示轉義字元(雙引號也可以省略) echo " \"It is a test\"

linux shell命令結果賦值給變數 shell assign command output to variable

1. 命令     1.1     反引號``    (也就是tab上面~鍵)            ~ a=`echo "hello world"

Linux+Shell常用命令總結

因為自己不經常使用linux的命令列工具,但是mac的終端還是經常使用的,有些命令總是要想一會或者百度一下才知道怎麼用,抽時間整理了一下常用的命令,作為筆記. 常用命令 檢視檔案操作:   ls :列出當前目錄下所有檔案和目錄   cat file:檢視檔案內容  -n:顯示行號    less file:

Linux常用管道命令

1.cut,將一行內的資料進行分解 cut -d '分隔符' -f fields cut -c 字元範圍 -f 取出第幾段的意思 ,從1開始 例:echo $PATH | cut -d ':' -f 3,5 export | cut -c 12- 2.grep 分析一行資

linux shell tar命令用法

tar命令 可以用來壓縮打包單檔案、多個檔案、單個目錄、多個目錄。 Linux打包命令_tar tar命令可以用來壓縮打包單檔案、多個檔案、單個目錄、多個目錄。 常用格式: 單個檔案壓縮打包 tar czvf my.tar.gz file1 多個檔案壓縮打包 tar czvf my.tar.gz file1

Linux管道命令的用法

一. 管道命令 管道命令操作符是:”|”,它只能處理經由前面一個指令傳出的正確輸出資訊,對錯誤資訊資訊沒有直接處理能力。然後,傳遞給下一個命令,作為標準的輸入. 管理命令的輸出說明: 【指令1】正確輸出,作為【指令2】的輸入 然後【指令2】的輸出作為【指

linux shell基本命令

1.基本unix/linux命令(1) setuid,guid 作用: suid意味著如果某個使用者對屬於自己的shell指令碼設定了這種許可權,  那麼其他使用者在執行這一指令碼時也會具有其屬主的相應許可權。  guid執行相應指令碼的使用者將具有該檔案所屬使用者組中使

Linux shell sed命令在檔案行首行尾新增字元

昨天寫一個指令碼花了一天的2/3的時間,而且大部分時間都耗在了sed命令上,今天不總結一下都對不起昨天流逝的時間啊~~~ 用sed命令在行首或行尾新增字元的命令有以下幾種: 假設處理的文字為test.file 在每行的頭新增字元,比如"HEAD",命令如下: sed '