fishっぽいpwd: /usr/loacl/binが/u/l/binになるやつ

fish なんて shell があるんですね。 それはさておき、GNU screen を使ってステータスラインにカレントディレクトリを表示させているとステータスラインを大幅に使ってしまうということは良くある話で、今回の元のfishっぽいpwd: /usr/loacl/binが/u/l/binになるやつでも同じです。

もっとも GNU screen は便利ですが、特に支障がないのであれば、端末の Window を表示させても構わないと思っています。 とは言え、以前 「もっと便利に awk を使ってみよう」 という講習会では GNU screen のステータスラインを awk を使ってもっと便利にしようという講習をやったこともあります。

さて、多分この問題を解くにはいろいろな解法があると思われますが、split() 関数で分割して最後以外を最初の 1 文字だけ取得し、最後の部分はそのまま付けるという比較的オーソドックスな方法で作ってみました。

#! /usr/bin/gawk -f
# fish_line_pwd.aww

{
    sub(ENVIRON["HOME"], "~", $0);
    num_dir = split($0, arr_dir, /\//);
    for (i = 1; i <= num_dir - 1; i++) {
        arr_dir[i] = substr(arr_dir[i], 1, 1);
        fish_line_pwd = fish_line_pwd "/" arr_dir[i];
    }
    fish_line_pwd = fish_line_pwd "/" arr_dir[num_dir];
    sub(/\//, "", fish_line_pwd);
    print fish_line_pwd;
}

使い方は GNU screen に組み込んでも良いのですが、ここでは動作確認だけにしておきます。

$ pwd | gawk -f fish_line_pwd.awk
~/w/a/fish_line_pwd

個人的には 10 年以上前からプロンプトに pwd を表示させていますので、プロンプトに表示してくれた方が慣れていたりします。

そういえば、OSC2009 Tokyo/Spring の案内が来ていましたが、勉強会ネタや配布物ネタがあれば前向きに参加を検討したいと思いますので、アイデアがあればメーリングリストに連絡ください。 今年は年賀状を xgawk の gd の機能を使って宛名を一気に作成しましたが、フォントの問題を除けば「今まで何であんな重い年賀状ソフトを使っていたんだろう」と awk のサクサク感に満足しています。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png