Есть ли нативная альтернатива команде `watch`? для Дарвина / OS X

1199
tjt263

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

1

2 ответа на вопрос

4
Spiff

There's no exact replacement. You could install the Linux watch command with your favorite package manager (homebrew or macports), or manually.

Or you could roll your own watch-like functionality with a small loop inside a shell function, like:

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

Then call fakewatch ps (replace ps with whatever command you want to watch).

1
Jorge Chip

Основываясь на потрясающем ответе @Spiff, я немного его улучшил, чтобы избежать мерцания / мигания при каждом выполнении:

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

Таким образом, мы сохраняем результат перед его печатью, поэтому во время печати все печатается одновременно