とりあえずやりたいこと
・プロンプトを、しばらくいじったことなかったので、触ってみることにします。
・ただ、オサレなやつに今後目覚めたら変えますが、要素はカレントディレクトリだけでいいです。
・一応、文字数を一定にしたい!という個人的な気持ちから
"L<=N"
~/Documents $:cd ~
"L>N"
~/Docume ... s/is/a/good/dir/$:cd ~
という感じで、一定数以上は切り詰め、それ以外は空白埋めで、文字数を揃えます。
切り詰めはなんとなく真ん中を詰めてみました。
しばらく使って、先頭のほういらないか、となったら先頭から切り詰めても良さそうですね。
やったこと
sedでいい感じに置換する方法を探しましたが、
スクリプト書くのが楽だな、となったのでそちらの方針に途中転換しました。
シェルスクリプト書くとか10年ぶりぐらいなので、
そちらもいい機会かな、と思い。すごい基本的なことから思い出すことではじめました。
できたスクリプトとPS1設定
my-ps.sh
#!/bin/bash# $# -> 引数の数if[$# -lt 1 ];then
echo"no arg!"exit 0
fi#無駄に計算する必要ないので全部固定値で定義L=25
MID=" ... "L1=5
L_MID=5
L2=15
#${n} -> n番目の引数input=$1l=${#input}# gt : greater thanif[$l-gt$L];then# ${STR:start:offset} で部分文字を取得可能res=${input:0:$L1}
res+=$MID# $((expressioin)) で数式を計算してくれますst=$((l-L2))
res+=${input:$st:$L2}else
l1=$((L-l))# %${n}s で n文字の空白を作るという、ちょっと盲点だった書き方。printf-v blanks "%${l1}s"res=$input
res+=$blanksfi
echo"$res"
で、このmy-psのPATHを通して
.bash_rc
~~
# 全体を''ではなく""で囲うと、\w が展開されない状態でスクリプトが呼ばれてしまいますPS1='\[\e[32m\]$(my-ps "\w")\[\e[m\]\\$ '
~~