日々のエイリアス

bash で auto_pushd もどき

以前はこんなことやっていたが、

function cd() {
if [ "x$1" == "x" ]; then
    pushd ~ > /dev/null
else
        if [ -f "$1" ]; then
                echo "Not directory"
                dir=`dirname "$1"`
        else
                dir="$1"
        fi
        pushd "$dir" > /dev/null
fi
}

こうした方がシンプルだということに気づいた。

function cd() {
  pushd -n `pwd` > /dev/null
  cd -P "$@"
}

好みにより -P(シンボリックリンクを物理パスに解決する)をつけている。
この方法、思いついたあとでどこかに書いてあったような気がしてきたんだが、どこだったろう。

f, x, g and t

find, xargs, grep, tee をエイリアスもしくはシェルスクリプト作成。f と g は .svn を無視する。

find . ! \( -name .svn -prune \)

はちょっと頑張って覚えてしまった方がいいと思う。数回タイプ練習すれば指が覚えてくれる。
ちょっとずれるが、yacc/lex の使い方も私は簡単な例を何度も書き取り練習して覚えた。頭のよくない人にはけっこう有効な方法だと思う。
いつの間にか GNU grep には

--exclude-dir=DIR
              Exclude  directories  matching  the  pattern  DIR from recursive
              searches.

というオプションが追加されたらしい。2007年の GNU grep-2.5.2 からだ。