以前にSheetというスニペットツールを利用すると大変便利と書いた。
で、障害対応で使うコマンドとかよく忘れるコマンドを大量に登録してて、毎日使ってて重宝してるんですが、スニペットが
増えると管理が破綻する問題があって、pecoやpercolを使えば解決出来そうと思ってやってみた。
仕組み
- snippets用のファイル or
sheet
のスニペットファイルをpeco/percolで絞りこんで、クリップボードに送ったりして簡単に利用できるようにする
よく使うコマンドのスニペットファイルを用意
sheetの資産をそのまま利用も出来るんですが、今回は下記のような感じでファイルを~/.snippets
で用意。私が使ってるやつから一部抜粋。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| # apache
tail -n 5000 /usr/local/apache2/logs/access_log | awk '{print $1}' | sort | uniq -c | sort -gr | head -n 4
tail -n 5000 /usr/local/apache2/logs/access_log | awk '{print $2}' | sort | uniq -c | sort -gr | head -n 4
tail -n 5000 /usr/local/apache2/logs/access_log | awk '{print $12}' | sort | uniq -c | sort -gr | head -n 4
tail -n 5000 /usr/local/apache2/logs/access_log | awk '{print $13}' | sort | uniq -c | sort -gr | head -n 4
# search
netstat -ltapn | grep ESTABLISHED | more
netstat -ltan | grep ":80 " | awk '{print $5}' | awk -F : '{print $4}' | sort | uniq -c | sort -nr | head
lsof -i:80
# dstat
dstat -Tclmdrn
dstat -Tclm
dstat -Tclr
dstat -Tclnd
dstat -Tcldr
dstat --top-cpu --top-cputime
dstat --top-io --top-bio
dstat --top-io-adv --top-bio-adv
# openssl
openssl x509 -noout -modulus -in *.crt | openssl md5
openssl rsa -noout -modulus -in *.key | openssl md5
openssl req -noout -modulus -in *.csr | openssl md5
# find
find ./ -daystart -ctime +2
find ./ -daystart -ctime -2
# date
date +%Y%m%d
|
peco/percol経由で利用出来るようにする
下記のようなのを、.zshrc
に記載するか、peco-snippets.zsh
とかでファイルを作成してsource
して読み込む
1
2
3
4
5
6
7
8
| function peco-snippets() {
local SNIPPETS=$(grep -v "^#" ~/.snippets | peco --query "$LBUFFER" | pbcopy)
zle clear-screen
}
zle -N peco-snippets
bindkey '^x^s' peco-snippets
|
snippetsファイルを用意せずに、sheetの資産を生かすなら、下記みたいな感じ。
1
2
3
4
5
6
7
8
| function peco-snippets() {
local SNIPPETS=$(cat ~/.sheets/* | peco --query "$LBUFFER" | pbcopy)
zle clear-screen
}
zle -N peco-snippets
bindkey '^x^s' peco-snippets
|
で上の例だとCtrl+x
, Ctrl+s
でスニペットの一覧が出てくるのでpecoやpercolで絞ると
pbcopy
に渡されて、クリップボードに格納される。
Linux上とかでクリップボード使わずに、そのまま利用したい場合は下記みたいな感じ
1
2
3
4
5
6
7
8
| function peco-snippets() {
BUFFER=$(grep -v "^#" ~/.snippets | peco --query "$LBUFFER")
zle clear-screen
}
zle -N peco-snippets
bindkey '^x^s' peco-snippets
|
実際に動かして見るとこんな感じ
便利になった!
私がUNIXという考え方にどっぶり浸かっているので、pecoやpercolのパイプで渡して処理させるってのは感覚的に分かりやすくて大変扱いやすい。