Last change
on this file was 2, checked in by Yuri Dario, 15 years ago |
Initial import for vendor code.
|
-
Property svn:eol-style
set to
native
|
File size:
1.5 KB
|
Line | |
---|
1 | #! /usr/bin/env python
|
---|
2 |
|
---|
3 | """repeat <shell-command>
|
---|
4 |
|
---|
5 | This simple program repeatedly (at 1-second intervals) executes the
|
---|
6 | shell command given on the command line and displays the output (or as
|
---|
7 | much of it as fits on the screen). It uses curses to paint each new
|
---|
8 | output on top of the old output, so that if nothing changes, the
|
---|
9 | screen doesn't change. This is handy to watch for changes in e.g. a
|
---|
10 | directory or process listing.
|
---|
11 |
|
---|
12 | To end, hit Control-C.
|
---|
13 | """
|
---|
14 |
|
---|
15 | # Author: Guido van Rossum
|
---|
16 |
|
---|
17 | # Disclaimer: there's a Linux program named 'watch' that does the same
|
---|
18 | # thing. Honestly, I didn't know of its existence when I wrote this!
|
---|
19 |
|
---|
20 | # To do: add features until it has the same functionality as watch(1);
|
---|
21 | # then compare code size and development time.
|
---|
22 |
|
---|
23 | import os
|
---|
24 | import sys
|
---|
25 | import time
|
---|
26 | import curses
|
---|
27 |
|
---|
28 | def main():
|
---|
29 | if not sys.argv[1:]:
|
---|
30 | print __doc__
|
---|
31 | sys.exit(0)
|
---|
32 | cmd = " ".join(sys.argv[1:])
|
---|
33 | p = os.popen(cmd, "r")
|
---|
34 | text = p.read()
|
---|
35 | sts = p.close()
|
---|
36 | if sts:
|
---|
37 | print >>sys.stderr, "Exit code:", sts
|
---|
38 | sys.exit(sts)
|
---|
39 | w = curses.initscr()
|
---|
40 | try:
|
---|
41 | while True:
|
---|
42 | w.erase()
|
---|
43 | try:
|
---|
44 | w.addstr(text)
|
---|
45 | except curses.error:
|
---|
46 | pass
|
---|
47 | w.refresh()
|
---|
48 | time.sleep(1)
|
---|
49 | p = os.popen(cmd, "r")
|
---|
50 | text = p.read()
|
---|
51 | sts = p.close()
|
---|
52 | if sts:
|
---|
53 | print >>sys.stderr, "Exit code:", sts
|
---|
54 | sys.exit(sts)
|
---|
55 | finally:
|
---|
56 | curses.endwin()
|
---|
57 |
|
---|
58 | main()
|
---|
Note:
See
TracBrowser
for help on using the repository browser.