th0x0472.log

アクセスカウンタ

zoom RSS エスケープが面倒ならbashにやらせればいいじゃない

<<   作成日時 : 2017/03/03 22:58  

ブログ気持玉 0 / トラックバック 0 / コメント 0

前の記事でエスケープが面倒だから ‘ (シングルクォート)お勧めとかそんなことを書きましたが、面倒なことはコンピュータにやらせるべきですよね。

タイトルのようなマリーアントワネット的発言は相手が人間だと問題ですが、コンピュータ相手なら積極的にやるべきと思います。コンピュータ酷使すべし。コンピュータはそのために存在しているし、IT系のエンジニアは総じてコンピュータに仕事をさせるのがお仕事のハズです。決してExcel方眼紙に魂を削られるのは違うはず・・・・。

ちょっとズレました。

まあ、前の記事の内容をもう少しだけでもスマートにやりたいなと思うのですよ。
だいたいこんな作戦で進めることにします。

  • プロンプトに付け加える文字列はファイルに入れておく。
  • プロンプトを表示する度に、そのファイルから1行取り出してプロンプトに付け加える。
  • 直前のコマンドのExit statusに応じて取り出し元のファイルを変える。


まず、プロンプトに付け加える文字列を用意して、適当にファイルに保存します。

[th0x0472@localhost 「すごーい」 ~] $ cat exit_zero.txt
うれしー
たのしー
すごーい
[th0x0472@localhost 「すごーい」 ~] $ cat exit_non_zero.txt
m9<^Д^>
m9(^Д^)
m9(^Д^)
m9(^Д^)
m9(^Д^ )
m9(^Д^)9m
m9。゚(゚^Д^゚)゚。
m9(^Д^≡^Д^)9m
m9^Д^)m9^Д^)m9^Д^)
[th0x0472@localhost 「すごーい」 ~] $


PS1を設定します。

[th0x0472@localhost うれしー ~] $ PS1='[\u@\h $([ $? -eq 0 ] && FP="zero" || FP="non_zero"; F=${HOME}/exit_${FP}.txt; sed -n $(($RANDOM % $(wc -l $F | cut -d" " -f1) + 1))p $F) \w] \$ '

プロンプトはこんな感じになります。

[th0x0472@localhost うれしー ~] $
[th0x0472@localhost うれしー ~] $
[th0x0472@localhost すごーい ~] $
[th0x0472@localhost うれしー ~] $ /bin/false
[th0x0472@localhost m9(^Д^) ~] $
[th0x0472@localhost m9<^Д^> ~] $
[th0x0472@localhost m9^Д^)m9^Д^)m9^Д^) ~] $
[th0x0472@localhost m9(^Д^ ) ~] $ /bin/true
[th0x0472@localhost たのしー ~] $


PS1ではチルダは展開されないので、 ~/file ではなくて ${HOME}/file としています。実際のファイルの名前、置き場所、中身はお好みで。他はもう特に説明するまでもないかと...

最初は「エスケープ面倒な文字列も変数に入れて echo “$STR” すればbashがいい感じにエスケープしてくれたはず・・・」思いついて、マリーアントワネット的タイトルになったのですが、結局ファイルから取り出して変数を経由せず直接出力する方式に行き着きました。




テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
エスケープが面倒ならbashにやらせればいいじゃない th0x0472.log/BIGLOBEウェブリブログ
文字サイズ:       閉じる