linux pipe read

linux 用管線可以讓指令互相搭配完成很多複雜的工作,只是我不太會用。最常用的是

$ cat /var/log/httpd/access_log |less 
$ rpm -qa|grep kernel

雖然可以直接 less 但是我還是比較習慣先 cat 出來,因為我覺得 cat 的工作是印字 less 是幫我可以翻頁。

$ less /var/log/httpd/access_log 

如果有些指令是會不停的印出字來,像是 ping 一樣,這樣要怎麼用管線來跟他的每一次更新互動呢?其實原始的想法是我要怎麼取到每次 ping 的時間,他就一直更新阿~或者說要怎麼把他的結果轉存做處理,其實有很多程式是寫成這種樣子的~所以找到這個方法:

$ ping google.com | while read pong; do echo "$(date): $pong"; done

管線丟給一直跑迴圈的 read 他會幫忙一直讀出每次的內容,然後我們就可以在這裡動手腳了。另外一個例子,我自己亂寫的,只是 pidstat 跟 iostat 都有類似的特性可以以幾秒為單位輸出

$ iostat -hmc 1|while read pong;do echo $pong|tr -d "\n";done

vim 學習筆記

最近突然很想學好 vim~開一篇文章紀錄一下雜亂的學習過程好哩

$ vimtutor
可以進入教學模式,學習一些編輯指令

Pane:切換 Pane = ^w + 上下左右

方向鍵:

為了不讓手離開主鍵盤區,手要放在標準的打字位置(右手食指在 j),透過右手來按上下左右。
左h 下j 上k 右l

移動

f[x] 移動到同一行下一個 x 用 ; 重複再找 F[x] 往前

escape:
切換回編輯模式的時候要按 esc 來跳脫,實在是離很遠,其實可以左右手合體按 Ctrl+[ 來跳脫。

離開:
存檔離開 ZZ = :wq
不存檔離開 ZQ  = :q!

縮排

先用 ^v 進入區塊模式選擇要縮排的範圍

自動縮排 ==
縮 >>
減 <<
縮三行 3>>
減三行 3>>
縮區塊 >i{
減區塊 <i{

搭配 set shiftwidth=2

圖例

Plugin
  • NERDTree:檔案列表樹狀結構
  • Vundle : 套件管理工具,安裝
  • powerline : https://powerline.readthedocs.org/en/latest/overview.html#installation
bash : 
 ^s : lock
 ^q : leave lock
 ^r : search history

程式碼搜尋工具

原本都用 grep 來搜尋程式碼片段,但偶然之中發現 tj 有用 node 寫一個工具,說是 “ack”-inspired grep-ish search utility written with nodejs.

才認識這個軟體 ack !,對程式碼搜尋更親和,號稱 better then grep 且也可以透過 tj 寫的這個版本自己打造自己想要的功能,因為他甚至不到一百行就將最重要的功能展現出來了,要修改何其容易呢~

該軟體畫面大致如下,可以將欲搜尋的片段突顯,且能列出附近的內容。


$ ack -i -ignore-dir=HTML -C 3 test # ack example , ignore case , ignore dir , Print 3 lines (default 2) of output context