重定向及tr命令詳解及其在管道中的使用簡述

一、標準輸入和輸出及其重定向

        1.標準輸入指的是來自鍵盤的輸入,通常用0來表示;標注輸出是默認輸出到當前終端窗口,用1來表示;標準錯誤輸出同樣默認輸出到當前終端窗口,用2來表示。除標準輸出之外,我們還可以通過重定向來更改默認的輸入和輸出方式。

        2.標準輸出重定向用>來表示,可以將輸出內容重定向至其他終端或者文件,若重定向至文件,則當文件存在時覆蓋并寫入,文件不存在時創建并寫入,如圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  snorlaxh  [ root@snorlaxh  snorlaxh  cat > a  cat a

        標準錯誤輸出重定向可以用2>來表示,可以將錯誤的命令或者命令中有錯誤參數的標準錯誤輸出至其他終端或者文件,若重定向至文件,則當文件存在時覆蓋并寫入,文件不存在時創建并寫入,如圖所示:

計算機生成了可選文字: |0[root@snorlaxh echol snorlaxh  2>a  [root@snorlaxh cat a  -bash: echol: command not  [root@snorlaxh cat a  -bash: echol: command not  found  found

        標準輸入重定向是指將默認來自鍵盤的輸出重定向至某個已存在的文件,用文件中的內容作為這次輸入的內容,如圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  snorlaxh  [ root@snorlaxh  snorlaxh  cat a  cat < a

        另外,還可將標準輸出和標準錯誤輸出重定向至同一終端或者文件,用&>或者2>&1來表示,如下圖所示

計算機生成了可選文字: |0[root@snorlaxh Is /a /tmp >a 2>&1  [root@snorlaxh cat a  Is: cannot access /a: No such file or directory  /tmp .  ks-script-Cnm cu  ks-script-PV6SKv  systemd-private-lc6e@b3@9@dc424fb@9eb74e233@7b66-cups . service- u6kP2f  systemd- private- 8ba17657427c4eb68dcc87d298c8a77f- cups . service- VLoodK  yum. log

        注意:以上所有重定向輸出中,>表示標準輸出重定向至文件時追加內容不覆蓋原有內容,將>替換為>>表示標準錯誤輸出重定向至文件時追加內容不覆蓋原有內容。

 

二、tr命令

        tr命令表示轉換或者刪除指定文件或輸入中的內容,將SET1中的字符轉換成SET2,如下圖所示。

計算機生成了可選文字: |0[ root@snorlaxh  ABCDEF  abcDEF  — tr  ABC  abc'

        當SET1與SET2的長度不同時,SET1長時,SET多余部分全部轉化為SET2中最后一個字符;SET2長時,多余部分忽略。如下圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  ABCDEF  abccEF  [ root@snorlaxh  ABCDEF  abcDEF  ABCD  ABC  abc'  abcd'

        -t 先將set1的內容截取為和set2相同,再進行轉化,如圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  — tr  -t  ABCDEF  abcDEF  ABCD  abc'

        -d 刪除SET1中的字符,如圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  -d  — tr  or lax  h  snorlaxh

        -s SET1中的字符重復出現時只保留一個,如圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  tr  -s  aaab

        -c 取非SET1中的字符進行轉換,如圖所示

計算機生成了可選文字: |0[root@snorlaxh tr -sc  abcdabcd  aAaA[ root@snorlaxh

三、管道

        管道用|作為分隔符,將分隔符左側命令的輸出作為分隔符右側命令的輸入來進行命令執行結果的傳遞,示例如下圖所示:

計算機生成了可選文字: |0[ root@snorlaxh  SnoR1aXh  echo snorlaxh I tr 'a-zl  'A-QI  a-q'

        示例中使用了兩次管道,作用是先將輸出字符中的小寫全部轉化為大寫再進行部分轉化。

        當管道分隔符左側命令執行錯誤時,可以通過&|或者2>&1|將其結果向右側命令傳送,示例如下圖所示:

計算機生成了可選文字: |0[root@snorlaxh echol snorlaxh tr  -baSh: echol: command noT foUnd  'a-zl  'A-ZI ltr  'A-QI  a-q'

計算機生成了可選文字: |0[ root@snorlaxh 一 ] # e c h 01 snorlaxh 2 > & 蚓 t r  -baSh : e c h 01 : command n 0T foUnd  。 a 一 z  . A 一 Z 目 t r

 

這就是今天介紹的主要內容,重定向和管道在linux的 學習中是非常重要的內容,希望大家能多多練習,真正掌握起來。

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

(0)
snorlaxhsnorlaxh
上一篇 2016-08-11
下一篇 2016-08-11

相關推薦

  • Linux系統啟動基本流程

    Linux開機流程 如下圖 00×01、BISO自檢     硬件檢查,檢查硬件完整性,之后從開機BIOS開機硬件列表選擇BOOT設備     2. 00×02、MBR引導     從bootloader446…

    2017-07-09
  • Linux基礎知識之忘記root密碼

    學習之后修改linux用戶密碼:(物理機端才能修改) ①在讀秒時按下任意鍵一下即可;       ②在下面的界面,選擇敲a鍵,進入命令行模式;       ③在下面的界面的末尾輸入 1(表示進入單用戶模式);      …

    Linux干貨 2016-07-22
  • grep的使用和正則表達式

           grep作為Linux中的文本編輯的三劍客之一,它的功能很強大,并不是虛傳,學會了grep在文本中找我們要找的的字符串總是能很輕易地找到,grep不僅僅就這一點功能,它在我們工作上也會對我們有很大的幫助。下面我來介紹一下grep的簡單的功能。 grep :文本過濾( 模式:patter…

    Linux干貨 2016-08-10
  • python寫一個通訊錄之step by step

    編寫過程:     第一步:手動代碼堆積         第二步:函數復用         第三步:數據持久化之數據保存         第四步:數據持久化之數據讀取       &nbsp…

    Linux干貨 2015-03-26
  • linux基礎命令

            轉眼已經過了一周,在南老師的悉心指導下,我學會了一些基礎的LINUX命令,下面做一下本周小結。 命令1:tty、who am i、whoami、w 作用:查看當前登錄信息            終端傳遞信息 echo hello &g…

    Linux干貨 2017-07-15
  • ftp的用戶權限配置

    文件服務: 應用層:ftp; 內核級網絡文件系統:nfs POSIX(可移植操作系統接口 Portable Operating System Interface of UNIX,縮寫為 POSIX ) API(應用程序編程接口) 跨平臺的網絡文件系統:cifs (samba)   網絡存儲: NAS:NetworkAttached Stoage,文…

    Linux干貨 2017-05-02
欧美性久久久久