Glide Note

glidenote's blog

Lionでautofsを使って、ファイルサーバを自動マウント

社内ファイルサーバの共有ディレクトリをautofsを使って自動NFSマウントするようにしたので作業メモ.

作業環境 Lion(10.7.3)

やりたいこと

MacBookAirの~/mnt/hogeに共有サーバpos002.tokyo.pb/data/sites/hogeを自動マウントしたい

/etc/auto_master の修正

auto_masterに下記を追加

1
/Users/maeda/mnt    /etc/auto_nfs

/etc/auto_nfs を新規作成

NFSマウント用の設定を新規に用意

1
hoge -fstype=nfs pos002.tokyo.pb:/data/sites/hoge

autofsdの再起動

autofsdはlaunchd経由で起動しているので、下記コマンドで再起動

1
2
sudo launchctl stop com.apple.autofsd
sudo launchctl start com.apple.autofsd

自動マウントされているか確認

1
2
3
4
5
6
7
8
9
df -ah

Filesystem                                Size   Used  Avail Capacity  Mounted on
/dev/disk0s2                             112Gi   36Gi   76Gi    33%    /
devfs                                    183Ki  183Ki    0Bi   100%    /dev
map -hosts                                 0Bi    0Bi    0Bi   100%    /net
map auto_home                              0Bi    0Bi    0Bi   100%    /home
map /etc/auto_nfs                          0Bi    0Bi    0Bi   100%    /Users/maeda/mnt
pos002.tokyo.pb:/data/sites/hoge  997Gi   53Gi  944Gi     6%    /Users/usr0600093/mnt/hoge

うまく自動マウントしてくれました。
これでマシンを再起動しても自動で共有ディレクトリをマウントしてくれます。

zsh使いなら効率改善のため知っておきたいAUTOJUMP

zsh補完関数の書き方をいろいろ調べていたら、autojump-zshというパッケージを発見。 気になって使ってみたらめちゃくちゃ便利で、久々に感動したので紹介。

autojumpcdコマンドの拡張的なコマンドで、移動したディレクトリを記録し、 ディレクトリ間を行ったり来たりするときに絶大な効果を発揮します。

公式wikiに書いてあるよう コマンドライン作業の10〜20%はcdコマンドのため、ディレクトリ移動の動作が 改善すると必然的に作業効率も向上するということです。
実際私もautojumpを使い出してから、作業効率が上がりました。

それでは早速autojumpの説明を。動作検証環境は下記です。

  • Mac OSX 10.7.3
  • Fedora 16
  • Scientifix Linux 6.1

導入方法

autojumpを利用するにはpython2.6か3.0以上が必要です。
yumやbrewでも導入可能ですが、その場合はzsh補完関数_jファイルを 自分で配置するあげる必要があります。

私は下記のようにソースから入れました。

1
2
3
4
5
mkdir ~/src
cd ~/src
git clone git://github.com/joelthelion/autojump.git
cd autojump
sudo sh ./install.sh --zsh

2012年3月3日追記 MacでBrewを使って導入する方法

1
brew install autojump

.zshrcに下記を追記。

1
2
3
4
alias j="autojump"
if [ -f `brew --prefix`/etc/autojump ]; then
  . `brew --prefix`/etc/autojump
fi

jでautojumpが動かない場合があるようなので、その場合はalias設定も追加。

autojumpのzsh補完関数の配置

autojumpは同梱されているzshの補完関数_j真価を発揮するので、 補完関数を$fpathに配置。

$fpathの調べ方は下記のような感じで

1
2
echo $fpath
/usr/local/share/zsh/site-functions /usr/local/share/zsh/4.3.12/functions

通常は /usr/share/zsh/site-functions//usr/local/share/zsh/site-functions/ などになるかと思います。

私は下記のような感じで配置。

1
sudo cp ~/src/autojump/_j /usr/local/share/zsh/site-functions/

