Linux 命令和工具學習筆記

來源:互聯網
上載者:User

       掌握一些 Linux 命令列及標準工具 + 生產力, 可以大大加強日常任務的處理效率,作為開發的有力輔佐。這篇文章將專註於有用的命令及組合, 記錄我在日常生活與工作中遇到的問題及解法。 

        1.   Linux 強力工具:

              find :   提供 N 多搜尋選項, 在目錄結構中尋找滿足各種條件的檔案集合;

              grep :  依靠強大的Regex,  在給定檔案集合中搜尋匹配模式的文本字串;

              sed :   同樣依靠強大的Regex及編輯命令,執行文本尋找/替換

              awk :   特別適合於記錄檔案的資料處理。

              sort:  :  提供了很多選項對記錄型檔案和非記錄型檔案的排序

              man :  詳細的可讀性良好的協助資訊 ,  --help ,   info 

        2.   Linux 常用命令及Shell 重要元素:

              |, >, <, >> ,  &&,   /dev/null  ,   

              echo, cat, ls, head, tail , wc, cut, join, printf, tr , uniq, tee , 

              cd, cp, mv, rm, mkdir, locate, which, whereis , who,  chmod,  touch, file,  xargs ,  df , md5sum , 

              read, set, test, . ,  sh ,   type,   export , env,  unset, readonly ,  shift , getopts ,  exit, exec,  eval , 

              fc, fg, trap, kill, jobs, ps, pwd, /proc/pid, crontab, at, sleep, top, 

              $HOME , $ENV, $IFS, $PWD, $PS1, $PS2, $((EXPR)),  $#, $@, $1-$9, ${10-...}, $* ,  $?, $$, [ ], &n, ${cmd-replacement}, /dev/null, /dev/stty

              ${varname:-word}, ${varname:=word}, ${var#pattern} , ${var##pattern}, ${var%pattern}, ${var%%pattern} ,  

              for var in $@  do ... done  ;       case $var in patt1-N)  dosome ;;  esac ;     

              if cond then statement elif cond2 then statement2 ...  else statement3 fi;      

        3.   命令組合: 

        (1)  sed -i 's/@Override//g' $(find . -name '*.java')

               find . -name '*.java' | xargs sed -i  's/@Override//g' 

        此命令用於將目前的目錄及其子目錄下的所有 .java 檔案中的 @Override 註解去掉。 $(find . -name '*.java') 使用了命令替換功能, Shell 會將該命令執行得到的結果作為 sed 的輸入參數。 sed 是文本替換的重要工具, -i 是就地置換,直接在被編輯檔案中置換,如果沒有的話是不會修改原檔案的,只會將修改輸出到標準螢幕上。  's/oldtextpatt/newtext/g' 稱為 sed 命令的編輯命令, 可以執行全域替換, 將所有匹配 oldtextpatt
的文本替換為 newtext . 還可以將多條編輯命令寫在檔案裡,比如 pat_file , 然後用 -f pat_file 來調用。 

        由於命令列的長度有限, 而 find 找到的檔案都將作為命令列參數,有可能超出限制, 因此, 更好的解決方案是使用 xargs , 它讀取管道輸入並轉化為緊隨其後的命令的參數, 從而不擔心受到命令列字元長度限制。 

       擴充: *.java 是檔案匹配形式, 可以換成 *.c , *.h , *.{c,java,h,deb,tar.{gz,bz2},js,php,html}(注意,中間不能有空格) 等; 

       重要工具: sed , find ,  

       重要概念: Regex。 用來描述文本的模式,最重要最強大的 Unix 工具均建立其基礎上 , find, sed, awk , grep 等。比如 a* 用來描述零個或多個a ; [1-9]*[0-9]+ 可以匹配任何整數。 推薦 《Regex必知必會》, 薄薄的100多頁, 相當好的正則入門書籍。

       (2)      while  IFS=: read   var1 var2 ... varN  do ... done   < inputfile  ;   

                   cmd  |   while IFS=: read var1var2 ... varN  do  ....   done

                 將輸入檔案或管道輸出的每一行資料用 IFS 分割成多個欄位然後賦值給 var1, var2, ..., varN 進行某種處理,直到輸入檔案或管道輸出的所有行都讀完為止。

       

      (3)      find . -name '*.java' | xargs awk ' $0 ~ /vm_monitor/ { printf "%s : Line %s :\n%s \n" , FILENAME, FNR, $0 } ' | sed 's/^[[:space:]]\{1,\}/ /'

             在目前的目錄及子目錄下的所有 .java 檔案中尋找匹配模式 vm_monitor 的字串,顯示檔案名稱,行號及匹配的行內容。 

            

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.