カテゴリー別アーカイブ: ユーティリティ

【Linux, bash】bash-completionの導入〜CentOS5.2の場合〜

前回・前々回のブログで、同じbash-completionの導入を、CentOS6.2, MacOSX Lionなどで行いました。
別途少し古いですが、CentOS5.2のサーバがありそちらへも導入したため、その手順についても公開したいと思います。
同じCentOSですが、6.2と違いyumコマンドではインストールできなかったため、こちらではソースからコンパイルしてインストールを行います。

参考URL

Bash Completion Official Homepage:
    http://bash-completion.alioth.debian.org/
@IT:bashの補完機能を拡張するには(2006/7/13):
    http://www.atmarkit.co.jp/flinux/rensai/linuxtips/908bashcomp.html

bash-completionのインストール

下記URLにbash-completionのファイルが一覧としてあります。
    http://bash-completion.alioth.debian.org/files/
砂場のCentOS5.2とかでは、2.0などのバージョンがうまく機能しなかったため、1.3を入れてみました。

以下は/optディレクトリ以下で作業を行います。

# cd /opt
# wget http://bash-completion.alioth.debian.org/files/bash-completion-1.3.tar.bz2
# tar xjvf bash-completion-1.3.tar.gz
# cd bash-completion-1.3
# ./configure
# make
# make install

これでbash-completionの設定ファイルなどが、/usr/local/etc/以下にインストールされます。

/etc/bashrcの編集

bash-completion1.3は、インストールをするだけでは自動的に補完機能がきかないようです。
そのため、/etc/bashrcにbash-completionを読み込むように設定を追記します。
※ ここでは全ユーザに補完機能を提供することを想定しているため、rootユーザで/etc/bashrcへ追記しています。
※ 各ユーザで読み込むかどうかを各々設定する場合は、各ユーザの$HOME/.bashrc(ホームディレクトリ直下の.bashrc)へ同様の追記を行ってください。

/etc/bashrcを開きます。

# vim /etc/bashrc

以下を末尾に追記します。

# bash_completion Settings (Added at 2012/11/15, by Daisuke Nishide)
BASH_COMPLETION=/usr/local/etc/bash_completion
BASH_COMPLETION_DIR=/usr/local/etc/bash_completion.d
BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
if [ -f /usr/local/etc/bash_completion ]; then
    . /usr/local/etc/bash_completion
fi

上記でインストールと設定作業は終了です。
また、上記追記一行目のコメントに、いつ誰が追加した設定であるかを明記するようにしていますが、
複数人共有のサーバで、なおかつroot権限での作業を行った場合は、このような明示を行うことが推奨されるでしょう。

bash-completion導入の確認

ログアウトして、ログインし直します。
CentOS6.2の時はyumコマンドで導入を確認したので、こちらではserviceコマンドでtab補完できることを確認してみます。

# service <-- promptにserviceと入力後、Tabキーを二回入力
abrt-ccpp          chargen-dgram      discard-dgram      ip6tables          lvm2-monitor       netconsole         postfix            rsync              sshd               xinetd
abrt-oops          chargen-stream     discard-stream     iptables           mdmonitor          netfs              psacct             rsyslog            svnserve           
abrtd              cpuspeed           echo-dgram         irqbalance         messagebus         network            quota_nld          sandbox            sysstat            
acpid              crond              echo-stream        jenkins            mysql-mmm-agent    nmb                rdisc              saslauthd          tcpmux-server      
atd                cvs                git                kdump              mysql-mmm-monitor  nscd               redis              single             time-dgram         
auditd             daytime-dgram      halt               killall            mysql-proxy        ntpd               restorecond        smartd             time-stream        
avahi-daemon       daytime-stream     httpd              lvm2-lvmetad       mysqld             ntpdate            rngd               smb                udev-post

gitの補完(git-completion)について

こちらは、前回のmacでの作業と同様の手順となります。
異なるのは、設定ファイルの格納ディレクトリが異なるため、ダウンロードしたgit-completionの設定ファイルを格納するディレクトリが違うことだけです。

# cd /usr/local/etc/bash_completion_d/
# wget "http://git.kernel.org/?p=git/git.git;a=blob_plain;f=contrib/completion/git-completion.bash;hb=HEAD" -O git-completion.bash   <--- 最新のgit-completion設定ファイルをダウンロード
# mv git-completion.bash git

上記で、bash-completionの補完関連の設定ファイルが格納されている/usr/local/etc/bash_completion.d/以下にgitの補完に関する設定が追加され、gitコマンド関連の補完がきくようになりました。

設定ファイル等のディレクトリ

インストールしたbash-completion関連の設定は、/etc/bash_completion, /etc/bash_completion.d/などに格納されるようです。
また、/etc/bash_completion.d/以下には、補完対象になるコマンドのそれぞれの設定が補完されるようです。

