Gibt es einen in Darwin/OS X nativen Befehl „watch“?

Ich habe ein Skript, das ich versuche, von Linux nach Darwin/OS X zu portieren. Die Linux-Version hängt derzeit vom watchBefehl ab, der anscheinend nicht standardmäßig auf Darwin/OS X installiert ist. Was ist die native Alternative?

Antworten (1)

Es gibt keine native Alternative. watchSie müssen von Homebrew ( brew install watch) oder MacPorts ( ) erwerben , port install watchwenn Sie eine tatsächliche ausführbare Datei benötigen.

Sie können jedoch die Funktion von emulieren watch. Dies kann in einer Standard-Bash-While-Schleife ( aus Stack Overflow von Daniel Pittman ) erreicht werden:

Sie können die grundlegende Funktionalität mit der Shell-Schleife emulieren:

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

Das wird für immer eine Schleife durchlaufen, den Bildschirm löschen, Ihren Befehl ausführen und zwei Sekunden warten - die grundlegende Implementierung von watch your_command.

Sie können noch einen Schritt weiter gehen und ein watch.sh-Skript erstellen, das your_command und sleep_duration als Parameter akzeptieren kann:

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

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

Diese und andere Optionen sind auf Stack Overflow verfügbar.