对于 Darwin/OS X,是否有 `watch` 命令的原生替代品

对于 Darwin/OS X,是否有 `watch` 命令的原生替代品

我有一个脚本,想将其从 Linux 移植到 Darwin/OS X。Linux 版本目前依赖于 watch 命令,而 Darwin/OS X 似乎默认未安装该命令。原生替代方案是什么?

答案1

没有确切的替代品。您可以watch使用您最喜欢的包管理器(homebrew 或 macports)或手动安装 Linux 命令。

watch或者,你可以使用 shell 函数内的一个小循环来推出自己的类似功能,例如:

fakewatch () { while true; do clear; date; ${1}; sleep 2; done; }

然后调用fakewatch ps(替换ps为您想要监视的任何命令)。

答案2

根据@Spiff 的精彩回答,我对其进行了一些改进,以避免每次执行时出现闪烁:

fakewatch () { while true; do DATE=$(date); RESULT=$(${@}); clear; echo "$DATE"; echo "$RESULT"; sleep 5; done; }

这样,我们在打印之前就存储了结果,因此在打印时所有内容都会同时打印

答案3

这个问题有没有办法动态刷新 less 命令?可能有帮助。

对于不支持的操作系统watch(如 Darwin/OS X、Solaris),你可以尝试

less +F FILENAME

这相当于按Shift+F然后less FILENAME继续刷新文件。

答案4

另一种可能性是使用 homebrew 包管理器。请参阅:自制 如果您已经安装了它,那么操作方法很简单:

brew install watch

相关内容