Eu tenho um script que estou tentando portar do Linux para o Darwin / OS X. A versão do Linux atualmente depende do comando watch, que não parece estar instalado no Darwin / OS X por padrão. Qual é a alternativa nativa?
fonte
Eu tenho um script que estou tentando portar do Linux para o Darwin / OS X. A versão do Linux atualmente depende do comando watch, que não parece estar instalado no Darwin / OS X por padrão. Qual é a alternativa nativa?
Não há substituição exata. Você pode instalar o watch
comando Linux com seu gerenciador de pacotes favorito (homebrew ou macports) ou manualmente.
Ou você pode rolar sua própria watch
funcionalidade com um pequeno loop dentro de uma função shell, como:
fakewatch () { while true; do clear; date; ${1}; sleep 2; done; }
Em seguida, chame fakewatch ps
(substitua ps
por qualquer comando que deseja assistir).
Com base na resposta incrível do @Spiff, eu a aprimorei um pouco para evitar oscilações / piscadas em cada execução:
fakewatch () { while true; do DATE=$(date); RESULT=$(${@}); clear; echo "$DATE"; echo "$RESULT"; sleep 5; done; }
Dessa forma, armazenamos o resultado antes de imprimi-lo, para que, no momento da impressão, tudo seja impresso ao mesmo tempo