shellのアラートあれこれ

matoken?

大隅から来ました

image/map.png

最近

shellで時間の掛かる処理が終わったら教えて欲しい

bell

$ 時間の掛かる処理 ; echo -en "\007"
$ 時間の掛かる処理 ; echo -en ^G
$ 時間の掛かる処理 ; echo -en "\a"

※^GはC-v C-gで入力

鳴らない時(inpurcのbell-style)

set bell-style audible(音を鳴らす)
set bell-style visible(画面を点滅させる)

鳴らない時(端末設定)

image/gnome-terminal.jpg

鳴らない時(スピーカーが無効)

同じホストの別端末に通知

$ tty
/dev/pts/7
$ echo -en ^G > /dev/pts/7
$ echo -en Done.^G^H^H^H^H^H > /dev/pts/7

適当な効果音を鳴らす

CDドライブを開閉する

image/eject.png

Ejectコマンドユーザー会

デスクトップ通知

$ notify-send -t 0 Done.

他の端末に通知(スマホとか別マシンとか)

#!/bin/sh

if [ $1 ]; then
  msg=$1
else
  msg="Done."
fi

curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$msg\"}" https://maker.ifttt.com/trigger/shell_alart/with/key/{{token}} > /dev/null 2>&1

pushbulletに投げた時

image/IFTTT_PUSHBULLET.jpg

IFTTT

https://ifttt.com/search/services

余録

処理を走らせてからやっぱり終了時に教えて欲しいなと言う時(きっともっといい方法ある)

$ sleep 100
^Z
[1]+  停止                  sleep 100
 bg
[1]+ sleep 100 &
$ ps
  PID TTY          TIME CMD
13118 pts/7    00:00:00 bash
16758 pts/7    00:00:00 sleep
16761 pts/7    00:00:00 ps
$ while ps 16758 ; do sleep 5; done; echo "done^G"
  PID TTY      STAT   TIME COMMAND
16758 pts/7    S      0:00 sleep 100
  PID TTY      STAT   TIME COMMAND
16758 pts/7    S      0:00 sleep 100
[1]+  終了                  sleep 100
  PID TTY      STAT   TIME COMMAND
done

終了コードで処理を変える

正常時にはbell1回エラー時には2回
$ 処理 && echo ^G || (echo ^G;sleep 1;echo ^G)

その他

発表後

license等

/