我正在寻找在Mac OS x上复制Linux 'watch'命令的最佳方法。我想每隔几秒钟运行一个命令,使用'tail'和'sed'对输出文件的内容进行模式匹配。
我在Mac电脑上最好的选择是什么?不下载软件能做到吗?
我正在寻找在Mac OS x上复制Linux 'watch'命令的最佳方法。我想每隔几秒钟运行一个命令,使用'tail'和'sed'对输出文件的内容进行模式匹配。
我在Mac电脑上最好的选择是什么?不下载软件能做到吗?
当前回答
Linux上可用的watch命令在macOS上不存在。如果你不想使用brew,你可以将这个bash函数添加到你的shell配置文件中。
# execute commands at a specified interval of seconds
function watch.command {
# USAGE: watch.commands [seconds] [commands...]
# EXAMPLE: watch.command 5 date
# EXAMPLE: watch.command 5 date echo 'ls -l' echo 'ps | grep "kubectl\\\|node\\\|npm\\\|puma"'
# EXAMPLE: watch.command 5 'date; echo; ls -l; echo; ps | grep "kubectl\\\|node\\\|npm\\\|puma"' echo date 'echo; ls -1'
local cmds=()
for arg in "${@:2}"; do
echo $arg | sed 's/; /;/g' | tr \; \\n | while read cmd; do
cmds+=($cmd)
done
done
while true; do
clear
for cmd in $cmds; do
eval $cmd
done
sleep $1
done
}
https://gist.github.com/Gerst20051/99c1cf570a2d0d59f09339a806732fd3
其他回答
你可以用shell循环来模拟基本的功能:
while :; do clear; your_command; sleep 2; done
这将永远循环,清除屏幕,运行命令,并等待两秒钟-基本的watchyour_command实现。
你可以更进一步,创建一个watch.sh脚本,它可以接受your_command和sleep_duration作为参数:
#!/bin/bash
# usage: watch.sh <your_command> <sleep_duration>
while :;
do
clear
date
$1
sleep $2
done
或者,在你的~/。bashrc文件:(
function watch {
while :; do clear; date; echo; $@; sleep 2; done
}
如果手表不想通过安装
brew install watch
有另一个类似的/复制版本,安装和工作完美为我
brew install visionmedia-watch
https://github.com/tj/watch
Linux上可用的watch命令在macOS上不存在。如果你不想使用brew,你可以将这个bash函数添加到你的shell配置文件中。
# execute commands at a specified interval of seconds
function watch.command {
# USAGE: watch.commands [seconds] [commands...]
# EXAMPLE: watch.command 5 date
# EXAMPLE: watch.command 5 date echo 'ls -l' echo 'ps | grep "kubectl\\\|node\\\|npm\\\|puma"'
# EXAMPLE: watch.command 5 'date; echo; ls -l; echo; ps | grep "kubectl\\\|node\\\|npm\\\|puma"' echo date 'echo; ls -1'
local cmds=()
for arg in "${@:2}"; do
echo $arg | sed 's/; /;/g' | tr \; \\n | while read cmd; do
cmds+=($cmd)
done
done
while true; do
clear
for cmd in $cmds; do
eval $cmd
done
sleep $1
done
}
https://gist.github.com/Gerst20051/99c1cf570a2d0d59f09339a806732fd3
我从这里开始回答:
bash -c 'while [ 0 ]; do <your command>; sleep 5; done'
但你最好装个手表,因为这不是很干净……