[unixtool今日作ったシェル関数
シンボリックリンクをつきあたりまでたどるもの。
realpath, readlink はないと困る。
tracelink() { target="$1" if [ -e "$target" ];then if [ -L "$target" ];then echo "$target ->" "$0" `ls -ld "$target" | sed -e 's@.* -> @@'` else ls -ld "$target" fi else echo "$target: not exist" fi }
zsh のこの機能はすばらしい。
http://chasen.org/~daiti-m/text/zsh-intro.html
% compare.pl =(sort +2 -n data1) =(sort +2 -n data2)
真似したかったのがかなり苦しい。
# anonymous buffer anonbuf() { tmpfile="/tmp/anonbuf.$RANDOM" "$@" >| $tmpfile echo $tmpfile } [~:2]$ compare.pl `anonbuf sort +2 -n data1` `anonbuf sort +2 -n data2`
そういえば、
% gcc -o foo -O foo.c -lm -lnsl -lsocket -l
とまで打って, 「しまった, このディレクトリに必要なライブラリがあったかな」と思って ls したくなったりすることはよくあると思います。
私は bash でこんなとき、C-a # ENTER として、後で履歴を戻ります。
shopt -s interactive_comments でないとダメですが、デフォルトでそうなっています。
これは Emacs か zsh に同じような機能があったはず。
実用はしないと思う。
supercd() { x=`echo \`echo "$1" | sed -e 's@[^/]@&*/@g'\`` for i in $x; do if [ -d "$i" ]; then builtin cd "$i" && return fi done echo "No such directory" } [~:2]$ supercd /ulb [/usr/local/bin:2]$ supercd /u/p [/usr/ports:2]$