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

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

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

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

#zsh
Shellである`zsh`を拡張する設定の数々を紹介していきたいと思います｡簡易にではありますが､もっと良い設定があれば､コメントにて補足していただければありがたいと思います｡

```sh
brew install zsh

chsh -s /usr/local/bin/zsh
```

##autojump
`autojump`は､移動を簡単にしてくれるツールです｡`autojump`を導入し､補完関数のパッケージを[$fpath](http://blog.glidenote.com/blog/2012/02/29/autojump-zsh/)以下においてやると､効果を発揮します｡また､[補完関数を自作](http://hakobe932.hatenablog.com/entry/2012/02/13/214934)することもできます｡

```sh
brew install autojump
```

##z
`autojump`よりも[z](http://project-p.jp/halt/?p=1724)のほうがいいという人もいます｡私もそう思います｡

```sh
git clone https://github.com/rupa/z.git

または

brew install z
```

そして､設定ファイルに以下を付け足します｡これで､`j`を押すと､履歴JUMPが使えます｡もし使用できない場合は､[こちら](https://github.com/sjl/z-zsh)を使用してみてください｡

```sh:~/.zshrc
_Z_CMD=j
source ~/z/z.sh
precmd() {
  _z --add "$(pwd -P)"
}
```

##auto-fu.zsh
`auto-fu.zsh`は､自動補完を簡単にしてくれるツールです｡[更新](http://d.hatena.ne.jp/hchbaw/20110830/1314717481)されてからさらに使いやすくなりました｡

```sh
git clone https://github.com/hchbaw/auto-fu.zsh.git

echo "source ~/auto-fu.zsh/auto-fu.zsh" >> ~/.zshrc
```

##canything
`zsh`で`anything.el`ライクな環境を整えるには､[canything](http://filmlang.org/soft/canything)がお勧めです｡まあ､`auto-fu.zsh`と同一作者の[zaw.zsh](http://d.hatena.ne.jp/hchbaw/20120401/1333208529)でもいいのですが｡

```sh
sudo aptitude install libncursesw5-dev

git clone https://github.com/keiji0/canything

cd canything && make

mkdir -p ~/bin && mv canything ~/bin
```

[おすすめの設定](http://arataka.github.com/2011/04/14/zaw-zsh-or-canything-with-mendeley-gisty-and-j-z.html)は`gisty`で管理しているリポジトリのワーキングディレクトリに一覧から選んで移動する設定です｡

```sh
# -*- sh -*-
zmodload zsh/parameter

function zaw-src-gisty() {
    candidates=("${(ps:\n:)$(gisty list)}")
    actions=("zaw-callback-gisty-append-to-buffer")
    act_descriptions=("append to edit buffer")
}

zaw-register-src -n gisty zaw-src-gisty

function zaw-callback-gisty-append-to-buffer() {
    local gitdir=`echo "${(j:; :)@}" | cut -d":" -f1`
    local destpath=$GISTY_DIR/$gitdir
    if [ -n "$gitdir" -a -d "$destpath" ]
    then
        LBUFFER="${BUFFER}${destpath}"
    fi
}
```

##コマンドラインスタック
`zsh`では､`コマンドラインスタック`というものを使うと利便性が向上します｡これは､簡単には､入力を一時避難しておくようなものです｡`コマンドラインスタック`の使い方は､`Esc-q`や`Esc-h`です｡また､[避難したものを表示](http://qiita.com/items/1f2c7793944b1f6cc346)しておくようにすると､更に便利です｡


```sh:~/.zshrc
show_buffer_stack() {
  POSTDISPLAY="
stack: $LBUFFER"
  zle push-line-or-edit
}
zle -N show_buffer_stack
```

##oh-my-zsh
`oh-my-zsh`は､`zsh`のカスタマイズを簡単にするようなものです｡設定ファイルの集まりといえば分かりやすいでしょうか｡有志たちが公開してくれている設定を簡単に取り込めます｡特に､[Prompt](http://d.hatena.ne.jp/mollifier/20101009/p1)の設定においては､大いに参考になると思います｡`zsh`のPromptの設定を書くのはとても面倒くさいので､[oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh)を参考に構築するのもありかなとは思っています｡

```sh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

cp -i ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
```

##zsh-git-prompt
zsh の Prompt に Git のRepository 情報を表示するには､[zsh-git-prompt](https://github.com/olivierverdier/zsh-git-prompt)がお手軽です｡ただ､私の場合は､[ククログのzshrc](http://www.clear-code.com/blog/2011/9/5.html)を参考にして書きました｡

```sh
git clone https://github.com/olivierverdier/zsh-git-prompt.git 

cd zsh-git-prompt

mkdir -p ~/.zsh/git-prompt

cp gitstatus.py ~/.zsh/git-prompt

echo "source ~/zsh-git-prompt/zshrc.sh" >> ~/.zshrc

echo "PROMPT='%B%m%~%b$(git_super_status) %#" >> ~/.zshrc
```

![](http://farm9.staticflickr.com/8026/7477577466_680fddfdb5.jpg)

#tmux
`tmux`とは､Virtual環境を構築するツールです｡`screen`とともに有名ですが､私は､`tmux`を使っています｡ここでは､`tmux`を便利にする設定の数々を紹介していきたいと思います｡

```sh
brew install tmux
```

##screen風のキーバインドを使用する

```sh
mkdir -p ~/.tmux.d

sudo cp /opt/local/share/doc/tmux/screen-keys.conf ~/.tmux.d

echo "source ~/.tmux.d/screen-keys.conf" > ~/.tmux.conf
```

##Setting File Sample
設定ファイルのサンプルは､[GitHub](https://github.com/masudaK/dotfiles/blob/master/.tmux.conf)に挙げられているものが参考になります｡設定ファイルの書き方は[こちら](https://bytebucket.org/ns9tks/tmux-ja/wiki/tmux-ja.html)です｡


```:~/.tmux.conf
#prefixキーの変更
set-option -g prefix ^_

#viのキーバイドを使用する
set-window-option -g mode-keys vi

#C-h,lでウィンドウの移動
unbind-key C-h
unbind-key C-l
bind -n C-h previous-window
bind -n C-l next-window
```

##MacのtmuxでClipboardを利用する

```sh
mkdir ~/bin && echo "PATH=$HOME/bin:$PATH" >> ~/.zshrc

git clone git://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git

cd ~/tmux-MacOSX-pasteboard

make reattach-to-user-namespace

cp reattach-to-user-namespace ~/bin

vim ~/.tmux.conf
```

以下のように書きます｡すると､Macの`tmux`で普通にClipboardを利用することができます｡

```~/.tmux.conf
#クリップボードの共有
set-option -g default-command "~/bin/reattach-to-user-namespace -l $SHELL"

#C-cでコピー
bind-key C-c run "tmux save-buffer - | ~/bin/reattach-to-user-namespace pbcopy"

#C-vで貼り付け
bind-key C-v run "~/bin/reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"
```

##tmuxのPromptに様々な情報を表示する
tmuxのPromptに様々な情報を表示するには､情報を取得する[シェルスクリプト](http://d.hatena.ne.jp/yonchu/20120414/1334422075)が必要になります｡それらを作成した後､設定ファイルに以下のように書きます｡長くなりそうなので､詳しくは､上の記事を見てください｡

```~/.tmux.conf
# ステータスライン - Right
set -g status-right '< #[fg=black,bold]#(echo $LANG)#[default] < #[fg=blue]up #(pc-running-time)#[default] < #[fg=magenta](#(loadaverage)) Mem #(used-mem)%%#[default] < #[fg=red,bold]%y/%m/%d(%a)%H:%M:%S#[default] '

# Rightの表示領域最大長
set -g status-right-length 90
```

![](http://farm9.staticflickr.com/8007/7477561360_d03b73ef12.jpg)


#weechat
`weechat`とは､IRC Clientのことです｡IRC Clientの中では､使いやすいので､お勧めです｡[Growl](http://blog.tnmt.info/2012/02/08/weechat-growl-for-windows/)との連携で更に便利になります｡

```sh
brew install weechat
```

**追記**
[120reset](http://qiita.com/users/120reset)さんからコメントをいただきました｡pluginのことも考えると､以下のようするほうがいいようです｡

```sh
brew install weechat --ruby --perl --python
```


#mutt+Gmail
mutt+GmailでCUIメール環境を構築する方法です｡これについても､簡易手順なので､それぞれにカスタマイズしていただければと思います｡

```sh
brew install mutt

brew install msmtp

mkdir -p ~/.mutt/cache/headers && mkdir ~/.mutt/cache/bodies && touch ~/.mutt/certificates

curl http://cache.gawker.com/assets/images/lifehacker/2010/06/muttrc-gmail.txt > ~/.muttrc

vim ~/.muttrc
```

以下の項目を自分のアカウントのものに書き換えます｡

![](http://farm8.staticflickr.com/7264/7472689668_77890f40ff.jpg)

#iTerm2
[iTerm2](http://www.iterm2.com/)は､MacのTerminalアプリです｡私は､Macではこれを使用しています｡

##フォントをRictyに変更する
フォントを[Ricty](http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html)に変更すると､アルファベットや数字の判別が分かりやすくなると思います｡

![](http://farm9.staticflickr.com/8020/7473178632_de89ecf996.jpg)

```sh
brew install fontforge --use-gcc

Inconsolata のインストール 

Migu 1M のインストール

git clone https://github.com/yascentur/Ricty.git

cd Ricty && sh ricty_generator.sh auto

cp -f Ricty*.ttf ~/Library/fonts
```

あとは､`iTerm2`の設定を開き､フォントを`Ricty`に変更します｡

##ディレクトリを維持する
`iTerm2`の設定にて、Profiles>General>Working_DirectoryをReuse…にしておくと､ディレクトリを維持することができます｡

![](http://farm8.staticflickr.com/7256/7472725138_f1a20c15fd.jpg)


#fu
`fu`とは､ワンライナーを簡単に投稿､共有できる[Command-Line-Fu](http://www.commandlinefu.com/commands/browse)のCLI Clientです｡[cmdline-fu](http://d.hatena.ne.jp/rx7/20110117/p1)のほうがお勧めですが､私は､`fu`を使っています｡

```sh
git clone git://github.com/samirahmed/fu.git

cd fu/

sudo make install
```

##fuの使い方

```sh
#検索して結果をすべてを表示
fu -a キーワード

#2番目をコピー
fu -c 2
```


#peep
`peep`とは､Command LineでGoogleReaderを確認するツールです｡使い方は簡単で`-n`で未読数を表示します｡キーは､ヘルプは`?`で終了は`q`です｡記事を読むには`O`です｡

```sh
git clone https://github.com/ryuji/peep

echo "alias peep='~/peep/peep'" >> ~/.zshrc
```

##zshで使用するデフォルトのブラウザを変更する
これをやっておくと､記事を`w3m`で開くことができます｡

```sh
echo "export BROWSER=w3m" >> ~/.zshrc
```

#Sheet
`Sheet`とは､Command Lineで動作するチートシート補助ツールのようなものです。依存関係の解消には､[bundler](http://pspfour.blog106.fc2.com/blog-entry-1165.html)を使います｡`rvm install`を使用するには､[gcc](https://github.com/kennethreitz/osx-gcc-installer)を使います｡Xcode4.3以降は､`gcc`がインストールされないので､インストールしておきましょう｡

```sh
brew install ruby

gem install bundler

git clone --depth 1 git://github.com/wayneeseguin/rvm.git

cd rvm

./install

rvm install 1.9.2

rvm use 1.9.2

cd ~/

git clone https://github.com/oscardelben/sheet.git

cd sheet

bundle install

gem install sheet
```

使い方は､簡単で､`sheet new test`などで作成したシートを`sheet list`などで開きます｡


#Sublime Text 2
Command Lineで動作するというわけではありませんが､コマンドラインに替わるものとして､[Sublime Text 2](http://www.sublimetext.com/2)がお勧めです｡`Coda2`人気の中､私は､こちらのほうがいいと思っています｡

##パッケージ管理
コンソールを`Ctrl+Shift+@`を押して表示し、以下のコマンドを実行します。

```
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
```
##Themeの設定
パッケージコントロールを`Commnad+Shift+p`を押して表示し､`install`にて、以下のパッケージを追加していきます。

```
Theme - Soda
```

Sublime Text 2 -> Preferences -> Settings - User を選択し、設定ファイルに以下を追記します。

```json
{
    "theme": "Soda Dark.sublime-theme"
}
```

![](http://farm8.staticflickr.com/7106/7472843248_3239b57b9d.jpg)

##パッケージの追加
**1. URLを用いたパッケージの追加**
`Commnad+Shift+p`を押し､`add repository`を選択します｡そして､URLを入力し`Enter`を押します｡

**2. 検索を用いたパッケージの追加**
`Commnad+Shift+p`を押し､`install`を選択します｡そして､キーワードで検索し､`Enter`を押します｡

おすすめパッケージは､[こちら](http://brettterpstra.com/some-sublime-text-2-packages-of-note/)が参考になります｡もうそろそろ表示領域の上限がきそうなので､記述は､相当省略していきます｡


#TweetVim
[TweetVim](https://github.com/basyura/TweetVim)は､Twitter Clientです｡導入は少しばかり面倒ですが､`Vim`上で動作するためかなり便利だと思います｡また､Command Lineで動作するTwitter Clientとしては､[t](http://sferik.github.com/t/)などもあります｡

##Vim Pluginの管理

```sh
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
 
echo "source ~/.vim/bundle/vundle/test/minirc.vim" >> ~/.vimrc
 
vim ~/.vim/bundle/vundle/test/minirc.vim
```

##TweetVimの導入

```vim:~/.vim/bundle/vundle/test/minirc.vim
set nocompatible
syntax on
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
 
"TweetVimとその依存関連
Bundle 'basyura/TweetVim'
Bundle 'mattn/webapi-vim'
Bundle 'basyura/twibill.vim'
Bundle 'tyru/open-browser.vim'
Bundle 'h1mesuke/unite-outline'
Bundle 'basyura/bitly.vim'

filetype plugin indent on
```

ファイルを保存した後は､`:BundleInstall`とすると､プラグインがインストールされます｡

#blogger.vim
[blogger.vim](http://pspfour.blog106.fc2.com/blog-entry-1171.html)とは､Vim上からブログへポストするためのプラグインです｡ブログを書くことはアウトプットにいいということで導入してみました｡

![](http://farm8.staticflickr.com/7259/7472960196_399926ca12.jpg)


##プラグインのインストール

```vim:~/.vim/bundle/vundle/test/minirc.vim
"gitリポジトリの内容を参照する
Bundle 'kana/vim-metarw'
 
"bloggerに投稿する
Bundle 'ujihisa/blogger.vim'
 
"プラグインの読み込みパスを変更
"Bundle 'tpope/vim-pathogen'
```

`:BundleInstall`を実行すると､プラグインのインストールが完了します｡

##必要なものをインストール

```sh
sudo port install pandoc

gem install nokogiri

gem install net-https-wrapper
```

##必要な設定
`vim-pathogen`を使用しない場合は､以下の設定を行います｡

```
git clone https://github.com/ujihisa/blogger.vim.git

cd blogger.vim

mkdir -p ~/.vim/autoload/metarw/

cp autoload/metarw/blogger.vim ~/.vim/autoload/metarw/ && cp autoload/metarw/blogger.rb ~/.vim/autoload/metarw/
```

後は､設定ファイルに､アカウント情報を記入していきます｡`your_blogid_here`などの箇所を自分のアカウント情報と置き換えます｡

```vim:~/.vimrc
"Bloggerアカウント情報
let g:blogger_blogid = 'your_blogid_here'
let g:blogger_email = 'your_email_here'
let g:blogger_pass = 'your_blogger_password_here'
```

`Vim`から`Blogger`にポストする方法は簡単です｡また､[Markdown](http://blog.2310.net/archives/6)形式にも対応しているので､[zencoding-vim](https://github.com/mattn/zencoding-vim/)を使わなくてもある程度書けると思います｡

```
#投稿したものを編集する
:e blogger:list

#新しく投稿する
:w blogger:create
```


#gist-vim
`Vim`からCodeをGistに投稿してみましょう｡そして､それをブログに貼り付けてみます｡ただし､公式アプリもそれなりに便利なので､公式アプリの導入も検討してみてはどうでしょう｡

##公式アプリの導入とgist-vimの動作に必要なアプリの導入

```sh
brew install gist

brew install curl
```

##プラグインのインストール

```vim:~/.vim/bundle/vundle/test/minirc.vim
Gistにポストする
Bundle 'mattn/gist-vim'
```

あとは`:BundleInstall`というVimコマンドを実行してプラグインをインストールします。そして、設定ファイルにアカウント情報を書き込んでいきます｡

##アカウント情報などの設定(Macの場合)

```vim:~/.vimrc
let g:gist_clip_command = 'pbcopy'
let g:gist_detect_filetype = 1
let g:github_user = 'usrename'
```

##必要な設定
必要なファイルを必要な場所に置きます｡

```sh
mkdir ~/.vim/cookies && touch ~/.vim/cookies/github
```

##Gistにポストしたコードをブログに埋め込むには?

![](http://farm9.staticflickr.com/8153/7473065442_18c09d8482.jpg)


#VimFiler
`VimFiler`とは､`Vim`で動くファイルマネージャーのことです｡`brew install mc`で[mc](http://ja.wikipedia.org/wiki/Midnight_Commander)を入れてもいいのですが､Vimの操作に慣れている方は､[VimFiler](http://www.karakaram.com/vim/vimfiler/)がお勧めです｡

```vim:~/.vimrc.bundle
"VimFilerと依存関連
Bundle 'Shougo/vimfiler'
Bundle 'Shougo/unite.vim'
Bundle 'Shougo/vimproc'
```

`:BundleInstall`を実行します｡

```vim:~/.vimrc
"VimFilerエクスプローラーの設定
let g:vimfiler_as_default_explorer=1

"VimFilerセーフモードの設定
let g:vimfiler_safe_mode_by_default=0
```

#VimShell
`VimShell`とは､`Vim`で動くShellエミュレータです｡導入しておくと､開発環境が便利になります｡

```~/.vimrc.bundle
Bundle 'Shougo/vimshell'
Bundle 'Shougo/vimproc'
```

##コンパイルと必要なファイルの移動

```sh
cd ~/.vim/bundle/vimproc/

make -f make_mac.mak

cp vimproc_mac.so ~/.vim/bundle/vimproc/autoload
```

##デバッガなどのインストール
実行可能バイナリを検査するためのツールなどを入れていきます｡

```sh
brew install binutils

brew install cgdb
```

##VimShellの使用例
`Vim`を起動し､`:VimShell`を実行します｡

```sh
echo "int main(void) {return 0;}" > ~/hello.c

gcc hello.c

gobjdump a.out

cgdb ./a.out
```

#vim-quickrun
[vim-quickrun](http://iphone-dev.g.hatena.ne.jp/tokorom/20120520/1337542304)は､`Vim`で編集中のプログラムの実行結果を確認できるVim Pluginです｡

```~/.vimrc.bundle
Bundle 'thinca/vim-quickrun'
```

デフォルトでは､`<Leader>r`を押すと､実行結果を確認できます｡

#pkill
プロセスの終了には､通常､PID(プロセスIDのことだと思う)が必要になります｡しかし､`top`コマンドなどを使って､PIDを調べるのも面倒ですので､私は､プロセス名からPIDを検索し､それを`kill`する方法をよく利用します｡`pkill`を使えば､それが簡単にできます｡

```
brew install pkill
```

#rtorrent
よく容量が大きい`iso`ファイルの配布などには､`torrent`ファイルが使われることがあります｡これは､あるファイルをダウンロードしたいという場合に､ユーザー間でファイルの不足分を補う形でダウンロードとアップロードをすることで､人気のあるものほど高速でダウンロードできるというものです｡また､ファイルの配布者にとっても負担軽減になるため､広く使われている技術でもあります｡

よって､個人的には､人気のある Linux ディストリビューションは､Torrent Clientでダウンロードすることがよくあります｡ここでは､そのTorrent Clientの一つである`rtorrent`の使い方を紹介します｡

ただし､`torrent`ファイルを使用する場合､アップロードも同時に行なってしまうので､ダウンロードするファイルには､細心の注意をはらいましょう｡また､アップロードには特定のPortを使用するため､ファイアウォールを一部解除しなければならないことがあります｡よって､セキュリティ上も注意が必要です｡

```sh
brew install rtorrent
```

使い方は簡単で､`^Q`で終了です｡`^S`でスタートとストップです｡`Enter`でModeを切り替えてファイルを選択できます｡

![](http://farm9.staticflickr.com/8026/7486624956_40053b5da4.jpg)

なお､ファイルの総容量が大きすぎるため､ファイルが分割されていることがあります｡そういったときは､ファイルを結合しましょう｡例えば､`CentOS-5.8-i386-bin-1of7.iso`-`7of7.iso`があったとして､その場合は以下のようにします｡なお､進行度を表示したい場合はオプションを付けてください｡

```sh
cat CentOS-5.8-i386-bin-* > CentOS-5.8-i386-bin.iso
```

#VirtualBox
私は､[VirtualBox](https://www.virtualbox.org/wiki/Downloads)を使って仮想環境を構築し､複数のデスクトップやサーバーを起動することがよくあります｡そんな時､仮想環境を直接操作することが通常ですが､たまにリモート操作したほうが便利なことがあります｡そんな時は､リモート操作するために､`VirtualBox`のネットワーク設定と`SSH`の設定が必要になります｡ここでは､その設定方法を書いていきたいと思います｡

##VirtualBoxの初期設定
非常に申し訳ないのですが､[VirtualBoxでOSをインストール手順](http://calves.jugem.jp/?eid=997)については省略させて頂きます｡ここでは､仮想環境に[Ubuntu12.04](http://ftp.jaist.ac.jp/pub/Linux/ubuntu-jp-cdimage/releases/12.04/ubuntu-ja-12.04-desktop-i386.iso.torrent)をインストールすることで､話を進めていきたいと思います｡

###VirtualBox上でUbuntuを起動する
VirtualBox上でUbuntuを起動させます｡[VBoxManage](http://www.sssg.org/blogs/hiro345/archives/7199.html)などのコマンドを使用するといいと思います｡

```
#OSリストの確認
VBoxManage list vms

#VRDP接続を有効にする
VBoxManage modifyvm ubuntu12.04 --vrde on

#ゲストOSの起動
VBoxManage startvm ubuntu12.04
```

##VirtualBoxのネットワーク設定
`VirtualBox`ホストをリモート操作する場合は､[NAT + ポートフォーワーディング](http://vboxmania.net/node/351)または､[ホストオンリーアダプタ](http://blog.youria.jp/kyo/mac/ssh_ubuntu_on_virtualbox/)の方法が一般的です｡ここでは､後者の方法を採用し､設定していきたいと思います｡

**VirtualBox > 環境設定 > ネットワーク**
![](http://farm8.staticflickr.com/7128/7486621538_bb680f5c0e.jpg)

**VirtualBox > Ubuntu > 設定 > ネットワーク**
![](http://farm9.staticflickr.com/8154/7486632910_2da607d01c.jpg)

##SSHの設定
以下､サーバーが`Ubuntu`であり､クライアントが`Mac`となります｡これを前提に読み進めていただけるとありがたいです｡


###SSHの接続設定
**サーバー側の操作**

```sh
ifconfig

sudo vi /etc/network/interfaces
```

```:/etc/network/interfaces
auto eth1
iface eth1 inet static
        address 192.168.56.2
        netmask 255.255.255.0
        network 192.168.56.0
        broadcast 192.168.56.255
        gateway 192.168.56.1
        up route del default gateway 192.168.56.1
```

```sh
sudo /etc/init.d/networking restart

または

sudo shutdown -r now

sudo apt-get update && sudo apt-get install openssh-server

sudo ufw allow ssh

which ssh-copy-id
```

**クライアント側の操作**

```
sftp 192.168.56.2

>get /usr/bin/ssh-copy-id

>exit

mv ssh-copy-id /usr/local/bin

source .zshrc

ssh-keygen
[保存先を聞かれたら'Enter'を押す｡鍵のパスワード設定を聞かれるので入力する｡決定したパスワードを再入力する｡実行後､秘密鍵と公開鍵が'~/.ssh'以下に保存される]

cd ~/.ssh && mv id_rsa.pub identity.pub

ssh-copy-id 192.168.56.2

ssh 192.168.56.2
```

![](http://farm8.staticflickr.com/7119/7486621300_706e29f717.jpg)


###SSHの認証設定

```sh
sudo vi /etc/ssh/sshd_config
```


```:/etc/ssh/sshd_config
#パスワード認証を無効化
PasswordAuthentication no
```


#ドットインストール
[ドットインストール](http://dotinstall.com/)とは､無料でプログラミングを学べるサイトのことです｡このサイトを利用すると､プログラミングの学習が捗ります｡ただし､ここでは､いちいちサイトにアクセスするのも面倒なので､当該サイトに貼り付けてある`YouTube`動画をダウンロードして視聴してみたいと思います｡


##動画のダウンロード

```sh
brew install youtube-dl

brew install wget

wget -r http://dotinstall.com/

find ~/dotinstall.com/lessons -name "[0-9]*" | xargs -I{} mv {} ~/dotinstall.com/lessons && cd ~/dotinstall.com/lessons && cat [0-9]* [0-9]* > filename.txt && grep videoId filename.txt > videoid.txt && sed "s|videoId: '|http://jp.youtube.com/watch?v=|" videoid.txt > url.txt && sed "s/',//g" url.txt > url2.txt && youtube-dl -t -a url2.txt

mkdir -p ~/Movie/dt/ && mv *mp4 ~/Movie/dt 
```

##動画の視聴

```sh
brew install mplayer

cd ~/Movie/dt

#フォルダ内にあるファイルのパスをmylistに抽出する(ただし、隠しファイルは含まない)
echo alias mylist='find `pwd` -maxdepth 1 -mindepth 1 | grep -v "\/\." > mylist' >> ~/.zshrc

source ~/.zshrc

mplayer -playlist mylist
```

![](http://farm8.staticflickr.com/7254/7494050886_eb2faffb44.jpg)


##Mplayerの操作
私は､動画を再生するときは基本的に倍速再生します｡なので､`]`を押して､倍速再生してみます｡


```
Speace //スタートまたは､ストップ

Enter //次へまたは､終了

< //前へ

> //次へ

[ //遅い

] //速い

q //終了
```

しかし､どうやら音声が高くなりすぎてしまって､他のプレイヤーと比べると､とても聞こえにくいです｡



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