20 个版本
0.3.15 | 2024 年 6 月 18 日 |
---|---|
0.3.13 | 2024 年 5 月 6 日 |
0.3.11 | 2024 年 3 月 4 日 |
0.3.10 | 2023 年 4 月 15 日 |
0.1.6 | 2021 年 10 月 31 日 |
#506 在 命令行工具
116 每月下载量
6.5MB
5K SLoC
hwatch
hwatch - 替代 watch 命令。
描述
hwatch
是一个替代的 watch 命令。它会记录命令执行的结果,并可以显示其历史和差异。
特性
- 当发生差异时,可以保留历史记录,并在以后进行检查。
- 可以检查历史记录中的差异。显示方法可以实时更改。
- 可以将执行结果作为日志(json 格式)输出。
- 提供自定义键盘映射。
- 支持 ANSI 颜色代码。
- 执行结果可以滚动。
- 不仅作为 TUI 应用程序,还可以将差异输出到标准输出。
- 如果发生差异,可以执行指定的额外命令。
安装
macOS (brew)
brew install hwatch
macOS (MacPorts)
sudo port install hwatch
Arch Linux (AUR)
paru -S hwatch
Cargo Install
cargo install hwatch
使用方法
命令
$ hwatch --help
A modern alternative to the watch command, records the differences in execution results and can check this differences at after.
Usage: hwatch [OPTIONS] [command]...
Arguments:
[command]...
Options:
-b, --batch output exection results to stdout
-B, --beep beep if command has a change result
--border Surround each pane with a border frame
--with-scrollbar When the border option is enabled, display scrollbar on the right side of watch pane.
--mouse enable mouse wheel support. With this option, copying text with your terminal may be harder. Try holding the Shift key.
-c, --color interpret ANSI color and style sequences
-r, --reverse display text upside down.
-C, --compress Compress data in memory.
-t, --no-title hide the UI on start. Use `t` to toggle it.
-N, --line-number show line number
--no-help-banner hide the "Display help with h key" message
-x, --exec Run the command directly, not through the shell. Much like the `-x` option of the watch command.
-O, --diff-output-only Display only the lines with differences during `line` diff and `word` diff.
-A, --aftercommand <after_command> Executes the specified command if the output changes. Information about changes is stored in json format in environment variable ${HWATCH_DATA}.
-l, --logfile [<logfile>] logging file
-s, --shell <shell_command> shell to use at runtime. can also insert the command to the location specified by {COMMAND}. [default: "sh -c"]
-n, --interval <interval> seconds to wait between updates [default: 2]
-L, --limit <limit> Set the number of history records to keep. only work in watch mode. Set `0` for unlimited recording. (default: 5000) [default: 5000]
--tab-size <tab_size> Specifying tab display size [default: 4]
-d, --differences [<differences>] highlight changes between updates [possible values: none, watch, line, word]
-o, --output [<output>] Select command output. [default: output] [possible values: output, stdout, stderr]
-K, --keymap <keymap> Add keymap
-h, --help Print help
-V, --version Print version
快捷键
Watch 模式快捷键(默认)。
键 | 操作 |
---|---|
↑, ↓ | 移动选定的屏幕(历史/监视)。 |
pageup, pagedn | 移动选定的屏幕(历史/监视)。 |
home, end | 移动选定的屏幕(历史/监视)。 |
Tab | 切换选择屏幕(历史/监视)。 |
← | 选择监视屏幕。 |
→ | 选择历史屏幕。 |
H | 显示帮助窗口。 |
B | 切换启用/禁用边框。 |
S | 切换启用/禁用边框滚动条。 |
C | 切换颜色。 |
N | 切换行号显示。 |
R | 切换反向模式。 |
M | 切换鼠标支持。 |
D | 切换 diff 模式。 |
T | 切换 UI(历史窗格和标题)。 |
Backspace | 切换历史窗格。 |
Q | 退出 hwatch。 |
0 | 禁用 diff。 |
1 | 切换监视类型 diff。 |
2 | 切换行类型 diff。 |
3 | 切换单词类型 diff。 |
O | 切换输出模式(输出->stdout->stderr)。 |
Shift+O | 仅显示有差异的行(仅限行/单词 diff 模式)。 |
Shift+S | 在历史记录中显示摘要信息。 |
F1 | 仅输出标准输出。 |
F2 | 仅输出标准错误。 |
F3 | 输出结果。 |
+ | 增加间隔。 |
- | 减少间隔。 |
/ | 按字符串过滤历史记录。 |
* | 按正则表达式过滤历史记录。 |
Esc | 取消过滤。 |
Ctrl+c | 取消。 |
自定义按键绑定
可以使用-K
选项自定义按键绑定。格式为keybind=function
。
hwatch -K ctrl-p=history_pane_up -K ctrl-n=history_pane_down command...
可以指定的按键绑定函数如下。
函数 | 描述 |
---|---|
up | 向上移动 |
watch_pane_up | 在监视器面板中向上移动 |
history_pane_up | 在历史面板中向上移动 |
down | 向下移动 |
watch_pane_down | 在监视器面板中向下移动 |
history_pane_down | 在历史面板中向下移动 |
page_up | 向上翻页 |
watch_pane_page_up | 在监视器面板中向上翻页 |
history_pane_page_up | 在历史面板中向上翻页 |
page_down | 向下翻页 |
watch_pane_page_down | 在监视器面板中向下翻页 |
history_pane_page_down | 在历史面板中向下翻页 |
move_top | 移动到顶部 |
watch_pane_move_top | 在监视器面板中移动到顶部 |
history_pane_move_top | 在历史面板中移动到顶部 |
move_end | 移动到底部 |
watch_pane_move_end | 在监视器面板中移动到底部 |
history_pane_move_end | 在历史面板中移动到底部 |
toggle_forcus | 切换焦点窗口 |
forcus_watch_pane | 聚焦监视器面板 |
forcus_history_pane | 聚焦历史面板 |
quit | 退出hwatch |
reset | 过滤重置 |
取消 | 取消 |
help | 显示和隐藏帮助窗口 |
toggle_color | 切换启用/禁用ANSI颜色 |
toggle_line_number | 切换启用/禁用行号 |
toggle_reverse | 切换启用/禁用文本反转 |
toggle_mouse_support | 切换启用/禁用鼠标支持 |
toggle_view_pane_ui | 切换查看标题/历史面板 |
toggle_view_header_pane | 切换查看标题面板 |
toggle_view_history_pane | 切换查看历史面板 |
toggle_border | 切换启用/禁用边框 |
toggle_scroll_bar | 切换启用/禁用滚动条 |
toggle_diff_mode | 切换差异模式 |
set_diff_mode_plane | 设置差异模式面板 |
set_diff_mode_watch | 设置差异模式监视器 |
set_diff_mode_line | 设置差异模式行 |
set_diff_mode_word | 设置差异模式词 |
set_diff_only | 仅设置差异行(仅行/词差异) |
toggle_output_mode | 切换输出模式 |
set_output_mode_output | 设置输出模式输出 |
set_output_mode_stdout | 设置输出模式标准输出 |
set_output_mode_stderr | 设置输出模式标准错误 |
togge_history_summary | 切换历史摘要 |
interval_plus | 间隔+0.5秒 |
interval_minus | 间隔-0.5秒 |
change_filter_mode | 更改过滤模式 |
change_regex_filter_mode | 更改正则表达式过滤模式 |
配置
如果您始终想使用某些命令行选项,您可以在HWATCH
环境变量中设置它们。例如,如果您使用bash
,您可以将以下内容添加到您的.bashrc
export HWATCH="--no-title --color --no-help-banner --border --with-scrollbar"
示例
间隔10秒
使用-n选项指定命令执行间隔。
hwatch -n 3 command...
日志输出
命令执行结果可以以json格式输出为日志。
hwatch -n 3 -l hwatch_log.json command...
当您检查json日志时,您可以使用此脚本轻松检查。
使用shell函数
如果您想定期执行shell函数,您可以使用以下方式指定要执行的shell命令-s。
# bash
hwatch -n 3 -s 'bash -c "source ~/.bashrc"; {COMMAND}' command...
# zsh
hwatch -n 3 -s 'zsh -c "source ~/.zshrc"; {COMMAND}' command...
ANSI颜色代码
如果您想以ANSI颜色代码查看输出,请启用颜色模式。
要启用颜色模式,请使用带有 -c
选项的 hwatch 运行。或者,您可以在执行过程中使用 C 键来启用/禁用颜色模式。
hwatch -n 3 -c command...
diff 查看器
要启用颜色模式,请使用带有 -
选项的 hwatch 运行。
有几种“diff 模式”可供选择。可以使用 D 键进行切换。
hwatch -n 3 -d command...
监视 diff
行 diff
词 diff
历史过滤
您可以使用 / 键按字符串过滤历史,使用 * 键按正则表达式过滤。
运行批处理模式
您可以使用 -
选项将命令 diff 直接输出到 stdout,而不是作为 TUI 应用程序。
hwatch -b command...
依赖项
~35-48MB
~1M SLoC