世界一は盛り過ぎた
みなさんcdx
使ってますか。ぼくは使ってます。
パスって見づらい
Linux上で作業をしていてたまに思うことがありません?僕は思います。
例えば
こういうの
これってまだ見やすい方ですけど、長くなってくると意味わかんなくなるよね
それに同じ色だからどこが/
なのか分かりにくいし正直長いパスでも後ろいくつかでわかるし
お得意のシェルスクリプトで
こういうのってcdx
のときみたくggったら出てきそうなんですけど・・・
自分で作ればシェル芸人パワー上がるしいいよね
まずはパスの一番最後の要素 つまり
/home/taityo/testdir/dir ↑これとか /home/taityo/testdir/item.txt ↑これ
これに対して色を付けてやります。
こいつは目的の場所、もしくは目的のファイルであるので目立つ方がいいですね。
#!/bin/bash path=$1 bpath=${path##*/} #最後尾 fpath=${path%/*} #その前 out_path="" bpath="\e[1;33m$bpath\e[0;39m" out_path="$fpath/$bpath" echo -e $out_path
\e[1;33m$fpath\e[0;39m
は端末の出力に色を付けるものです。この場合だと黄色の太文字になりますね。echo 色付け
とかでggるとでてきまする。
本当はsed
とかawk
とか使って一撃でやりたかったんですけど・・・
出力はこんなかんじ
いいねいいね。
次は最後の要素から上二つまでのディレクトリに別の色をつけます。まぁ同じようにやってもいいんですが ダセー ので配列に展開してしまいましょう
#!/bin/bash path=$1 arr=(`echo $path|tr -s '/' ' '`) #配列に展開 path_range=${#arr[@]}#要素をカウント out_path="" bpath="\e[1;33m${arr[`echo $path_range - 1 | bc`]}\e[0;39m"#最後の要素 bbpath="\e[1;36m${arr[`echo $path_range - 3|bc`]}\e[0;39m/\e[1;36m${arr[`echo $path_range - 2|bc`]}\e[0;39m" echo -e $bbpath/$bpath
こっちのがいいですね~
ちょっとインデックス計算のところが変なことになってますが・・・
bc
コマンドは文字列を計算式として計算してくれる(日本語が下手)コマンドです
expr
より使い勝手がいいのでよく使います。
出力は
今度は/home/
から下3つまでの要素を省略しましょう。
パスが長くなるとターミナルを占領してしまって目がおかしくなるのでね
省略する場合パスの要素が6個以上必要ですね~。
#!/bin/bash path=$1 arr=(`echo $path|tr -s '/' ' '`) path_range=${#arr[@]} if [ $path_range -le 2 ]; then #パスが短かった時 echo -e "/${arr[0]}/\e[1;33m${arr[1]}\e[0;39m" exit; fi out_path="" bpath="\e[1;33m${arr[`echo $path_range - 1 | bc`]}\e[0;39m" bbpath="\e[1;36m${arr[`echo $path_range - 3|bc`]}\e[0;39m/\e[1;36m${arr[`echo $path_range - 2|bc`]}\e[0;39m" if [ $path_range -ge 6 ]; then bbpath="home\e[0;39m/.../$bbpath" else path_range=`echo $path_range - 4|bc` while [ $path_range -ge 0 ]; do bbpath="${arr[$path_range]}/$bbpath" path_range=`echo $path_range - 1|bc` done fi echo -e /$bbpath/$bpath
こんなかんじになるよ
例が悪いから良くなった感があんまないな・・・
で?
これどこでつかうんだ?
一応これを~/.bashrc
とかに書いておけばパスを呼び出すときとかに通してやれば綺麗になりますよ!
快適な パスライフ を!