У меня есть сценарий, который я пытаюсь перенести с Linux на Darwin/OS X. В настоящее время версия Linux зависит от команды watch, которая, по-видимому, не установлена в Darwin/OS X по умолчанию. Какая родная альтернатива?
2 ответа
4
Там нет точной замены. Вы можете установить команду Linux watch
с вашим любимым менеджером пакетов (homebrew или macports) или вручную.
Или вы можете свернуть свою собственную функциональность, похожую на watch
с помощью небольшого цикла внутри функции оболочки, например:
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; }
Таким образом, мы сохраняем результат перед его печатью, поэтому во время печати все печатается одновременно