Command Lineで使用しているツールを簡単にではありますが、まとめてみようと思います。私が知らない便利ツールはまだまだたくさんありますので、ここに掲載されているもの以外で便利なものがあれば、ぜひ教えてください。
この記事に貼り付けてあるリンクは、キーワードに関連する適切な場所へと誘導してくれます。非常に有効なので、ぜひ参照してみてください。
また、私は基本的にパソコンのことは何もわかっていないので、記事内には誤りを含む可能性があります。よって、できる限り自分の環境を把握した上で、適時読み換えてもらえればと思います。特に、設定ファイルの場所については気をつけてください。また、Git
やHomebrew
、MacPort
の導入説明などは省略していますので、注意が必要です。
#zsh
Shellであるzsh
を拡張する設定の数々を紹介していきたいと思います。簡易にではありますが、もっと良い設定があれば、コメントにて補足していただければありがたいと思います。
brew install zsh
chsh -s /usr/local/bin/zsh
##autojump
autojump
は、移動を簡単にしてくれるツールです。autojump
を導入し、補完関数のパッケージを$fpath以下においてやると、効果を発揮します。また、補完関数を自作することもできます。
brew install autojump
##z
autojump
よりもzのほうがいいという人もいます。私もそう思います。
git clone https://github.com/rupa/z.git
または
brew install z
そして、設定ファイルに以下を付け足します。これで、j
を押すと、履歴JUMPが使えます。もし使用できない場合は、こちらを使用してみてください。
_Z_CMD=j
source ~/z/z.sh
precmd() {
_z --add "$(pwd -P)"
}
##auto-fu.zsh
auto-fu.zsh
は、自動補完を簡単にしてくれるツールです。更新されてからさらに使いやすくなりました。
git clone https://github.com/hchbaw/auto-fu.zsh.git
echo "source ~/auto-fu.zsh/auto-fu.zsh" >> ~/.zshrc
##canything
zsh
でanything.el
ライクな環境を整えるには、canythingがお勧めです。まあ、auto-fu.zsh
と同一作者のzaw.zshでもいいのですが。
sudo aptitude install libncursesw5-dev
git clone https://github.com/keiji0/canything
cd canything && make
mkdir -p ~/bin && mv canything ~/bin
おすすめの設定はgisty
で管理しているリポジトリのワーキングディレクトリに一覧から選んで移動する設定です。
# -*- 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
です。また、避難したものを表示しておくようにすると、更に便利です。
show_buffer_stack() {
POSTDISPLAY="
stack: $LBUFFER"
zle push-line-or-edit
}
zle -N show_buffer_stack
##oh-my-zsh
oh-my-zsh
は、zsh
のカスタマイズを簡単にするようなものです。設定ファイルの集まりといえば分かりやすいでしょうか。有志たちが公開してくれている設定を簡単に取り込めます。特に、Promptの設定においては、大いに参考になると思います。zsh
のPromptの設定を書くのはとても面倒くさいので、oh-my-zshを参考に構築するのもありかなとは思っています。
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がお手軽です。ただ、私の場合は、ククログのzshrcを参考にして書きました。
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
#tmux
tmux
とは、Virtual環境を構築するツールです。screen
とともに有名ですが、私は、tmux
を使っています。ここでは、tmux
を便利にする設定の数々を紹介していきたいと思います。
brew install tmux
##screen風のキーバインドを使用する
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に挙げられているものが参考になります。設定ファイルの書き方はこちらです。
#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を利用する
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を利用することができます。
#クリップボードの共有
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に様々な情報を表示するには、情報を取得するシェルスクリプトが必要になります。それらを作成した後、設定ファイルに以下のように書きます。長くなりそうなので、詳しくは、上の記事を見てください。
# ステータスライン - 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
#weechat
weechat
とは、IRC Clientのことです。IRC Clientの中では、使いやすいので、お勧めです。Growlとの連携で更に便利になります。
brew install weechat
追記
120resetさんからコメントをいただきました。pluginのことも考えると、以下のようするほうがいいようです。
brew install weechat --ruby --perl --python
#mutt+Gmail
mutt+GmailでCUIメール環境を構築する方法です。これについても、簡易手順なので、それぞれにカスタマイズしていただければと思います。
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
以下の項目を自分のアカウントのものに書き換えます。
#iTerm2
iTerm2は、MacのTerminalアプリです。私は、Macではこれを使用しています。
##フォントをRictyに変更する
フォントをRictyに変更すると、アルファベットや数字の判別が分かりやすくなると思います。
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…にしておくと、ディレクトリを維持することができます。
#fu
fu
とは、ワンライナーを簡単に投稿、共有できるCommand-Line-FuのCLI Clientです。cmdline-fuのほうがお勧めですが、私は、fu
を使っています。
git clone git://github.com/samirahmed/fu.git
cd fu/
sudo make install
##fuの使い方
#検索して結果をすべてを表示
fu -a キーワード
#2番目をコピー
fu -c 2
#peep
peep
とは、Command LineでGoogleReaderを確認するツールです。使い方は簡単で-n
で未読数を表示します。キーは、ヘルプは?
で終了はq
です。記事を読むにはO
です。
git clone https://github.com/ryuji/peep
echo "alias peep='~/peep/peep'" >> ~/.zshrc
##zshで使用するデフォルトのブラウザを変更する
これをやっておくと、記事をw3m
で開くことができます。
echo "export BROWSER=w3m" >> ~/.zshrc
#Sheet
Sheet
とは、Command Lineで動作するチートシート補助ツールのようなものです。依存関係の解消には、bundlerを使います。rvm install
を使用するには、gccを使います。Xcode4.3以降は、gcc
がインストールされないので、インストールしておきましょう。
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がお勧めです。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 を選択し、設定ファイルに以下を追記します。
{
"theme": "Soda Dark.sublime-theme"
}
##パッケージの追加
1. URLを用いたパッケージの追加
Commnad+Shift+p
を押し、add repository
を選択します。そして、URLを入力しEnter
を押します。
2. 検索を用いたパッケージの追加
Commnad+Shift+p
を押し、install
を選択します。そして、キーワードで検索し、Enter
を押します。
おすすめパッケージは、こちらが参考になります。もうそろそろ表示領域の上限がきそうなので、記述は、相当省略していきます。
#TweetVim
TweetVimは、Twitter Clientです。導入は少しばかり面倒ですが、Vim
上で動作するためかなり便利だと思います。また、Command Lineで動作するTwitter Clientとしては、tなどもあります。
##Vim Pluginの管理
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の導入
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とは、Vim上からブログへポストするためのプラグインです。ブログを書くことはアウトプットにいいということで導入してみました。
##プラグインのインストール
"gitリポジトリの内容を参照する
Bundle 'kana/vim-metarw'
"bloggerに投稿する
Bundle 'ujihisa/blogger.vim'
"プラグインの読み込みパスを変更
"Bundle 'tpope/vim-pathogen'
:BundleInstall
を実行すると、プラグインのインストールが完了します。
##必要なものをインストール
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
などの箇所を自分のアカウント情報と置き換えます。
"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形式にも対応しているので、zencoding-vimを使わなくてもある程度書けると思います。
#投稿したものを編集する
:e blogger:list
#新しく投稿する
:w blogger:create
#gist-vim
Vim
からCodeをGistに投稿してみましょう。そして、それをブログに貼り付けてみます。ただし、公式アプリもそれなりに便利なので、公式アプリの導入も検討してみてはどうでしょう。
##公式アプリの導入とgist-vimの動作に必要なアプリの導入
brew install gist
brew install curl
##プラグインのインストール
Gistにポストする
Bundle 'mattn/gist-vim'
あとは:BundleInstall
というVimコマンドを実行してプラグインをインストールします。そして、設定ファイルにアカウント情報を書き込んでいきます。
##アカウント情報などの設定(Macの場合)
let g:gist_clip_command = 'pbcopy'
let g:gist_detect_filetype = 1
let g:github_user = 'usrename'
##必要な設定
必要なファイルを必要な場所に置きます。
mkdir ~/.vim/cookies && touch ~/.vim/cookies/github
##Gistにポストしたコードをブログに埋め込むには?
#VimFiler
VimFiler
とは、Vim
で動くファイルマネージャーのことです。brew install mc
でmcを入れてもいいのですが、Vimの操作に慣れている方は、VimFilerがお勧めです。
"VimFilerと依存関連
Bundle 'Shougo/vimfiler'
Bundle 'Shougo/unite.vim'
Bundle 'Shougo/vimproc'
:BundleInstall
を実行します。
"VimFilerエクスプローラーの設定
let g:vimfiler_as_default_explorer=1
"VimFilerセーフモードの設定
let g:vimfiler_safe_mode_by_default=0
#VimShell
VimShell
とは、Vim
で動くShellエミュレータです。導入しておくと、開発環境が便利になります。
Bundle 'Shougo/vimshell'
Bundle 'Shougo/vimproc'
##コンパイルと必要なファイルの移動
cd ~/.vim/bundle/vimproc/
make -f make_mac.mak
cp vimproc_mac.so ~/.vim/bundle/vimproc/autoload
##デバッガなどのインストール
実行可能バイナリを検査するためのツールなどを入れていきます。
brew install binutils
brew install cgdb
##VimShellの使用例
Vim
を起動し、:VimShell
を実行します。
echo "int main(void) {return 0;}" > ~/hello.c
gcc hello.c
gobjdump a.out
cgdb ./a.out
#vim-quickrun
vim-quickrunは、Vim
で編集中のプログラムの実行結果を確認できるVim Pluginです。
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を使用するため、ファイアウォールを一部解除しなければならないことがあります。よって、セキュリティ上も注意が必要です。
brew install rtorrent
使い方は簡単で、^Q
で終了です。^S
でスタートとストップです。Enter
でModeを切り替えてファイルを選択できます。
なお、ファイルの総容量が大きすぎるため、ファイルが分割されていることがあります。そういったときは、ファイルを結合しましょう。例えば、CentOS-5.8-i386-bin-1of7.iso
-7of7.iso
があったとして、その場合は以下のようにします。なお、進行度を表示したい場合はオプションを付けてください。
cat CentOS-5.8-i386-bin-* > CentOS-5.8-i386-bin.iso
#VirtualBox
私は、VirtualBoxを使って仮想環境を構築し、複数のデスクトップやサーバーを起動することがよくあります。そんな時、仮想環境を直接操作することが通常ですが、たまにリモート操作したほうが便利なことがあります。そんな時は、リモート操作するために、VirtualBox
のネットワーク設定とSSH
の設定が必要になります。ここでは、その設定方法を書いていきたいと思います。
##VirtualBoxの初期設定
非常に申し訳ないのですが、VirtualBoxでOSをインストール手順については省略させて頂きます。ここでは、仮想環境にUbuntu12.04をインストールすることで、話を進めていきたいと思います。
###VirtualBox上でUbuntuを起動する
VirtualBox上でUbuntuを起動させます。VBoxManageなどのコマンドを使用するといいと思います。
#OSリストの確認
VBoxManage list vms
#VRDP接続を有効にする
VBoxManage modifyvm ubuntu12.04 --vrde on
#ゲストOSの起動
VBoxManage startvm ubuntu12.04
##VirtualBoxのネットワーク設定
VirtualBox
ホストをリモート操作する場合は、NAT + ポートフォーワーディングまたは、ホストオンリーアダプタの方法が一般的です。ここでは、後者の方法を採用し、設定していきたいと思います。
VirtualBox > Ubuntu > 設定 > ネットワーク
##SSHの設定
以下、サーバーがUbuntu
であり、クライアントがMac
となります。これを前提に読み進めていただけるとありがたいです。
###SSHの接続設定
サーバー側の操作
ifconfig
sudo vi /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
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
###SSHの認証設定
sudo vi /etc/ssh/sshd_config
#パスワード認証を無効化
PasswordAuthentication no
#ドットインストール
ドットインストールとは、無料でプログラミングを学べるサイトのことです。このサイトを利用すると、プログラミングの学習が捗ります。ただし、ここでは、いちいちサイトにアクセスするのも面倒なので、当該サイトに貼り付けてあるYouTube
動画をダウンロードして視聴してみたいと思います。
##動画のダウンロード
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
##動画の視聴
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
##Mplayerの操作
私は、動画を再生するときは基本的に倍速再生します。なので、]
を押して、倍速再生してみます。
Speace //スタートまたは、ストップ
Enter //次へまたは、終了
< //前へ
> //次へ
[ //遅い
] //速い
q //終了
しかし、どうやら音声が高くなりすぎてしまって、他のプレイヤーと比べると、とても聞こえにくいです。
追記
投稿の上限が来たので、これ以降のツールの紹介は、次回になります。よろしくお願いします。