ゼットログ

よしなしごとを記す

bashのaliasを読む(1)

id:mkouheiさんに釣られて、bashソースコードを読む勉強会に参加することになった。自分はaliasを担当することになりました。はじめにaliasで何ができるか?を確認しておこう。bashのmanからaliasの説明をしている部分を抜粋(バッシュイ)。

alias [-p] [name[=value] ...]
Alias with no arguments or with the -p option prints the list of
aliases in the form alias name=value on standard output. When
arguments are supplied, an alias is defined for each name whose
value is given. A trailing space in value causes the next word
to be checked for alias substitution when the alias is expanded.
For each name in the argument list for which no value is sup‐
plied, the name and value of the alias is printed. Alias
returns true unless a name is given for which no alias has been
defined.

単に"alias"または"alias -p"と打ってみると、登録されているエイリアスが一覧で出てくる。自分がどんなエイリアスを作ったか、忘れたらこれで確認すればいいんだね。私のUbuntu 10.04ではこんな感じでした。はじめからいくつかエイリアスが登録されている模様。

$alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

次はエイリアスを実際に作成してみる。こうすれば、"oh"と打つだけでz.ohnamiと出力されるようになる。途中でエイリアスの中身を変えることもできる。

$alias oh="echo 'z.ohnami'"
$oh
z.ohnami
$alias oh="pwd"
$oh
/home/ohnami

登録したエイリアスを消したい場合はunaliasコマンドを使えばいい。-aオプションをつけると、全て(!)のエイリアスコマンドが消えてくれる。

$unalias oh
$alias oh
bash: alias: oh: not found
$unalias -a
$alias
(何も出てこない)

お気に入りのエイリアスは常に使えるようにしておきたい。その場合は.bashrcなどに書いておくと、bashを起動させる度にMyエイリアスを読み込んでくれる。.bashrcにはすでにこんな記述がありました。先ほど、単にaliasと打ったときに出てきたのはこれですね。

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

次はbashソースコードを取得してみよう。id:mkouheiさんに教えてもらったとおりにやってみる。

$apt-get source bash
$ls -l
drwxr-xr-x  3 ohnami ohnami    4096 2010-07-03 16:31 bash-4.1
-rw-r--r--  1 ohnami ohnami   85923 2010-04-19 11:05 bash_4.1-2ubuntu3.diff.gz
-rw-r--r--  1 ohnami ohnami    1296 2010-04-19 11:05 bash_4.1-2ubuntu3.dsc
-rw-r--r--  1 ohnami ohnami 4013077 2010-01-05 04:10 bash_4.1.orig.tar.gz
$ls -l
$cd bash-4.1
$tar Jxf bash-4.1.tar.xz 

このbash-4.1の中に魅惑のソースコードたちが眠っているわけですね。次回からはちょっとずつ中身を解析していきます。
よく使うコマンドの、よく使うオプションなどは毎回タイプするのではなくて、エイリアスでもってさりげなく実行できるとかっこいいのだろう。エイリアスに慣れすぎると、とっさに他の環境を使うことになったときに戸惑うこともあるかもしれないが・・・