bash 使用 GNU less 循环,每 2 分钟刷新一次
bash loop with GNU less that refreshes every 2 minutes
我有一台 linux 机器,它有一个数据文件夹和一个脚本,该脚本可以根据文件夹 运行 不断变化的内容生成报告 xlsx 电子表格文件。我使用 xlsx2tsv 脚本将其转换为 tsv 文本,所需时间不到一秒。该脚本大约需要 1 分钟来生成电子表格文件,我希望有一个终端屏幕在 GNU less 缓冲区中显示 table 的结果,我可以在其中使用光标四处移动,并使用 /search
、等内容的最新版本。
目前我有一个 bash while true; do
循环,它首先计算脚本的内容,然后将其转换为 tsv 并将其通过管道传输到 GNU less
。然后在另一个终端屏幕中,我有一个 while true; do
循环,每 2 分钟就会终止 less
命令。但这让我有 1 分钟的闲置时间,我正在等待电子表格更新,然后才能使用 less
.
导航内容
我想优化此设置,以便在后台生成一个新的电子表格,而不是在我终止 less 命令时,而是在 1 分钟前开始,以便更新的 less
命令总是给我一个我可以浏览的工作副本。理想情况下无需为其创建第三个终端 window。
有什么想法吗?也许 GNU 并行?
当前设置:
# screen in the data folder with less command
while true; do $HOME/script -dir $PWD && xlsx2tsv $(ls $PWD/*.xlsx) 1 | column -t | less -S -N; sleep 0.5; done
# screen 2 with the less killing
while true; do pkill less; sleep 120; done
我的 less 手册页是关于 "R" 命令的
R Repaint the screen, discarding any buffered input. Useful if the file is changing while it
is being viewed.
所以,只需点击 R 即可刷新。
while true; do
(sleep 0.5
$HOME/script -dir $PWD &&
xlsx2tsv $(ls $PWD/*.xlsx) 1 |
column -t > new;
mv new old;
killall less
) &
less -S -N old
done
我有一台 linux 机器,它有一个数据文件夹和一个脚本,该脚本可以根据文件夹 运行 不断变化的内容生成报告 xlsx 电子表格文件。我使用 xlsx2tsv 脚本将其转换为 tsv 文本,所需时间不到一秒。该脚本大约需要 1 分钟来生成电子表格文件,我希望有一个终端屏幕在 GNU less 缓冲区中显示 table 的结果,我可以在其中使用光标四处移动,并使用 /search
、等内容的最新版本。
目前我有一个 bash while true; do
循环,它首先计算脚本的内容,然后将其转换为 tsv 并将其通过管道传输到 GNU less
。然后在另一个终端屏幕中,我有一个 while true; do
循环,每 2 分钟就会终止 less
命令。但这让我有 1 分钟的闲置时间,我正在等待电子表格更新,然后才能使用 less
.
我想优化此设置,以便在后台生成一个新的电子表格,而不是在我终止 less 命令时,而是在 1 分钟前开始,以便更新的 less
命令总是给我一个我可以浏览的工作副本。理想情况下无需为其创建第三个终端 window。
有什么想法吗?也许 GNU 并行?
当前设置:
# screen in the data folder with less command
while true; do $HOME/script -dir $PWD && xlsx2tsv $(ls $PWD/*.xlsx) 1 | column -t | less -S -N; sleep 0.5; done
# screen 2 with the less killing
while true; do pkill less; sleep 120; done
我的 less 手册页是关于 "R" 命令的
R Repaint the screen, discarding any buffered input. Useful if the file is changing while it is being viewed.
所以,只需点击 R 即可刷新。
while true; do
(sleep 0.5
$HOME/script -dir $PWD &&
xlsx2tsv $(ls $PWD/*.xlsx) 1 |
column -t > new;
mv new old;
killall less
) &
less -S -N old
done