Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2878

[Extremely Personal Note] Bashのプロンプトで文字数を揃える

$
0
0

とりあえずやりたいこと

・プロンプトを、しばらくいじったことなかったので、触ってみることにします。
・ただ、オサレなやつに今後目覚めたら変えますが、要素はカレントディレクトリだけでいいです。
・一応、文字数を一定にしたい!という個人的な気持ちから

"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\]\\$ '
~~

Viewing all articles
Browse latest Browse all 2878

Trending Articles