Szukam najlepszego sposobu na zduplikowanie komendy Linux „obserwuj” w systemie Mac OSX. Chciałbym uruchamiać polecenie co kilka sekund, aby wzorować dopasowanie do zawartości pliku wyjściowego za pomocą „tail” i „sed”.
Jaka jest moja najlepsza opcja na komputerze Mac i czy można tego dokonać bez pobierania oprogramowania?
macos
bash
automation
watch
joseph.hainline
źródło
źródło
Odpowiedzi:
Możesz emulować podstawową funkcjonalność za pomocą pętli powłoki:
To zapętli się na zawsze, wyczyści ekran, uruchomi polecenie i zaczeka dwie sekundy - podstawowa
watch your_command
implementacja.Możesz pójść o krok dalej i stworzyć
watch.sh
skrypt, który będzie akceptowałyour_command
isleep_duration
jako parametry:źródło
your_command
nayour_command 2>&1|head -10
sleep ${2:-1}
aby interwał był opcjonalny.echo "$(date)"
równoważne zdate
?watch
gdy wyjście jest więcej niż jednym ekranem. Pokazuje tylko koniec, awatch
tylko górę. (Żadne z nich nie jest idealne)Z zainstalowanym Homebrew :
brew install watch
źródło
brew
na komputerze Mac.watch
: stackoverflow.com/questions/13593771/...watch
Wydaje się, że to z naparu nie odczytuje aliasów użytkownika. Podczas wykonywaniawatch somealias
pojawia się polecenie, którego nie znaleziono.watch [command]
skorzystanie zwatch somealias
niego, zakładając, żesomealias
jest to polecenie, które można uruchomić w terminalu.Użyj macports :
źródło
watch
bezpośrednie użycie polecenia.watch
polecenie zostało zablokowane w MacPorts?powyższe powłoki załatwi sprawę, możesz nawet przekonwertować je na alias (może być konieczne zawinięcie funkcji do obsługi parametrów)
Przykłady:
Alternatywnie, homebrew może zainstalować zegarek ze strony http://procps.sourceforge.net/
źródło
Być może „oglądanie” nie jest tym, czego chcesz. Prawdopodobnie chcesz poprosić o pomoc w rozwiązaniu problemu, a nie we wdrożeniu rozwiązania! :)
Jeśli Twoim prawdziwym celem jest wyzwalanie akcji na podstawie tego, co widać z
tail
polecenia , możesz to zrobić jako część samego ogona. Zamiast „okresowo”watch
uruchamiać kod na żądanie .Pamiętaj, że
tail -F
nadal będzie śledzić plik dziennika, nawet jeśli zostanie on obrócony przez newsyslog lub logrotate. Chcesz użyć tego zamiast małych litertail -f
. Sprawdźman tail
szczegóły.To powiedziawszy, jeśli naprawdę chcesz okresowo uruchamiać komendę, inne podane odpowiedzi można przekształcić w krótki skrypt powłoki:
źródło
watch 2 cat *
rozszerza parametry przed uruchomieniem skryptu, więc w katalogu z plikami „foo” i „bar” uruchamiałbyś sięcat foo bar
co 2 sekundy. Jakiego zachowania się spodziewałeś?*
bez przekazywania go do uruchomionego polecenia. Spróbuj uruchomić:mkdir /tmp/zz; touch /tmp/zz/foo; watch -n 2 ls -l /tmp/zz/*
w jednym oknie. Gdy to działa, możesztouch /tmp/zz/bar
w innym oknie. Sprawdź, czy Twój „zegarek” widzi zmianę w pierwszym oknie. Nie sądzę, że tak będzie. To nie dla mnie. Nie ma to nic wspólnego z Ubuntu vs OSX lub Linux vs Unix, jest to zachowaniebash
samego siebie.watch "ls -l /tmp/zz/*"
ale jeśli pamiętasz o cudzysłowach, to również działa ze skryptem. :)Idąc z odpowiedzią stąd :
Ale naprawdę lepiej jest zainstalować zegarek, ponieważ nie jest to zbyt czyste ...
źródło
brew install watch
Jeśli zegarek nie chce instalować przez
Jest kolejna podobna / skopiowana wersja, która zainstalowała się i działała idealnie dla mnie
https://github.com/tj/watch
źródło
Lub w twoim ~ / .bashrc
źródło
Miałem podobny problem.
Kiedy googlowałem, ostatnio natknąłem się na ten link. To nie jest dokładnie „instalacja oprogramowania”, po prostu pobranie pliku binarnego dla polecenia „obserwuj”.
Link to polecenie Pobierz zegarek dla OSX
źródło
Oto nieco zmieniona wersja tej odpowiedzi, która:
Aby go użyć:
~/bin/watch
chmod 700 ~/bin/watch
w terminalu, aby był wykonywalny.watch 1 echo "hi there"
~ / bin / watch
źródło
Spróbuj tego:
źródło
aby zapobiec migotaniu, gdy wykonanie głównego polecenia zajmuje zauważalny czas, możesz uchwycić wyjście i wyczyścić ekran dopiero po jego zakończeniu.
function watch {while :; do a=$($@); clear; echo "$(date)\n\n$a"; sleep 1; done}
następnie użyj go przez:
watch istats
źródło
Użyj menedżera pakietów nix !
Zainstaluj nix, a następnie
nix-env -iA nixpkgs.watch
powinien on być dostępny do użycia po wykonaniu instrukcji instalacji (w tym w źródle. "$HOME/.nix-profile/etc/profile.d/nix.sh"
w powłoce).źródło