Help us understand the problem. What is going on with this article?

bashでプロンプトに関数を嵌め込んだ sagiritalk

More than 1 year has passed since last update.

PS1

シェルの設定は基本ここで弄りますよね

~/.bashrc
export PS1='\! \t \w \$ '

それで

261 01:59:02 ~ $ 

こんな感じで表示されるわけですが、それでは次の例ではどうでしょうか?

~/.bashrc
export PS1='`echo "Hello World!"` \$ '
Hello World! $ 

はい、このようにちゃんとコマンドが実行されています。
しかしこれではechoがexport時に実行されているのか、プロンプトが表示されるたびに実行されているかはわからないため、次のようなものを用意します。

~/.bashrc
export PS1='`echo "Hello World!" $RANDOM` \$ '
Hello World! 7487 $ 
Hello World! 4278 $ 
Hello World! 160 $ 

結果はご覧の通り、エンターキーが押されるたびに数字が変動しています。
つまりプロンプトが表示されるたびに``で囲ったコマンドが実行されているのです!

使用例

~/.bashrc
export sgrpatt=`cat ~/Hacks/sagiritalk/sagiri.txt | grep -c ""`
export PS1='\! \w \n 紗霧「`~/Hacks/sagiritalk/sagiri.sh`」 \$ '
~/Hacks/sagiritalk/sagiri.sh
sgrno=$(($(($RANDOM % $sgrpatt)) + 1))
cat ~/Hacks/sagiritalk/sagiri.txt | head -n $sgrno | tail -n 1
265 ~ 
 紗霧「部屋を出たら負けだと思っているわ!」 $ 
265 ~ 
 紗霧「な〜に?にいさん」 $ 
265 ~ 
 紗霧「にいさんのばか!にぶちん!ラノベ主人公!!!」 $ 

使用例2

~/.bashrc
export PATH=$PATH:`find ~/Hacks -type d -name '*bin' | paste -s -d : -`
export PS1='\! \w \n 紗霧「`cat ~/Hacks/sagiritalk/log.txt`」 \$ '
~/Hacks/bin/sagiri
sgrpatt=`cat ~/Hacks/sagiritalk/sagiri.txt | grep -c ""`
sgrno=$(($(($RANDOM % $sgrpatt)) + 1))
cat ~/Hacks/sagiritalk/sagiri.txt | head -n $sgrno | tail -n 1 > ~/Hacks/sagiritalk/log.txt
266 ~ 
 紗霧「にいさん...どうしたの? 」 $ sagiri
267 ~ 
 紗霧「にいさんご飯... 」 $ sagiri
268 ~ 
 紗霧「エッチなイラストは、仕事だし、好きだからいいの... 」 $ 

まとめ

いかがでしたか?
プロンプトにご主人様とかマスターとか言わせている方々ならわかってくれるはず

klattimia
量子コンピュータのハードのほうに興味が湧いてきた人.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away