Subscribed unsubscribe Subscribe Subscribe

@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

= 俺のエイリアスを越えてゆけ

[2011-12-05 09:52:38]

最近いろいろエイリアスを書いてます.

たまにミスります.エイリアス内でループして怒られたり,オプション取られへんくなって使い物にならんかったり.

エイリアス

1文字シリーズ - TakiTakeの日記 とかいいんじゃないでしょうか.

私はこんな感じ


失敗例

alias ls='ls -G --color 2>/dev/null||ls -G'

MacLinuxでlsを色付けるオプションが違うのよ.設定ファイルは使い回したいし.
そんでこのエイリアスでいけたとおもったら,--colorがある環境ではオプションを渡せなくなった.結局function書きました.

lsをfunctionで

こんな感じで対応しました.

エイリアスを越える

上のfunction書いてるときに

#!/bin/zsh
function ls(){
    ls -G --color $@ 2>/dev/null||ls -G $@
}

とかやっちゃってまー無限ループのような.ね.

[追記]コメント欄で教えてもらいました.

command ls

これで直接呼び出せました.

以下whereとかwhichの話...

[追記終わり]

エイリアスとかfunctionで同じ名前のを探すのはwhichだろうと思ってたらfunctionとかaliasの内容しか教えてくれなかったので,

と教えていただいた

man zshbuiltins

でビルトインコマンドのmanを見てwhichはwhence -cと同じと知りまして,あとwhereはwhence -caでパスも出力するしwhence -pでパスだけの出力になるしいい感じ.

% which ls   
ls () {
	$myls -G --color $@ 2> /dev/null || $myls -G $@
}
/Users/peccu% where ls
ls () {
	$myls -G --color $@ 2> /dev/null || $myls -G $@
}
/bin/ls
/Users/peccu% whence -ca ls
ls () {
	$myls -G --color $@ 2> /dev/null || $myls -G $@
}
/bin/ls
/Users/peccu% whence -cap ls
/bin/ls
/Users/peccu% whence -p ls  
/bin/ls
/Users/peccu% where -p ls
/bin/ls
/Users/peccu% which -p ls
/bin/ls

まーこんな感じでaliasは越えられますね.