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位的數字;