linux中的strings命令

2021-08-25 05:49:06 字數 1575 閱讀 2798

以前我用strings命令的頻率不高, 現在越用越順手, 而且已經是離不開strings命令了。雖然以前說過strings命令, 但今天還是要說。 主要是兩大用途, 下面來說明一下:

一. 確認**編是否譯到庫中去了?

在大型的開發中, 我們經常修改一兩行**, 有時候自己修改的**並沒有編到庫中去(有可能是**沒有同步到linux上編譯, 也有可能是有編譯錯誤導致生成庫失敗, 也有肯能是該make clean的地方沒有make clean或rm庫, 還有可能是其他雜七雜八的原因), 這樣會經常誤導自己的判斷, 折騰大半天。

還有, 比如你**提交了, 結果你的同事更新(svn up)了**(也就是獲取了你的**), 但編譯的時候由於各種原因沒有把你的**編譯進去, 然後他提交了這個庫, 然後呢, 自然就出了問題, 老闆找到你的頭上。 此時, 可以用strings命令快速判斷提交的庫中是否包含你自己的**。 我用過無數次, 屢試不爽。 說了這麼多, 下面來實戰一下:

[taoge@localhost test]$ ls

test.c

[taoge@localhost test]$ cat test.c

#include int main()

[taoge@localhost test]$ gcc test.c

[taoge@localhost test]$ ls

a.out test.c

[taoge@localhost test]$ strings a.out | grep ***

***, %d, %d, %d

[taoge@localhost test]$

如上, 一般都是在自己寫的**中, 加點日誌(字串), 相當於打點tag, 然後用strings命令進行判斷。 如果是不需要加日誌, 那怎麼辦呢? 我經常是對檔案中的之前日誌中的字串做簡要修改, 比如加上***, 實際上也相當於打下自己的tag印記。

二. 對於新手來說, 需要知道新生成的**進入了哪個庫, 然後才好找庫啊!

這個需求也很合理, 不能說**編譯到哪個庫中去了, 你還不知道。 用strings命令吧, 如下:

[taoge@localhost test]$ find -name "*" | xargs strings -f | grep ***

./test.c: printf("***, %d, %d, %d\n", a, b, c);

./a.out: ***, %d, %d, %d

[taoge@localhost test]$

ok,  一目了然, 知道***編譯到**去了。要補充一下, find命令中的雙引號不能少, 否則:

[taoge@localhost test]$ find -name * 

find: paths must precede expression: test.c

usage: find [-h] [-l] [-p] [-olevel] [-d help|tree|search|stat|rates|opt|exec] [path...] [expression]

[taoge@localhost test]$

golang中strings包用法

1.strings.split split 以 sep 為分隔符,將 s 切分成多個子切片,結果中不包含 sep 本身 如果 sep 為空,則將 s 切分成 unicode 字元列表。如果 s 中沒有 sep 子串,則將整個 s 作為 string 的第乙個元素返回 func split s,sep...

linux中的apachectl是什麼命令

apachectl是apache http伺服器的前端程式。其設計意圖是幫助管理員控制apachehttpd後台守護程序的功能。apachectl指令碼有兩種操作模式。首先,作為簡單的httpd的前端程式,設定所有必要的環境變數,然後啟動httpd,並傳遞所有的命令列引數。其次,作為sysv初始化指...

Linux下shell指令碼中的read命令

read命令作用 從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給shell變數 引數 a 後跟乙個變數,該變數會被認為是個陣列,然後給其賦值,預設是以空格為分割符。d 後面跟乙個標誌符,其實只有其後的第乙個字元有用,作為結束的標誌,會舉例說 明。p 後面跟提示資訊,即在輸入前列印提示資訊。e ...