当前位置: 首页 > 面试题库 >

监视文件夹中文件更改的linux脚本(就像autospec一样!)

南门烈
2023-03-14
问题内容

我想在文件更改时自动启动构建。

我已经在Ruby中使用了autospec(RSpec),并且喜欢它。

如何在bash中完成?


问题答案:

阅读其他帖子的回复后,我发现了一个帖子(现已消失),我创建了这个脚本:-

#!/bin/bash

sha=0
previous_sha=0

update_sha()
{
    sha=`ls -lR . | sha1sum`
}

build () {
    ## Build/make commands here
    echo
    echo "--> Monitor: Monitoring filesystem... (Press enter to force a build/update)"
}

changed () {
    echo "--> Monitor: Files changed, Building..."
    build
    previous_sha=$sha
}

compare () {
    update_sha
    if [[ $sha != $previous_sha ]] ; then changed; fi
}

run () {
    while true; do

        compare

        read -s -t 1 && (
            echo "--> Monitor: Forced Update..."
            build
        )

    done
}

echo "--> Monitor: Init..."
echo "--> Monitor: Monitoring filesystem... (Press enter to force a build/update)"
run


 类似资料:
  • 在我的项目中,我使用PM2重新启动node.js,它工作得很好。 但是,我需要观察文件夹的变化,启动脚本,而不是在退出后重新启动它。 为了简单起见,我对i18n使用yml。我的目标是,当我在yml文件中进行更改时,运行脚本将其转换为json,仅此而已。等待yml文件中的新更改。 PM2可以工作,但它在每次退出后一次又一次地尝试重新启动脚本。 id为[1]且pid为[28803]的PM2应用程序[i

  • 我试图构建一个应用程序,监视文件夹及其子文件夹,以检测文件的创建或修改。要观看的文件总数将日益增加。 我曾尝试使用java nio WatchService和apache常见的FileAlteration观察者。WatchService有时会在WatchKey被获取之后和重置之前发生文件创建/修改时丢失事件。由于FileAlterationeller是基于轮询的,因此当文件计数增加时性能也会下降。

  • 问题内容: 如何在Linux中更改.eclipse文件夹?我尝试添加此行: 在eclipse.ini的顶部,但是它不起作用。我也尝试将其添加到eclipse.ini中的其他各个位置,但还是没有运气。 编辑 我添加了这一行: -vmargs的正下方。当Eclipse启动时,它现在从正确的.eclipse位置读取,如果.eclipse不存在,它将创建它。不幸的是,在Eclipse加载之后,在我的主文件

  • 问题内容: 我正在尝试编写一个node.js脚本,该脚本监视文件目录中的更改,然后打印更改的文件。如何修改此脚本,以便它监视目录(而不是单个文件),并在更改文件时显示目录中的文件名? 问题答案: 试试Chokidar: Chokidar仅使用fs即可查看文件,从而解决了一些跨平台问题。

  • 问题内容: 我想更改特定文件夹中文件的扩展名。我在论坛上阅读了有关此主题的信息。使用“确实”的想法,我编写了以下代码,我希望它可以工作,但不能。我很感谢您为我的失误提供任何指导。 问题答案: 在对源文件是不必要的,因为只需要在源和目标路径来完成这项工作。而且,始终返回,因此调用其返回值没有任何意义。 我简单地删除了两个。检查是否适合您。

  • 问题内容: 我在这里写的主要是关于从哪里开始的建议。我已经实现了一个类,该类将使用Java的WatchService递归监视目录。它可以很好地检测更改,但是我注意到了一个致命的缺陷:我无法删除包含正在监视的目录的正在监视的目录。这似乎是WatchService的限制。 我还稍微研究了Apache的VFS FileListener,但是在花了大约6个小时的时间来围绕它构建某种包装之前,我想也许我只是