我有一个脚本,想将其从 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