linux中的馬里奧之重定向與管道詳解

你背單詞時

阿拉斯加的鱈魚正躍出水面

你算數學時

太平洋彼岸的海鷗振翅掠過城市上空

你晚自習時

極圖中的夜空散漫了五彩斑斕

但是少年你別著急

在你為自己未來踏踏實實地努力時

那些你感覺從來不會看到的景色

那些你覺得終身不會遇到的人

正一步步向你走來。

         ——網易云熱評《Something Just Like This

 

還未深刻地了解Linux。知道的不多,那這次我們淺談一下Linux中的I/O重定向和管道問題(讓我不禁想到了馬里奧),運行環境還如上次博客:CentOS6CentOS7,工具為SecureCRT

SecureCRT是一款支持SSHSSH1SSH2)的終端仿真程序,簡單的說是Windows下登錄UNIXLinux服務器主機的軟件。SecureCRT支持SSH,同時支持Telnetrlogin協議。SecureCRT是一款用于連接運行包括Windows、UNIXVMS的理想工具。百科得到的,總之SecureCRT是一個偽終端,我們在這上面解決問題。

一、I/O重定向(輸入輸出重定向),首先我們了解一下Linux終端里面的輸入和輸出,輸入輸出來自/dev/fd fd是一個符號文件/鏈接文件,不是固定存儲在硬盤當中,而是隨著終端的創建產生的臨時目錄。產生對應鏈接。)

Linux給程序提供三種I/O設備,分別為:

標準輸入:Standard input STDIN

標準正確輸出:Standard output STDOUT

標準錯誤輸出:Standard error STDERR

linux中的馬里奧之重定向與管道詳解

Linux命令執行過程:

linux中的馬里奧之重定向與管道詳解

(1)我們可以把標準輸出重新定向到文件

格式:Command >/>> filename

使用 > 命令

>STDOUT重定向到文件 (默認)

2>STDERR重定向到文件

&>把所有輸出重定向到文件 (新式方法CentOS6以后)

2>&1把所有輸出重定向到文件 (老式方法CentOS6之前)

舉個栗子linux中的馬里奧之重定向與管道詳解

眾所周知,存在/etc/app,不存在/dev/app,則:

linux中的馬里奧之重定向與管道詳解

此外使用 > 文件內容會被覆蓋,為了防止誤操作可以使用命令set -C:禁止將內容覆蓋已有文件,但可以追加,使用后想要偶爾覆蓋文件,可以使用 >|file 來強制覆蓋。相反set+C可以允許覆 

linux中的馬里奧之重定向與管道詳解

(2)使用 >> 命令重定向

  一言不合就上圖

linux中的馬里奧之重定向與管道詳解

標準正確輸出和錯誤輸出還可以各自定向至不同位置,方便信息的查看。

Command > /path/to/file.out 2> /path/to/error.out

linux中的馬里奧之重定向與管道詳解

():合并多個輸出到目的文件

linux中的馬里奧之重定向與管道詳解

二、 使用 < 來重定向標準輸入

格式:Command < filename

某些命令能夠接受從文件中導入的STDIN

tr ‘a-z’ ‘A-Z’ < filename

該命令會把輸入文件中的小寫字符都轉換成寫字符

tr  -d abc < filename

該命令會刪除輸入文件中的所有abc中任意字符

linux中的馬里奧之重定向與管道詳解

當然,還可以使用文件來代替鍵盤的輸入

cat > filea < fileb

linux中的馬里奧之重定向與管道詳解

除了文本文件,其余也可以比如執行文件

linux中的馬里奧之重定向與管道詳解

把多行發送給STDIN

使用“<<終止詞”命令從鍵盤把多行重導向給STDIN,多數使用EOFEND

輸入時直到 終止詞 位置的所有文本都發送給STDIN,文本有時被稱 為就地文本(heretext)。

linux中的馬里奧之重定向與管道詳解

接下來重點來了,在實際工作中我們常用管道來轉發各種標準輸出

管道(Pipe

管道(使用符號“| ”表示)用來連接命令

Command1 | Command2 | Command3 | …

Command1 STDOUT 發送給Command2 STDIN ,Command2STDOUT 發送Command3 STDIN

STDERR 默認是不能通過管道轉發,可利用2>&1 |& 實現

linux中的馬里奧之重定向與管道詳解

管道可以無限接續下去直到把文件處理滿意

示例:獲取root目錄所在分區的可用空間(百分比)

linux中的馬里奧之重定向與管道詳解

獲取本機的IP地址

 linux中的馬里奧之重定向與管道詳解

重定向到多個目標(tee

Command1 | tee [-a] filename | Command2

可以把Command1STDOUT保存在文件中,此外做為Command2的輸入

-a 可以追加內容

linux中的馬里奧之重定向與管道詳解

 

原創文章,作者:Mozart,如若轉載,請注明出處:http://www.www58058.com/81952

(0)
MozartMozart
上一篇 2017-07-22
下一篇 2017-07-22

相關推薦

  • Linux下常用壓縮工具總結

    gzip: 1)只能針對普通文件進行壓縮,對文件夾、符號鏈接無效。 2)如果想對多個文件一起壓縮并打包,gzip是無法辦到的,需要結合tar進行 [root@mysql-master databackup]# ll 總用量 32 drwx—— 2 root root 4096&nb…

    Linux干貨 2016-12-05
  • redis-cli的一些有趣也很有用的功能

    redis-cli我們最常用的三個參數就是-h、-p、-a選項,分配用來指定連接的redis-server的host、port和登錄密碼。 通過redis-cli –help發現,redis-cli還提供了其他很多的參數和功能。 1)-x-x選項從標準輸入(stdin)讀取最后一個參數。 比如從管道中讀取輸入: echo -en “chen.qun” | r…

    Linux干貨 2015-03-16
  • 文件的查找與壓縮歸檔

    文件的查找與壓縮歸檔 locate find 壓縮與歸檔 locate 主要用途 查詢系統上預建的文件索引數據庫 locate – find files by namelocate [OPTION]… PATTERN… locate查詢文件時,會去搜索/var/lib/mlocat…

    Linux干貨 2016-08-21
  • corosync+pacemaker對mariadb實現高可用

    corosync+pacemaker對mariadb實現高可用 利用nfs共享存儲,導出一個目錄作為mariadb的數據目錄,然后利用corosync+pacemaker對mariadb進行高可用 1、實驗環境 2、實驗前的分析 利用nfs導出目錄作為mariadb的共享目錄,要確保各個mariadb節點對該目錄具有寫權限,也就是要確保nfs服務器上有一個U…

    Linux干貨 2016-11-24
  • 正則表達式與擴展正則表達式

    基本正則表達式 字符匹配:.:匹配任意單個字符[]:匹配指定范圍內的任意單個字符[^]:匹配指定范圍外的任意單個字符[-]:匹配[]中指定范圍內的任意一個字符,要寫成遞增POSIX字符類:[:digit:]:匹配任意一個數字字符[:lower:]:匹配小寫字母[:upper:]:匹配大寫字母[:alpha:]:匹配任意一個字母字符(包括大小寫字母)[:aln…

    2017-09-10
  • LAMP基于RPM包實現(httpd與php以fastcgi方式結合) 2

    概述:     承接上篇,本篇為介紹下利用rpm包,實現LAMP組合,其中httpd和php的結合方式為fastcgi,也就是php運行為獨立的服務,監聽的某個套接字上,接受請求,提供服務     包括LAMP安裝過程(http、php-fpm、mysql-server、php-…

    Linux干貨 2016-10-15
欧美性久久久久