やろうとしていること
bashからzshに乗り換えてみて,autocd(ディレクトリ名のみでcd)がとても便利だと感じた。だったら,ディレクトリ名だけじゃなくて,ファイル名でcatもできるようにしたいと思って試してみた。
設定ファイル追記
一応,zshの場合とbashの場合を書いておく。
zshの場合
以下を~/.zshrcに追記する。
.zshrc
#command not foundのとき
function command_not_found_handler() {
#そのファイルが存在したら
if test -e $1; then
#バイナリファイルなら
if [ "$(file --mime-encoding -L $1 | awk '{print $2}')" = 'binary' ]; then
#元々のステータスを表示
echo "zsh: command not found: $1"
#バイナリファイル以外なら
else
#catで中身を表示
cat "$1"
fi
#ファイルが存在しなかったら
else
#元々のステータスを表示
echo "zsh: command not found: $1"
fi
}
command_not_found_handler(){}の中に書いた処理が,コマンドが存在しない時に実行される。
bashの場合
以下を~/.bashrcに追記する。
.bashrc
#command not foundのとき
function command_not_found_handle() {
#そのファイルが存在したら
if test -e $1; then
#バイナリファイルなら
if [ "$(file --mime-encoding -L $1 | awk '{print $2}')" = 'binary' ]; then
#元々のステータスを表示
echo "bash: $1: command not found"
#バイナリファイル以外なら
else
#catで中身を表示
cat "$1"
fi
#ファイルが存在しなかったら
else
#元々のステータスを表示
echo "bash: $1: command not found"
fi
}
zshとは違い,command_not_found_handle(){}となる。
終わりに
これを使えばcatだけじゃなくてvimにするなど色々な処理が可能でかなり便利だ。しかし,あまり使わない。