# ls /usr/local/etc/bash_completion.d/
autoconf       bzip2      crontab     e2fsprogs  git       imagemagick  java  man                net-tools   postfix      redefine_filedir  samba    smartctl    tar             xmlwf
automake       chkconfig  cryptsetup  findutils  gpg2      info         lsof  mdadm              ntpdate     procps       rfkill            screen   sqlite3     tcpdump         xsltproc
bash-builtins  configure  cvs         gcc        gzip      iproute2     lvm   mercurial.sh       openssl     python       rpm               service  ssh         util-linux      xz
bind-utils     coreutils  dd          gdb        iconv     iptables     lzma  module-init-tools  perl        quota-tools  rrdtool           sh       strace      wireless-tools  yum-utils.bash
brctl          cpio       dhclient    getent     ifupdown  isql         make  mysqladmin         pkg-config  rcs          rsync             shadow   subversion  xmllint         yum.bash

以上でCentOS5.2へのbash-completionの導入は完了です。

【Mac, bash】bash-completionの導入〜MacOSX 10.7.4の場合〜

別の投稿で、CentOS6.2へのbash-completionの導入手順を紹介しましたが、
今度はMacOSX Lion10.7.4でのインストールについて紹介します。

MacOSX Lion 10.7.4の場合

bash-completionのインストール

Macでのbash-completionの導入も簡単です。 brewコマンド一発でインストールすることができます。

# brew install bash-completion

bash-completionの設定を追記

bash-completionの設定をユーザが読み込むように設定

$ vim ~/.bash_profile

下記を追記

# bash-completionの設定を読み込み
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi

gitの補完ができるようにする

当方のbrew installだとgitの補完がデフォルトではきかなかったため、設定を追加。

# cd /usr/local/etc/bash_completion.d/
# wget "http://git.kernel.org/?p=git/git.git;a=blob_plain;f=contrib/completion/git-completion.bash;hb=HEAD" -O git-completion.bash
# mv git-completion.bash git

設定ファイルのディレクトリ

brewをMacに導入したときに、brewのホームディレクトリの設定をいじった場合はわかりませんが、 デフォルトでbrewをインストールした場合は以下に設定ファイルがインストールされています。

  • /usr/local/etc/bash_completion <– bash-completionの設定を記載したファイル
  • /usr/local/etc/bash_completion.d <– bash-completionが補完するコマンドそれぞれの設定を格納するディレクトリ

以上でMacへのbash-completionの導入は完了です。

【Linux, bash】bash-completionの導入〜CentOS6.2の場合〜

Linux, UNIX系OSのシェルで、標準のbashの補完機能を強化できるbash-completionを導入したので、備忘も兼ねてそのプロセスを記載します。

参考URL

Bash Completion Official Homepage:
    http://bash-completion.alioth.debian.org/
@IT:bashの補完機能を拡張するには(2006/7/13):
    http://www.atmarkit.co.jp/flinux/rensai/linuxtips/908bashcomp.html

CentOS6.2の場合

CentOS6.2でのインストールプロセスです。
検証はしていませんが、Scientific Linux6.2でも同様のプロセスで可能かと思います。

bash-completionのインストール

CentOS6.2では、yumでインストールするだけでbash-completionが利用できます。
rootになり、以下のコマンドを実行します。

# yum install bash-completion

bash-completion導入の確認

ログアウトして、ログインし直します。
yumコマンドでtab補完できることを確認してみます。

# yum <-- yumと入力した後にTabキーを2回クリックする
--assumeyes --disableplugin --help --randomwait --tolerant deplist groupremove makecache search
--cacheonly --disablerepo --installroot --releasever --verbose distro-sync help provides shell
--color --enableplugin --nogpgcheck --rpmverbosity --version downgrade history reinstall update
--config --enablerepo --noplugins --setopt check groupinfo info remove upgrade
--debuglevel --errorlevel --obsoletes --showduplicates check-update groupinstall install repolist version
--disableexcludes --exclude --quiet --skip-broken clean grouplist list resolvedep

gitの補完について

CentOS6.2のyumコマンドでインストールしたbash-completionは、デフォルトでgitの補完もできるようです。

# git
add branch commit format-patch init notes replace show whatchanged
am bundle config fsck instaweb pull request-pull show-branch
annotate checkout describe gc log push reset stage
apply cherry diff get-tar-commit-id merge rebase rev-tree stash
archive cherry-pick difftool grep mergetool relink revert status
bisect clean fetch help mv remote rm submodule
blame clone filter-branch imap-send name-rev repack shortlog tag

設定ファイル等のディレクトリ

インストールしたbash-completion関連の設定は、/etc/bash_completion, /etc/bash_completion.d/などに格納されるようです。
また、/etc/bash_completion.d/以下には、補完対象になるコマンドのそれぞれの設定が補完されるようです。

# ls /etc/bash_completion.d/
autoconf bzip2 crontab e2fsprogs git imagemagick java man net-tools postfix redefine_filedir samba smartctl tar xmlwf
automake chkconfig cryptsetup findutils gpg2 info lsof mdadm ntpdate procps rfkill screen sqlite3 tcpdump xsltproc
bash-builtins configure cvs gcc gzip iproute2 lvm mercurial.sh openssl python rpm service ssh util-linux xz
bind-utils coreutils dd gdb iconv iptables lzma module-init-tools perl quota-tools rrdtool sh strace wireless-tools yum-utils.bash
brctl cpio dhclient getent ifupdown isql make mysqladmin pkg-config rcs rsync shadow subversion xmllint yum.bash

以上でbash-completionの導入は完了です。