Você veio ao lugar certo se quiser aprender a executar comandos do Linux quando qualquer arquivo em um diretório de trabalho for alterado e quando novos arquivos forem criados.
No Linux, você pode usar o cron para agendar comandos para serem executados em determinados horários.
Mas e se você precisar que comandos sejam executados toda vez que um arquivo for modificado ou um novo arquivo for adicionado a um diretório?
Isso também é facilmente alcançável, e existem algumas ferramentas de linha de comando para fazer isso.
Vamos começar!
últimas postagens
watchexec
watchexec é uma ferramenta útil e independente que monitora um determinado diretório de trabalho e executa um comando se detectar quaisquer alterações, como atualização de arquivo ou criação de novo arquivo.
Características
- Não requer uma linha de comando complexa envolvendo xargs (argumentos estendidos).
- Verifica as alterações no diretório atual e em todos os subdiretórios em tempo real.
- Não há necessidade de um tempo de execução de linguagem e não está conectado a nenhuma linguagem ou ecossistema específico.
- .gitignore e .ignore são usados por padrão para decidir para quais arquivos ignorar notificações.
- Os grupos de processos são usados para acompanhar os programas de bifurcação.
- A visualização de arquivos com uma determinada extensão é suportada.
- É compatível com OS X, Linux e Windows.
- Filtrando e ignorando eventos com base em glob (é possível encontrar padrões de pesquisa de arquivos para encontrar nomes de arquivos parcialmente idênticos.
Instalação do watchexec
Para instalar facilmente a ferramenta watchexec, cole o seguinte link no terminal ou em um prompt de shell e pressione enter.
Linux e macOS
curl -sS https://webinstall.dev/watchexec | bash
Após a instalação bem-sucedida, o caminho será exibido na tela. No meu caso, esta ferramenta foi instalada em /root/.local/bin
┌──(root💀kali)-[~] └─# curl -sS https://webinstall.dev/watchexec | bash Thanks for using webi to install '[email protected]' on 'Linux/x86_64'. Have a problem? Experience a bug? Please let us know: https://github.com/webinstall/webi-installers/issues Lovin' it? Say thanks with a Star on GitHub: https://github.com/webinstall/webi-installers Found /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Extracting /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Installing to /root/.local/opt/watchexec-vcli-v1.18.9/bin/watchexec Installed 'watchexec vcli-v1.18.9' as /root/.local/bin/watchexec
E após a instalação, navegue até o repositório .local/bin e verifique se o arquivo está lá ou não usando esses comandos.
cd .local/bin ls
A próxima etapa é exportar o caminho para usar a ferramenta watchexec.
export PATH="/root/.local/bin:$PATH"
Para executar, basta digitar watchexec no terminal como usuário root. Use este comando para ver quais sinalizadores e opções podem ser usados com a ferramenta watchexec.
watchexec --help
Comandos de exemplo de exemplo
- Chame ls -la quando qualquer arquivo for alterado neste diretório/subdiretório. Este comando mostra todos os arquivos presentes no diretório sempre que detecta alguma modificação.
watchexec -- ls -la
- Sempre que qualquer um dos arquivos de extensão python, js, CSS ou Html no diretório atual for alterado, execute o comando. Aqui você pode passar qualquer comando que desejar. As extensões de arquivo devem ser separadas por uma vírgula.
watchexec --exts py,js,css,html <command>
- Execute o comando quando qualquer arquivo em lib ou src for alterado. A opção “-w” observa um arquivo ou diretório específico no sistema.
watchexec -w lib -w src <command>
- Chame/reinicie qualquer serviço quando qualquer arquivo no diretório atual (e todos os subdiretórios) for alterado.
watchexec -e html -r tor watchexec -e js,py -r mysql
Aqui, a opção “-r” reinicia o processo ou serviço se estiver em execução no sistema.
Para mais exemplos de uso do watchexec, você pode visitar o repositório oficial do GitHub.
entrada
entrada é um utilitário de linha de comando simples e excelente para executar comandos arbitrários quando ocorrer alguma modificação em um determinado diretório.
“entr” significa Event Notify Test Runner. Esta ferramenta foi criada com o objetivo de fazer feedback rápido e testes automatizados.
Instalação
entr está pré-instalado na distribuição Linux. Caso esteja faltando, você precisa instalá-lo manualmente.
Esta ferramenta é simples de usar e pode ser instalada com o seguinte comando.
sudo apt-get install entr
Ou você também pode instalá-lo clonando o oficial Repositório Git.
git clone https://github.com/eradman/entr.git
Em seguida, navegue até esse diretório e instale os requisitos usando os comandos abaixo.
./configure make test make install
Para ver as opções de compilação disponíveis, execute ./configure -h
Comandos de exemplo de exemplo
Para ver as opções e argumentos disponíveis para o comando entr. Use o seguinte comando.
man entr
Este comando exibe o manual do usuário para o comando entr.
NAME entr — run arbitrary commands when files change SYNOPSIS entr [-acdnprsz] utility [argument /_ ...] DESCRIPTION A list of files provided on standard input, and the utility is executed using the supplied arguments if any of them change. entr waits for the child process to finish before responding to subsequent file system events. A TTY is also opened before entering the watch loop in order to support interac‐ tive utilities. The arguments are as follows: -a Respond to all events which occur while the utility is running. Without this option, entr consolidates events in order to avoid looping. This option has no effect in conjunction with the -r flag. -c Clear the screen before invoking the utility specified on the command line. Specify twice to erase the scroll back buffer. -d Track the directories of regular files provided as input and exit if a new file is added. This option also enables directories to be specified explicitly. If specified twice, all new entries to a directory are recognized, otherwise files with names beginning with ‘.’ are ig‐ nored. -n Run in non-interactive mode. In this mode entr does not attempt to read from the TTY or change its properties. -p Postpone the first execution of the utility until a file is modified. Manual page entr(1) line 1 (press h for help or q to quit)
- Para iniciar e recarregar automaticamente um servidor MySQL quando qualquer arquivo JavaScript for alterado no diretório de trabalho. Cada vez que as alterações são salvas no arquivo, entr recarrega o servidor MySQL.
ls *.js | entr -r mysql
- Para recarregar automaticamente um servidor web ou encerrar se o servidor sair.
$ ls * | entr -rz ./httpd
Para mais detalhes e exemplos no comando entr, você pode visitar o site oficial Repositório do GitHub.
Palavras finais 👩💻
Espero que você tenha achado este artigo muito útil para aprender como executar comandos do Linux quando qualquer arquivo em um determinado diretório é alterado e quando novos arquivos são criados.
Você também pode estar interessado em aprender como remover arquivos e diretórios no Linux.