LoginSignup
6
6

More than 5 years have passed since last update.

Git の contrib に入っているコマンドを一括インストールする

Last updated at Posted at 2015-01-07

contrib に入っているコマンドを全部インストールしたかったのでとりあえず一覧にしてみた。次のコマンドでそんな感じになる:

find /usr/local/share/git-core/contrib \
     -perm +111    \
     -type f       \
     -name 'git-*' \
     | grep -v /examples/

find のオプションについて少々解説。 -perm +111 で実行フラグが立っているエントリにマッチする(BSD find の場合。 GNU find なら代わりに -executable を使う)。普通はディレクトリも実行フラグが立っているので、 -type f でファイルだけに絞り込む。そしてファイル名が git- で始まるものに限定する。

examples ディレクトリには git の組み込みコマンドのシェルスクリプト実装が入っているので除外する。

すると以下の出力が得られる:

/usr/local/share/git-core/contrib/contacts/git-contacts
/usr/local/share/git-core/contrib/credential/netrc/git-credential-netrc
/usr/local/share/git-core/contrib/fast-import/git-import.perl
/usr/local/share/git-core/contrib/fast-import/git-import.sh
/usr/local/share/git-core/contrib/git-jump/git-jump
/usr/local/share/git-core/contrib/git-resurrect.sh
/usr/local/share/git-core/contrib/mw-to-git/git-mw.perl
/usr/local/share/git-core/contrib/mw-to-git/git-remote-mediawiki.perl
/usr/local/share/git-core/contrib/remote-helpers/git-remote-bzr
/usr/local/share/git-core/contrib/remote-helpers/git-remote-hg
/usr/local/share/git-core/contrib/stats/git-common-hash
/usr/local/share/git-core/contrib/subtree/git-subtree.sh
/usr/local/share/git-core/contrib/workdir/git-new-workdir

git-import.perl と git-import.sh が重複しているのが気になるが、同じコマンドなのでどちらか一方を使えばよさそう。それ以外は拡張子を取り除けばインストールできそうだ。

install_git_contrib_bin.zsh
#!/usr/bin/env zsh

list_git_contrib_bin() {
    find /usr/local/share/git-core/contrib \
         -perm +111    \
         -type f       \
         -name 'git-*' \
         | grep -v /examples/
}

list_git_contrib_bin | while read -r f; do
    ln -s "$f" ~/bin/"${f:r:t}"
    # ${f:r:t} は Zsh 特有の記法。
    # :r で拡張子を取り除き :t で basename を取り出す。
    # 詳しくは `man zshexpn` の HISTORY EXPANSION 節 Modifiers を参照。
done

できた。

蛇足: git- 系コマンド以外の実行ファイルも見るには find /usr/local/share/git-core/contrib -perm +111 -type f | grep -v '/examples\|t/' で。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6