rcmdnk's blog

長尾製作所 一体型右寄せSSDマウンタ SS-NMT305

ちょっとZshで遊んでいたら Macに元々入ってるZshでprintfによる左寄せが出来なかった件。

Sponsored Links

printfで左寄せ

Zshではprintfを使って文字列を表示できますが、 良くある書式の様に%-30sみたいにすると 後から与える文字列を左寄せ、30文字の幅を持って表示できます。 与えた文字が30文字に足らない場合は残りは空白で。

$ printf "X%-30sX" "aaa"
Xaaa                           X

-を付けなければ右寄せ

$ printf "X%-30sX" "aaa"
X                           aaaX

Bashでも同様のことが出来ます。

MacのデフォルトZshでは出来ない?

現在手元にあるMacでは /bin/zshに入ってる物がversion 5.0.8です。

このZshを立ち上げると

$ /bin/zsh
$ printf "X%-30sX" "aaa"
X                           aaaX

な感じで右寄せになってしまいます。 -を外しても同じ結果になります。

HomebrewでZsh 5.2が入れられますが、これを使うと、

$ /usr/local/bin/zsh
$ printf "X%-30sX" "aaa"
Xaaa                           X

ときちんと左寄せに。

ちなみにBashはデフォルトが3.2.57、Homebrewで入れられる物が 4.3.42ですが何方も右寄せはきちんと出来ます。

更に、他のLinux環境で古い4.2.6や4.3.11と言った Zshがあったのでそれで試してみたところ きちんと右寄せ出来ました。

一応~/.zshrcとか外してやっているつもりですが、 Macで5.0.8と5.2でこの様な違いがあるかな、、、という疑問。

何か勘違いしておかしなことをしてるのかもしれませんが、 もし誰か調べてみたり知ってることがあったら教えてもらえればうれしいな、と。 (調べても全くわからなかったので。。。)

Sponsored Links
Sponsored Links

« WindowsでTeamViwerによって導入される余計なボタンの削除 OS Xでバージョンをコマンドラインから確認する方法 »