たいちょーの雑記

ぼくが3日に一度くらい雑記をかくところ

続・世界一わかりやすい絶対パス

マスクしてると眠たくなる

解る?

改良した

ちょいと前に書いた記事でこういうのがありました
xztaityozx.hatenablog.com

この記事で公開したシェルスクリプトはちょっと アレ だったのでシェル芸っぽく書きなおしました

#!/bin/bash

dir=${1:-`pwd`}
dir=`echo $dir|sed 's/\/$//'`

length=$(echo $dir|sed -e 's@[^/]@@g'|wc -c)

echo $dir|
sed 's/\///;s/\//\n/g'|
awk -v end=$length '
  BEGIN{
    idx=0
  }
  {
    if(idx==end-2){
      print "\\\\e[1;33m/"$1
    }else if(idx<=1){
      print "\\\\e[1;30m/"$1
    }else if(idx>=end-4){
      print "\\\\e[1;34m/"$1
    }else if(idx==2){
      print "\\\\e[1;30m/.."
    }
    idx++
  }
'|
while read LINE;do
  echo -en $LINE
done
echo -e "\e[39m"

出来るだけ配列と変数を削ってパイプでつなげました。

ついでに使いやすさを考えて$1が空ならpwdを使うようにしておきました
処理としてはsedで切り分けてawkでテキスト整形してwhile read LINEで連結しただけですね
動作速度とかはどうなんだろ・・・まぁ普通に使う分には全然問題ないですね
awkってホント何でもできて怖いなって思いました

見た目とかは前回の記事と同じになっているはずです
どちらかというとこっちのが安定してるので書き換えてよかったですね

それではよい 絶対パスライフを!