是否有“watch”命令的本地替代方法;达尔文/OS X

voi*_*ces 4 bsd compatibility bash-scripting macos

我有一个脚本,我试图从 Linux 移植到 Darwin/OS X。Linux 版本目前依赖于 watch 命令,默认情况下它似乎没有安装在 Darwin/OS X 上。什么是原生替代品?

Spi*_*iff 8

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

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

fakewatch () { while true; do clear; date; ${1}; sleep 2; done; }
Run Code Online (Sandbox Code Playgroud)

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


小智 5

基于@Spiff 很棒的答案,我对其进行了一些改进,以避免每次执行时闪烁/闪烁:

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

这样,我们在打印之前存储结果,以便在打印时同时打印所有内容