coreutils-4.5.1 expr.c 源碼閱讀

在linux下試試五筆是否好用。感覺打字也還很快的。
很久沒有上csdn了,最近沒有看源碼了,回顧自己,感覺還是寫代碼太少,應該多寫,多讀。想來想去,感覺還是要看coreutils的代碼,因爲這些代碼都簡單,那些操作系統,編譯器的代碼量太大了,就算sed,awk,ruby早版本的代碼量都太大,自己功力不夠,所以還是回到這些小的代碼。
這幾天,先學《unix編程環境》那人的做法,先把按程序行數排序的程序腳本化。
echo "list *.c | xargs wc -l | sort -n | more" > listc
再在listc中添加一行:
#!/bin/sh
然後加可執行權限
chmod +x listc
再把這個程序挪到bin下。
sudo mv listc /usr/bin/
以後,當想到按行數查時,就
./listc
這是一個技巧。以前懶得做,現在發覺還是要向牛人學習。

這幾天,打造了站立式辦公環境,站累了就坐,所以選了一個70Cm高的板凳放在屁股後,站累了就坐下。

把代碼先瀏覽,今天重點分析了expr.c。這個程序也較長,後來,發現先看下用法:
./expr --help
其實,也可以把expr看成一個小型的計算機器,本來是要有語法樹的,但作者省掉了。弄出
eval
eval1
eval2
eval3
eval4
等一些子程序,開始不知用途,後來才曉得其實現了操作符的優先級。連滾帶pa的往下看,用一上午,基本讀完。
接着又看sort.c,這個程序我想先知道他用的是什麼排序方法,可看來看去,我發現我學會的是內部排序,而作者可能用到了外部排序方法,而《數據結構》中外部排序方法,沒看懂。
接着看tr.c,同樣,看不懂。
看tail.c,同樣,看不懂。
發現還是要看1000行內的代碼,量少些,基本也好看一些。
打開fmt.c,同樣看不懂,首先這個命令都不會使用,先要學會使用,學會使用命令後,再有針對性的去讀代碼,這是較快的。
網上找代碼分析,找不到coreutils相關的。我還是沉下心來讀代碼吧。
好在,現在可以自己在src中修改代碼,修改完後
sudo make
再執行本地文件,能看到修改後的效果,真是很爽。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章