exec zshでは、なぜかautojumpが有効にならないので、ログインし直した方が良いです。

利用方法

cdコマンドで移動するたび~/.local/share/autojump/autojump.txtにディレクトリ名と回数が記録され、 次回そのディレクトリに移動する際はjコマンドを用いて

1
j ディレクトリ名の一部[tab]

という感じで移動出来ます。

たとえば~/misc/hogehogeというディレクトリの場合、

1
2
3
j h[tab]
または
j ge[tab]

などディレクトリの一部だけ入力して移動でき、キー入力の回数が激減です。

ちなみにautojump出来るディレクトリのリストは

1
jumpstat

で確認が出来ます。

使い始めは「ctrl+r ディレクトリ名とかで十分じゃん」とか「zshのディレクトリスタック使えば良いじゃん」 とか思ってたんですが、使い込むうちにautojumpだとカレントディレクトリとか移動先のディレクトリの 相対パスと絶対パスを意識しなくて良いことがわかり、何よりキー入力の数が格段に減るので、 今ではautojump無しの生活は考えられなくなりました。

autojumpを活用して作業効率を改善させましょう。

githubのhubコマンドを補完するzsh補完関数を作ってみた

github用にhubというgitのラッパーコマンドがあることを会社で教えてもらって 使ってみたら、当然の如くzshの補完が効かなくてコマンドの使い方もよく分からなかったので、 コマンド理解とzsh補完関数の書き方の勉強も兼ねて自分で作ってみた。

最初はhubコマンドの補完関数を作ってたんですが、利用方法としてaliasを充てて gitの代わりに使うことが推奨されており、そもそもgitのラッパーで gitコマンドの補完も出来ないと意味が無いので、gitの補完関数自体に 手を入れて、hubのカスタムコマンドも利用出来るようにした。

検証環境は下記

  • Mac OSX 10.7.3, Scientific Linux 6.1
  • git version 1.7.7.5
  • hub version 1.8.2
  • zsh 4.3.11, 4.3.12

/usr/local/share/zsh/4.3.11/functions/_gitを元に修正した内容は下記

できあがったのがこちら

追記 2012年2月27日 githubに公開しました

利用方法

hubをあらかじめ導入しておいて、$fpath配下に上記補完関数を配置。 もとからある_gitと重複してもsite-functions配下に置くと 優先的にそちらが利用されます。

1
2
3
4
mkdir ~/src
cd ~/src
git clone git://github.com/glidenote/hub-zsh-completion.git
sudo cp hub-zsh-completion/_git /usr/share/zsh/site-functions/

.zshrcに下記を書いて、

1
alias git='hub'
1
exec zsh

をして、反映させる。

hubをgitのラッパーとして動作させると、git [tab]で下記hubカスタムコマンドが補完されるようになります。

1
2
3
4
5
browse              -- open repository's GitHub page in the system's default web browser
compare             -- open a GitHub compare view page in the system's default web browser.
create              -- repo created on GitHub
fork                -- repo forked on GitHub
pull-request        -- opens a pull request on GitHub for the project that the 'origin' remote points to.

それにしてもgitの補完関数6000行超えてて、同じようなのを自分で一から書こうとすると心が折れます。

参考

Rudixのzsh補完関数を作った

以前紹介したMacのパッケージ管理ソフト Rudixのzsh補完関数を作ってみました。
zsh補完関数は初めて書いたんですが、ウェブに情報が少なくて、 mizzyさんの書いた補完関数$fpathの下にあるzshの補完関数などを参考に。

2012年2月27日 githubに公開しました

glidenote/rudix-zsh-completion

/usr/local/share/zsh/site-functions に置けば、下記のような感じで動作します。

書いてて一番難しかったインストール済みパッケージ情報も補完されるようにしてます。

Command Line Tools for Xcodeがリリースされて、今後もRudixを使い続けるか微妙ですが、 zsh補完関数の書き方が多少理解できたので良しとしよう。

参考