Существует ли команда `watch`, встроенная в Darwin / OS X?

14

У меня есть сценарий, который я пытаюсь перенести с Linux на Darwin / OS X. В настоящее время версия Linux зависит от watchкоманды, которая, по-видимому, не установлена ​​на Darwin / OS X по умолчанию. Какая нативная альтернатива?

голоса
источник

Ответы:

19

Нет родной альтернативы. Вы должны приобрести watchс помощью Homebrew ( brew install watch) или MacPorts ( port install watch), если вам требуется фактический исполняемый файл.

Однако вы можете эмулировать функцию watch. Это может быть выполнено в стандартном цикле bash while ( из Stack Overflow, автор Daniel Pittman ):

Вы можете эмулировать основные функции с помощью цикла оболочки:

while :; do clear; your_command; sleep 2; done

Это зациклится навсегда, очистит экран, запустит вашу команду и подождет две секунды - базовая реализация вашей_команды.

Вы можете сделать еще один шаг и создать сценарий watch.sh, который может принимать your_command и sleep_duration в качестве параметров:

#!/bin/bash
# usage: watch.sh <your_command> <sleep_duration>

while :;
  do
  clear
  date
  $1
  sleep
  $2
done

Это и другие варианты доступны в переполнении стека.

NetherLinks
источник