重定向及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 09:38
下一篇 2016-08-11 09:38

相關推薦

  • 網絡管理命令

    網絡管理

    Linux干貨 2018-01-07
  • 第二周作業

    第一、文件管理類命令     cp、mv、rm                  cp命令:copy 源文件;目標文件;     &nbsp…

    Linux干貨 2016-12-12
  • sed

    sed Stream EDitor, 行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非使用重定向存儲輸出。 Sed主要用來自動…

    Linux干貨 2017-04-26
  • python面向對象魔術方法

    python面向對象魔術方法

    Linux干貨 2017-11-20
  • 第九周:shell腳本之判斷練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i LoginUser=0 declare -i NologinUser=0 while r…

    Linux干貨 2016-11-21
欧美性久久久久