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 11:59
下一篇 2017-07-22 14:54

相關推薦

  • Gitlab代碼管理倉庫安裝部署

    GitLab是利用 Ruby on Rails一個開源的版本管理系統,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋??梢怨芾韴F隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫。它還提供一個代碼片段收集功能可以輕松實現代碼復用,便于日后有需要的時候進行查…

    2016-07-26
  • Centos系統 本地自動安裝

    §·Centos系統光盤安裝的流程 大概的了解下Centos的光盤系統安裝流程: 1.插入光盤,出現菜單選擇界面;通常情況下我們選擇第一項: 第一項 : Install  or upgrade an existing system   2.默認進入圖形界面安裝并且進行一些必要的環境設置(安裝前的配置階段) 需要我們手工設置的項目…

    Linux干貨 2016-09-15
  • 第三周作業

    1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2.取出最后登錄到當前系統的用戶的相關信息。 […

    Linux干貨 2017-01-04
  • 內鍵命令和外部命令

    命令的基本格式 COMMAND  [OPTIONS…]  [ARGUMENTS…]        命令 (COMMAND)       OPTIONS(選項):用于啟用或關閉命令的某個或某些功能      …

    2017-05-23
  • shell腳本初步

    shell腳本編程初步 程序:由數據和指令組成, 指令:由程序文件提供 數據:可以通過IO設備、文件、管道來得到, 程序:算法+數據結構 變量:變量名+變量名指向的內存空間 變量賦值: name = value變量類型:存儲格式:字符 數值(精確數值 近似數值)   表示數據范圍  &nb…

    Linux干貨 2016-08-15
  • 第一周的學習總結

       本人是Linux 小白,0基礎。加入馬幫開始Linux之旅。由于完全不懂Linux,所以在學習的過程中,每課都要看上2遍。接下來說說我第一周所學的內容。 首先是了解到了計算機基礎知識,計算機的組成部分、CPU架構類型、其他外圍設備。 操作系統基礎知識進程管理、內存管理、網絡管理、驅動管理、安全管理等。 Linux的起源、發行版以及構…

    Linux干貨 2016-02-28
欧美性久久久久