Linux下的代碼閱讀和尋找工具__Linux

來源:互聯網
上載者:User

1.ctags

       ctags命令配合vim編輯器可以協助程式員很方便地查看原始碼,使用方法:

       (1)在原始碼頂層目錄下執行ctags -R * 遞迴建立原始碼資訊庫;

       (2)vim -t tagname 開啟含有tagname的檔案;

       vim編輯器中

       (3):tag tagname:跳到含有tagname的檔案中;

       (4):tn  :下一個tagname;

       (5):tp :前一個tagname;

       (6):cstag tagname:列出所有tagname所在位置;

       vim編輯器中,游標移動到某變數上

       (7)ctrl+ ]:跳到該變數的定義上;

       (8)ctrl+ T:跳回原位置

2.cscope

       cscope是另一個好用的原始碼查看工具,一般說來,都是vim+ctags+cscope的組合工具,因此,下面來看看cscope的使用。

       (1)原始碼頂層目錄下執行cscope -Rbkq

       -R:遞迴建立資訊庫;

       -b:只建立交叉引用連結;

       -k:核心模式(只在瀏覽核心原始碼時使用);

       -q:開啟加速功能;

       命令列下可以使用“cscope -d”命令單獨使用cscope查看原始碼;也可以在vim編輯器中“: cscope add cscope.out”將資訊匯入vim中,然後可以使用“:cscope help”命令查看可用功能了。

3.find

       在指定路徑中遞迴搜尋檔案,支援各種條件搜尋,並可以對搜尋到的檔案執行特定操作。

       基本格式:find  [路徑] [參數] [運算式]

       常用參數:

       -user:根據檔案擁有者尋找檔案;

       -group:根據檔案所屬組尋找檔案;

-name:根據檔案名稱尋找檔案;

-perm:根據檔案許可權尋找檔案;

-size:根據檔案大小尋找檔案;

-atime n:將n*24小時內被訪問過的檔案列出來;

-ctime n:將n*24小時內被改變、新增過的檔案列舉出來;

-mtime n:將n*24小時內被修改過的檔案列舉出來;

-newer file:將比file還要新的檔案列舉出來;

-gid n:尋找組ID為n的檔案;

-group name:尋找群組名稱為name的檔案;

-uid n:尋找擁有者ID為n的檔案;

-name file:尋找檔案名稱為file的檔案

-type [bcdpls]:尋找特定類型的檔案(塊裝置,字元裝置,目錄,管道、連結和通訊端)

       此外find還支援進階應用程式,比如,可以使用邏輯運算子來編寫複雜條件,“-o”表示或運算,“-not”表示非運算,可以對找到的檔案進行操作,格式如下:

       find [路徑]  [參數] [運算式]  -exec  指令 {} \;

l  {}代表find找到的檔案

l  \ 禁止轉意

l  ;表示本行指令結束

4.grep

       使用grep命令:

grep -rni --include ‘*.[c|h]’ ‘regex’ ./

即在目前的目錄下所有的.c和.h檔案中尋找與regex匹配的項,其中:

-r:表示遞迴地尋找目前的目錄及其子目錄;

-n:顯示行號;

-i:忽略大小寫;

可以根據情況進行靈活調整和組合。

5.Regex

       在編寫處理字串的程式或網頁時,經常會有尋找符合某些複雜規則的字串的需要。Regex就是描述這些規則的工具。

參考:

(1)\b:匹配單詞的開頭或結尾,如“\bhi\b”匹配單詞“hi”;

(2).:匹配除分行符號外的任一字元;

(3)*:該符號前面的字元可以重複若干次,如“.*”代表任意數量的不含分行符號的字元;

(4)\d:匹配一個數字,\d{num}匹配num次數字;

(5)\s:匹配任意空白符,包括空格,定位字元(Tab)和分行符號等;

(6)\w:匹配字母或數字或底線或漢字等;

(7)+:該符號前面的字元匹配一次或若干次;

(8)^:匹配字串的開始;

(9)$:匹配字串的結束;

(10)?:該符號前面的字元匹配零次或一次;

(11){n}:重複n次;

(12){n,}:重複n次或更多次;

(13){n,m}:重複n到m次;

(14)[]:匹配其中任意一個字元,如[aeiou]匹配母音字母中任意一個;[2-5]匹配2到5任一數字;

(15)|:表示分支條件,相當於“或”

(16)\W:匹配任意不是字母,數字,底線和漢字的字元;

(17)\S:匹配任意不是空白符的字元;

(18)\D:匹配任意不是數位字元;

(19)\B:匹配不是單詞開頭或結束的位置;

(20)[^x]:匹配除了x以外的任一字元,如[^aeiou]匹配除了aeiou這幾個字母以外的任一字元;

舉例:

\ba\w*\b:匹配以a開頭的單詞;

\d+:匹配1個或更多連續數字;

\b\w{6}\b:匹配剛好六個字母的單詞;

^\d{5,12}$:匹配5到12位的數字;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.