Command Line で使用しているツールまとめ vol.4


`Command Line`(コマンドライン)で使用しているツールを簡単にではありますが､まとめてみようと思います｡前回の続きです｡私が知らない便利ツールはまだまだたくさんありますので､ここに掲載されているもの以外で便利なものがあれば､ぜひ教えてください｡

[Command Line で使用しているツールまとめ vol.1](http://qiita.com/items/10a9086de309cef5e185)

[Command Line で使用しているツールまとめ vol.2](http://qiita.com/items/8fab37433f8b9606f75c)

[Command Line で使用しているツールまとめ vol.3](http://qiita.com/items/bd319bdaffb403d5e605)


この記事に貼り付けてあるリンクは､キーワードに関連する適切な場所へと誘導してくれます｡非常に有効なので､ぜひ参照してみてください｡

また､私は基本的にパソコンのことは何もわかっていないので､記事内には誤りを含む可能性があります｡よって､できる限り自分の環境を把握した上で､適時読み換えてもらえればと思います｡特に､設定ファイルの場所については気をつけてください｡また､`Git`や`Homebrew`､`MacPort`の導入説明などは省略していますので､注意が必要です｡

#Markdown
`Markdown`とは､おおよそ`Markdown記法`のことを指すことが多いように感じます｡そして､この`Markdown記法`とは､簡単には､`HTML`の省略記法のことを言います｡`HTML`は､`Zen-coding`などのツールを使用しない限り､基本的なタグを書くにも一苦労です｡そんな時は､この`Markdown`が役に立ちます｡ここでは､`Markdown`に関する役立つツールとその使い方を簡単に紹介していきたいと思います｡


##Markdown
このツールは､`HTML`で書いた文章を`Markdown`形式に変換してくれます｡ただし､デフォルトでは､改行コード`<br/>`は挿入されませんので注意が必要です｡

```
brew install markdown
```

例えば､`~/Document/test.md`というファイルがあったとして､これを`Markdown`形式に変換するには､以下のようにします｡

```
markdown ~/Document/test.md > ~/Document/test.html
```

また､改行コードを挿入したい場合は､以下のコマンドが有効です｡これは､空行を改行コードに置換するものです｡

```
sed -e "s/^$/<br\/>/g" ~/Document/test.md > ~/Document/test.html
```

##html2text
このツールは､例えば､WebサイトのURLを指定することで､当該ページを`Markdown`で書いた場合どうなるかを表示してくれます｡`Markdown`の書き方を忘れてしまった時などに便利です｡

```
brew install html2text
```

使い方は､以下のように変換したいWebページのURLを指定するだけでOKです｡

```
html2text http://mba-hack.blogspot.jp/2012/11/gimpx11.html
```


##Markdown Preview
`Markdown`を`Preview`(プレビュー)するにも様々な方法があり､そのための有料アプリも存在します｡しかしここでは､あえて無料の､しかも普通ではないやり方で`Markdown`を`Preview`してみたいと思います｡

使用するものは､[前回](http://qiita.com/items/10a9086de309cef5e185)紹介した`Editor`(エディタ)である`Sublime Text2`(以下､st2とします)です｡後､既定のインターネットブラウザも使用します｡私の場合は､`Google Chrome`ですね｡


まず､`Package Manager`をインストールしていることを前提として､ `Cmd+Shift+p`を押します｡そして､ `install`で検索してください｡ `Install Package`を実行します｡


そこで､ [Markdown Preview](https://github.com/revolunet/sublimetext-markdown-preview)をインストールします｡次に当該`Plugin`(プラグイン)に`key`(キー)を設定します｡


`Cmd+Shift+p`を押して､ `key`とでも検索しましょう｡ `Key Binding -User`を実行します｡そこで､以下を記述することで､ `Alt+m`で`Markdown Preview`が実行されるようになります｡

```
[{ "keys": ["alt+m"], "command": "markdown_preview", "args": {"target": "browser"} }]
```

ここで､`Vim`から操作を可能にしておくと後々便利です｡下の設定をした後は､`Vim`上でファイルを開いている時､`¥om`を押すと､ファイルが`st2`で開かれます｡

```~/.vimrc
" Markdownをst2で開く
:nnoremap <leader>om :silent !open -a Sublime\ Text\ 2 '%:p'<cr>:redraw!<cr>
" その他の Markdown Preview
" http://tell-k.hatenablog.com/entry/2012/02/11/015727
" http://yonchu.hatenablog.com/entry/2012/11/14/233000
```

例えば､ `~/Library/Application Support/Sublime Text 2/Packages/Markdown Preview/sample.md`を開いてためしてみましょう｡`st2`が起動した後は､先ほど設定した `Alt+m`を押します｡すると､既定の`Browser`(ブラウザ)で`Markdown Preview`が実行されます｡



#comix
ここでは､主に電子書籍を読む方法と電子書籍を集める方法を紹介します｡簡易解説にはなりますが､適時便利に設定してもらえればと思います｡

##comix
電子書籍を読むには､`comix`が便利です｡Macでは､`x11`を使用しなければならない点が残念ではありますが､それでも､`CLI`からの操作ができる点は便利だと思います｡

```
sudo port install comix
```

以下のように電子書籍(フォルダでまとめられた.jpgなどの画像ファイル集､ここでは､`~/inp/`フォルダとします)を圧縮した後､バックグラウンドで起動するのが良いかと思います｡

```
cd

zip -r out.zip inp/

comix out.zip &
```


なお､`x11`の操作方法は以下のとおりです｡また､`comix`のOption(オプション)は､`man comix`などで確認できます｡

```
C-q : 終了する

C-l : ライブラリを開く

C-b : ブックマークを開く

C-d : ブックマークに登録する(しおり)

Esc : キャンセル

w : 横幅いっぱいに表示する

h : 縦幅いっぱいに表示する

f : フルスクリーンで表示する

Fn-↓↑ : 1ページごとに移動

Fn-→← : 最後のページ､最初のページ

Space : 下スクロール

Shift-Space : 上スクロール
```


## GoogleBooksDownloader
私は､本を購入する前に`Google Books`で内容を確認したりすることがあります｡以下のツールは､`Google Books`を`.jpg`で`Download`(ダウンロード)するツールです｡

```
git clone https://github.com/bhattumang7/Google-Books-Downloader.git
 
cd Google-Books-Downloader/build/
 
java -jar GoogleBooksDownloader.jar "URL" "保存フォルダ"
```



ちなみに､`Google Books`内の検索は､以下の様な設定ファイルを書いておくと便利です｡これで､`book-search`コマンドが使用できるようになります｡

```~/.zshrc
# Google Booksの検索
 function book-search() {
 local str opt
 if [ $ != 0 ]; then
   for i in $*; do
       str="$str+$i"
         done
           str=`echo $str | sed 's/^\+//'`
             opt='search?lr=lang_ja&hl=JA&tbo=p&tbm=bks&tbs=,bkv:p&num=10'
               opt="${opt}&q=${str}"
               fi
               w3m http://www.google.co.jp/$opt
               }
```


##Google Search
`Search`(検索)が出てきたついでに一つだけ検索`Tips`(小技)を紹介してみたいと思います｡

```shell:/path/google-time

#!/bin/zsh
w3m "http://www.google.co.jp/search?num=50&hl=ja&lr=lang_ja&q=$2&tbs=qdr:$1"

```


上の`Shell Script`(シェルスクリプト)は､`google-time <期間> <検索キーワード>`として期間を指定して検索を行う方法です｡`Browser`には､`w3m`を使用します｡なお､期間は以下の様な表現になっています｡

```
y : 1年

y2 : 2年

m : 1ヶ月

m6 : 6ヶ月

w : 1週間

w3 : 3週間

h : 1時間

h24 : 24時間

d : 1日
```

ちなみに､設定ファイルに書く場合は､以下のようになります｡

```
# google 検索 期間を指定(y,w,h,m)
function google-time() {
	w3m "http://www.google.co.jp/search?num=50&hl=ja&lr=lang_ja&q=$2&tbs=qdr:${1}"
}
```


また､使用する期間が限られている場合は､以下のような設定ファイルを書いておいたほうが便利かもしれません｡

```~/.zshrc
# google 検索 1年以内
 function goy() {
 local str opt
 if [ $ != 0 ]; then
   for i in $*; do
       str="$str+$i"
         done
           str=`echo $str | sed 's/^\+//'`
             opt='search?num=50&hl=ja&lr=lang_ja'
               opt="${opt}&q=${str}"
               tbs='&tbs=qdr:y'
               fi
               w3m http://www.google.co.jp/$opt$tbs
               }
```



#zaw.zsh
先程から`zsh`が頻繁に出てきました｡ここで､前回紹介した`zaw.zsh`をさらに便利にする設定の一例を紹介していきたいと思います｡ちなみに､`zaw.zsh`とは､`zsh`に`vim`でいう`unite.vim`のようなインターフェイスを提供する拡張ツールです｡端末操作になれていない人には､分かりやすくて便利なものだと思います｡

```
cd && git clone https://github.com/zsh-users/zaw.git && echo "source ~/zaw/zaw.zsh" >> ~/.zshrc && source ~/.zshrc
```

##カスタマイズ一例
`zaw.zsh`の使い方は､基本的には､`C-g`を押した後､ `C-x;`で使用できます｡ちなみに､終了は､ `C-g`や `C-c`です｡


ここで､例えば､`History`をよく使うという場合は､専用の`key`を設定しておくと便利です｡この設定で`C-g,C-h`を押すと`zaw-history`が起動します｡

```~/zaw/zaw.zsh
bindkey '^X' zaw
bindkey '^h' zaw-history
```

なお､デフォルトで設定できる項目は以下のとおりです｡

```
# https://github.com/zsh-users/zaw
zaw-ack
zaw-applications
zaw-bookmark
zaw-git-files
zaw-history
zaw-open-file
zaw-perldoc
zaw-screens
zaw-tmux
```

##gitdir
gitリポジトリ内の移動を簡単にしたい場合は､`gitdir`を使うと便利です｡`~/zaw/sources/`に`gitdir.zsh`を作り､`zsh`を`exec $SHELL`で再起動します｡

```~/zaw/sources/gitdir.zsh
#
# zaw-src-gitdir
# http://d.hatena.ne.jp/syohex/20120624/1340550154
# zaw source for git command
#

function zaw-src-gitdir () {
    _dir=$(git rev-parse --show-cdup 2>/dev/null)
    if [ $? -eq 0 ]
    then
        candidates=( $(git ls-files ${_dir} | perl -MFile::Basename -nle \
                       '$a{dirname $_}++; END{delete $a{"."}; print for sort keys %a}') )
    fi

    actions=("zaw-src-gitdir-cd")
    act_descriptions=("change directory in git repos")
}

function zaw-src-gitdir-cd () {
    BUFFER="cd $1"
    zle accept-line
}

zaw-register-src -n gitdir zaw-src-gitdir
```

そして､`~/zaw/zaw.zsh`に以下を追記します｡これで､`C-@`を押すと､`gitdir`が発動します｡

```
bindkey '^@' zaw-gitdir
```



##補完候補をハイライトする
補完候補をハイライトするには､以下のように設定すると便利です｡

```
# tab補完に関するtips
# http://qiita.com/items/13d150c590508d518d26
autoload -U compinit
compinit
zstyle ':completion:*:default' menu select=1
```





#nicovideo-dl

作業用BGMとしてVOCALOID曲を聴く人も多いかと思いますが､時にマイリストで管理したものを`Local`(ローカル)に保存したいと気があります｡そんな時は､`nicovideo-dl`を使うと便利です｡ここでは､`nicovideo-dl`の使用例として､ニコニコ動画のマイリストを一括ダウンロードすると方法を紹介します｡ただし､ダウンロードするコンテンツは､あくまで権利者がアップロードしたものであり､かつダウンロードの許可がある場合に限定するように注意してください｡

##必要なもの
[nicovideo-dl](http://sourceforge.jp/projects/nicovideo-dl/) (python)
[nicovideo-dl patch](https://github.com/smly/archlinux-mypkg) (github)
[nicomylist-dl](http://mba-hack.blogspot.jp/2012/10/blog-post_4.html) (shell script)


##nicomylist-dl

```shell:/usr/local/bin/nicomylist-dl

#!/bin/zsh
 
mkdir -p ~/Music/mylist/ && cd ~/Music/mylist/ && touch 0.html 0.txt && rm *.html *.txt && curl -o mylist.html "$1" && sed -e 's/"watch_id":"/http:\/\/www.nicovideo.jp\/watch\//g' mylist.html > test.txt && cat test.txt | perl -pe 's/"}/\n/g' > test2.txt && cat test2.txt | perl -pe 's/,/\n/g' > test3.txt && grep "http://www.nicovideo.jp/watch/" test3.txt > url.txt && awk -v ORS=' ' '1;END{printf"\n"}' url.txt > url2.txt
 
val=`cat ~/Music/mylist/url.txt | wc -l`
 
for ((i=1;i<=val;i++))
do
    sed -e "$i!d" ~/Music/mylist/url.txt | xargs nicovideo-dl -n -t -w
done

```

##詳細な解説

```

# nicovideo-dlをダウンロードします
w3m http://sourceforge.jp/projects/nicovideo-dl/

# ダウンロードしたファイルを解凍します
tar zxvf ~/Downloads/nicovideo-dl-0.0.20120212.tar.gz

# 移動します
cd ~/Downloads/nicovideo-dl-0.0.20120212/

# nicovideo-dlのパッチを含んだフォルダを置きます 
git clone https://github.com/smly/archlinux-mypkg.git

# パッチをコピーします
cp archlinux-mypkg/nicovideo-dl/overwrite_option.patch ~/Downloads/nicovideo-dl-0.0.20120212/

# パッチを当てます
patch < overwrite_option.patch

# パスを表示します
echo $PATH

# パッチを当てたnicovideo-dlをパスの通った場所にコピーします
cp nicovideo-dl /usr/local/bin/

# シェルを再起動します
exec $SHELL

```

##補足
`nicovideo-dl`を使うときには､通常､ニコニコ動画のIDやパスワードの入力を求められます｡しかし､`-n`オプションを使えば､これらの入力を省略できます｡以下の様な`.netrc`ファイルを作って､ホームフォルダに置きます｡ただし､このようなパスワード保存はセキュリティ上重大な欠陥があるため､独自に工夫を施すことをおすすめします｡

```~/.netrc

machine         nicovideo
login           ユーザー名(メールアドレス)
password        パスワード

```

##ニコニコ動画のマイリストを一括ダウンロードする
`nicomylist-dl <マイリストURL>`

`nicomylist-dl <マイリストURL>`とすることで､`~/Music/mylist/`にファイルが保存されます｡既に同名のファイルが存在する場合やエラーが出た場合は､スキップしてダウンロードが続行されます｡

なお､ダウンロードする際は､`~/Music/mylist/`にある`HTML`と`TXT`ファイルは削除されますので注意してください｡


##シェルスクリプトを使いたくない場合
上のようなシェルスクリプトを使いたくない場合は､以下のように`~/Music/mylist/url2.txt`(参照:nicomylist-dlの3行目)を使ってもマイリストをダウンロードすることができます｡この場合､パッチを当てる必要はありません｡

```
cat url2.txt | xargs nicovideo-dl -n -t
```

##w3mのブラウジングからニコニコ動画をダウンロードする
以下の様なシェルスクリプトを作成し､`w3n URL1 URL2 URL3...`とすることで､`Q`を押し､w3mを閉じると､`nicovideo-dl`が発動します｡ダウンロードしたファイルは､`~/Music/new/`に保存されます｡

```shell:w3n

#!/bin/zsh
mkdir -p ~/Music/new/ && cd ~/Music/new/ && rm ~/.w3m/history && w3m -N $* &&
 
val=`cat ~/.w3m/history | wc -l`
 
for ((i=1;i<=val;i++))
do
    sed -e "$i!d" ~/.w3m/history | xargs nicovideo-dl -n -t -w
done

```




#Vim
`Vim`には､ノーマルモードとインサートモードというものがあります｡特に､文章を書く場合､インサートモードで日本語入力を行うことが多いかと思いますが､ノーマルモードでは､日本語入力を止めて､`IME`を`OFF`にする場合が多いかと思います｡このような事情があるため､初期設定では､インサートモードからノーマルモードに移行する際や移行した後､頻繁に `っj` や `:あ` などといったことが起こります｡よって､ここではこのような間違いを少しでも減らすべく便利な設定などを紹介していけたらと思います｡

##KeyRemap4MacBook 
[KeyRemap4MacBook](http://pqrs.org/macosx/keyremap4macbook/index.html.ja)を使用すると､Macの`Vim`で`IME`を自動OFFにする設定などを有効にすることができます｡投稿の上限がきそうなので以下より簡易解説に入ります｡


```
<?xml version="1.0"?>
<root>
  <list>
    <item>
      <name>LeaveInsMode with EISUU(Terminal)</name>
      <identifier>private.app_terminal_esc_with_eisuu</identifier>
      <only>TERMINAL</only>
      <autogen>--KeyToKey-- KeyCode::ESCAPE, KeyCode::ESCAPE, KeyCode::JIS_EISUU</autogen>
      <autogen>--KeyToKey-- KeyCode::J, VK_CONTROL, KeyCode::J, VK_CONTROL, KeyCode::JIS_EISUU</autogen>
    </item>
  </list>
</root>
```



```~/.vimrc
" C-jでノーマルモードに移行する
inoremap <silent> <C-j> <ESC>
```

##ImageUp
[ImageUp](http://software.cockscomb.info/imageup/)は､英数/かな入力か入力状態が分かりやすく表示してくれるツールです｡色々な使い方ができます｡



#Tw
`Terminal`を2重にして後ろでTweetを流すには､[tw](http://shokai.github.com/tw/)が便利です｡



```
gem install tw
```

```
while true; do date; tw @PSP_T; sleep 6; clear; done;
```

特に`bot`などを流すとニュースが流れる感覚でいいかもしれません｡

```
@RSS_hateb_Roy

@RSS_Nmatome_Roy

…etc
```


#df
HDD容量を監視するには､`df`コマンドを使います｡

```
brew install watch
```

```
watch df
```

#最後に
投稿の上限が来たので今回はこれで終了です｡今回は､電子書籍がメインのテーマになっていますが､`Nexus7`欲しいです｡本を読むには色々と便利そう｡次回は､`ophcrack`や`aircrack-ng`､`wireshark`などの使い方を紹介していきたいと考えています｡よろしくお願いします｡

##Nexus7関連のおすすめ記事
zsh,vim,w3m...etc : http://d.hatena.ne.jp/rattcv/20121005
tmux : http://d.hatena.ne.jp/rattcv/20121016
ubuntu,emacs,vnc :http://blog.livedoor.jp/arte_nut/archives/7515045.html