为 leave 命令指定需要离开的时间,使用 24 小时的格式:HHMM 。它运行于后台,并将在给定时间之前的 5 分钟时,在终端中输出提醒您准备离开的信息 。如果在离开前 1 分钟时,您依然处于登录状态,它会再次显示这个提醒消息,然后是在应该离开的时刻,并且在此之后每隔 1 分钟它都会发送提醒消息,直至您注销登录(或者终止这个 leave 进程) 。清单 4 给出了一个示例 。当您注销时,将终止这个 leave 进程 。
清单 4. 运行 leave 命令的示例
$ leave
When do you have to leave? 1830
Alarm set for Fri Aug 4 18:30. (pid 1735)
$ date"Time now: %l:%M%p"
Time now: 6:20PM
$
You have to leave in 5 minutes.
$ date"Time now: %l:%M%p"
Time now: 6:25PM
$
Just one more minute!
$ date"Time now: %l:%M%p"
Time now: 6:29PM
$
Time to leave!
$ date"Time now: %l:%M%p"
Time now: 6:30PM
$
Time to leave!
$ date"Time now: %l:%M%p"
Time now: 6:31PM
$ kill 1735
$ sleep 120; date"Time now: %l:%M%p"
Time now: 6:33PM
$
您可以提供相对时间 。如果您希望在从现在 开始的某个时间后离开,可以在时间参数前面加上。所以,要提醒在两小时后离开,可以输入下面的命令:
$ leave0200
要以分钟为单位提供时间,可以让小时字段为 0 。例如,如果您知道在 10 分钟之后必须离开,可以输入:
$ leave0010
您还可以指定离开时间作为参数,这使得 leave 成为脚本中非常有用的命令,特别是在 Shell 启动文件中 。例如,如果您通常工作到下午 5 点,但是在星期 5 时必须在下午 4 点离开单位,那么您可以在 Shell 启动文件中设置一个周提醒:
if test "`date%a`" = "Fri"then leave 1600; fi
您可以在启动脚本中加入一个简单的 leave 语句,不带任何参数 。每次登录 Shell 时,您可以输入离开的时间,如果您按下 Enter 键,即没有指定任何值,那么 leave 将会退出,而不会设置提醒 。
为自己发送电子邮件提醒
您还可以使用文本消息为自己发送提醒 。建立一则提醒消息,有些时候非常有用,您将在当前登录会话或下次登录时了解到这一点 。
以前,旧的 elm 邮件代理附带一个工具,它允许您使用电子邮件发送备忘录,实际上是提醒发送者的脚本、主题和正文文本 。通过基于时间的方法,使用命令行 mailx 工具向自己发送邮件,可以轻松地复制这个过程 。(在一些 UNIX 系统中,使用 mail 来代替 mailx 。)
将您的电子邮件地址(或您在本地系统中的用户名,如果您在本地系统中读取邮件)作为参数提供,然后,您可以在提示的 Subject 行中输入提醒消息(如果它非常短),如清单 5 所示 。如果提醒消息不适合于 Subject 行,那么可以在消息正文中输入它 。单独一行 ^D,表示退出 mailx 并发送邮件 。
清单 5. 使用 mailx 命令向自己发送提醒的示例
$ mailx joe
Subject: Call VP on Monday
^D
Cc:
Null message body; hope that's ok
$
实现重复性交互工作的自动化
Expect 语言(是 Tcl/Tk 的扩展,还有其他的变种可供使用)用来编写与交互式程序运行会话的脚本,而该脚本就好像是一个用户,直接与程序进行交互 。
Expect 脚本可以为您节省大量的时间,特别是当您发现自己正在进行重复性任务的时候 。Expect 可以与多个程序进行交互,包括 Shell 和基于文本的 Web 浏览器,它可以启动远程会话,并通过网络进行执行 。
例如,如果您需要频繁地连接到本地内部网中的系统,以运行特定的程序,比如 test-servers 命令,您可以使用一个名为 servmaint 的 Expect 脚本实现自动化,该脚本的内容如清单 6 所示 。
推荐阅读
- UNIX 新手指南,第 1 部分: 文件维护工具
- 使用 UNIX find 命令的高级技术
- 对话 UNIX: 更多 shell 脚本技术
- 对话 UNIX: !$#@*%
- UNIX 共享内存应用中的问题及解决方法
- 用Syslog 记录UNIX和Windows日志的方法
- 本周五Unix系统将发生时间错误
- 如何在Unix结果中抽取想要的参数
- 同步 UNIX 文件
- /dev/tty文件在Unix操作系统中的妙用
