1、在 vi 中巧用感歎號命令
2、用 dd 命令轉換數據格式
3、計算一個項目中所有文件的平均行數
1、在 vi 中巧用感歎號命令
我們知道在vi 中感歎號是用來執行外部程序的手段。
例如 :!ls 就是列出當前目錄。
但是如果我們要把當前目錄的內容讀入正在編輯的文件中,怎麼辦呢?
一個笨辦法就是采用
:r file_name
來讀入文件。
我們的這個技巧,把後面的 file_name 改動一下,讓我們看看:
:r !ps
你知道了,我們把當前進程讀入了正在編輯的文件:
PID TTY TIME CMD
1966 pts/2 00:00:00 bash
2276 pts/2 00:00:00 vi
2320 pts/2 00:00:00 bash
2328 pts/2 00:00:00 ps
推而廣之,我們可以把當前內容寫到感歎號命令:
:1,$w !spell
這個操作把當前內容送到 spell 命令來檢查拼寫了。
2、用 dd 命令轉換數據格式
你大概知道 dd 命令是用來拷貝數據的。特別是用來制作啟動盤。但是 dd 也能用於數據轉換。
在 "endian" 結構的系統上,導出 Ingres 數據庫的內容時,代碼會發生奇怪的轉換,它把:“The cat in the hat”轉變成了 “hT eac tnit ehh ta”,把數據恢復過來的辦法就是采用 dd 命令:
dd if=randys_bad_data of=marcs_good_data conv=swab
最後部分 "conv=swab" 告訴 dd 采取 "swap bytes" 方式轉換。
同樣的,如果要吧 EBCDIC 格式的數據轉換為 ASCII 格式就可以采用如下命令:
dd if=ebcdic_file of=ascii_file conv=ascii
dd 的 man 幫助顯示出有不少於 10 種轉換,仔細看看,下次遇到同樣問題時,就可以用 dd 來幫忙了。
3、計算一個項目中所有文件的平均行數
假設我們的項目文件都是 .c 或者 .h 文件,計算那麼所有文件的行數應該采用:
# cat *.[ch] wc -l
要計算平均的話,無非就是這些行數除以文件數目:
# ls -l *.[ch] wc -l
平均數:
# echo `cat *.[ch] wc -l` / `ls -1 *.[ch] wc -l` bc