watchコマンドを作ってみた

30分プログラム、その680。watchコマンドを作ってみました。

watchコマンドって知っていますか?

$ watch hogehoge

とやると、一定時間ごとにhogehogeを実行して画面を更新してくれるコマンドです。
watch dateで時計変わりにしたり、watch lsでファイルが作られる様子を監視したりと、なかなか便利です。

というわけで、これを作ってみましょう。

使い方

$ python watch.py w


ソースコード

#! /usr/bin/python
# -*- mode:python; coding:utf-8 -*-
#
# watch.py -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/10/19 21:21:15
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#
import subprocess
import time
import sys
from curses import *

def shell(cmds):
    return subprocess.Popen(cmds, stdout = subprocess.PIPE).communicate()[0]

def watch(cmds):
    screen = initscr()
    noecho()
    while 1:
        screen.clear()
        screen.addstr(0,0,"Every 2.0s")
        screen.addstr(1,0,shell(cmds))
        screen.refresh()
        time.sleep(2)

watch(sys.argv[1:])