Translate

ラベル bash の投稿を表示しています。 すべての投稿を表示
ラベル bash の投稿を表示しています。 すべての投稿を表示

2013年10月10日木曜日

プロンプトに現在のgitローカルリポジトリ/ブランチを表示する

作業中に現在見ているgitローカルリポジトリの場所とブランチ、それからコミット状況がテキスト色で分かると便利だなー、と思い、その辺りをスクリプトにまとめてみた。

cat ~/bin/gitbranch.bash
#!/bin/bash
# echo git branch for color PS1

name=`git symbolic-ref HEAD 2> /dev/null`
if [[ -z $name ]]
then
        exit
fi

name=`basename $name`
st=`git status`
repos=`git remote -v | \
grep -o '\/.*' | \
sed -e "s/[ \s\/]//g" | \
sed -e "s/(fetch)//g" | \
sed -e "s/\.git//g" | \
awk "NR==1{print}"`
if [[ -n `echo $st | grep "nothing to commit"` ]]
then
    color="\[\e[32;1m\]"
else
    color="\[\e[31;1m\]"
fi
reset_color="\[\e[0m\]"
echo -E $color[$repos $name]$reset_color
これを.bashrcあたりで読み込んでPS1にセットしておくと、プロンプトが常に更新される感じになる。
PS1="\$(~/bin/gitbranch.bash)\n[\u@\h: \W]> "
プロンプトそのものはこんな感じ。
[Repo-Name branch]
[username@localhost: dir] > # commit前 [Repo-Name branch]
[username@localhost: dir] > # commit後

2013年10月3日木曜日

ログアウト時に自分が最後の一人だったらtmux kill-server

ログアウト時にtmuxのセッションを強制的に終了する。
自分以外の人が作業してるかどうかを一応チェックして、他に人がいたら何もしない。自分が別プロセスでログイン中の時も何もしない。
もちろん、tmuxが動いてない時も何もしない。
cat /path/to/killtmux.bash
#!/bin/bash

count=`who | grep $USER | wc -l`
if [ 1 -ge $count ]; then
expect -c "
set timeout -1
spawn /usr/local/bin/tmux ls
expect {
    \"failed\" {
        exit 1
    }
    \"eof\" {
        spawn /usr/local/bin/tmux kill-server
        exit 0
    }

    interact
}
"
fi

~/.bash_logoutあたりでこのスクリプトを叩くように追加。
echo /path/to/killtmux.bash >> ~/.bash_logout

2013年9月22日日曜日

任意のコマンドをn回繰り返して実行する

例えば、 /path/to/hogeを500回繰り返し実行して、その結果を~/result.logに吐き出す場合。
for a in $(seq 1 500); do /path/to/hoge/ >> ~/result.log ; done