Você pode usar programas de serviços públicos e um shell (como Bash, Zsh ou Fish) para criar aplicativos combinando e encadeando ferramentas menores e especializadas para executar tarefas mais complexas. Isso é frequentemente referido como
shell script ou construir um
pipeline . É uma maneira poderosa de automatizar tarefas e criar aplicativos simples da linha de comando sem a necessidade de uma linguagem de programação completa, como Python ou C ++.
Veja como você pode fazer isso:
1. Utilizando programas de utilidade: *
Processamento de texto: Ferramentas como `Grep`,` sed`, `awk` e` cut` são inestimáveis para manipular arquivos de texto. Você pode filtrar, extrair, transformar e reformar dados dentro de arquivos com eficiência. Por exemplo, você pode usar o `Grep` para encontrar linhas específicas,` sed` para substituir o texto e `awk` para executar cálculos em campos dentro de uma linha.
*
Manipulação do arquivo: `cp`,` mv`, `rm`,` mkdir`, `rmdir`,` find`, `locate` permite que você gerencie arquivos e diretórios. Você pode automatizar tarefas como criar diretórios, copiar arquivos e excluir arquivos de log antigos. `find` é especialmente poderoso para pesquisar arquivos com base em vários critérios.
*
Compressão/arquivamento de dados: `gzip`,` bzip2`, `tar`,` zip` permite que você compacte arquivos e gerencie arquivos. Isso é útil para gerenciar grandes conjuntos de dados ou distribuir aplicativos.
*
utilitários de rede: `wget`,` curl`, `netcat` permitem interagir com recursos de rede, baixar arquivos e enviar dados pela rede. Isso abre a porta para criar aplicativos que interagem com servidores da Web ou outros sistemas remotos.
*
Administração do sistema: `ps`,` top`, `kill`,` df`, `du` fornece informações sobre o sistema e permita o controle sobre os processos. Você pode criar aplicativos que monitoram o desempenho do sistema ou gerenciam processos.
2. A concha como o orquestrador: A concha atua como a cola que une esses programas de utilidade. Ele fornece:
* Execução seqüencial: Você pode listar comandos um após o outro, com a saída de um comando se alimentando da entrada da próxima.
*
tubulação (`|`): Isso permite conectar a saída padrão (STDOUT) de um comando à entrada padrão (STDIN) de outra, criando um pipeline de fluxo de dados.
*
redirecionamento de entrada/saída (`>`, `<`, `>>`): Você pode redirecionar a saída de um comando para um arquivo ou ler a entrada de um arquivo.
*
Estruturas de controle: A maioria das conchas suporta estruturas de controle como `if`,` else`, `for`t e` while` loops, permitindo a lógica e iteração condicional.
*
variáveis: Você pode armazenar valores em variáveis para tornar seus scripts mais flexíveis e reutilizáveis.
*
Funções: Você pode definir blocos reutilizáveis de código para modularizar seus scripts.
Exemplo:Criando um aplicativo simples Digamos que você queira criar um aplicativo que encontre todos os arquivos `.log` em um diretório, extrai linhas contendo" erro "e, em seguida, conta o número de linhas de erro.
`` `BASH
#!/bin/bash
encontre/path/to/logs -name "*.log" -print0 | XARGS -0 GREP -I "ERRO" | wc -l
`` `
Este script usa:
* `find`:para localizar todos os arquivos` .log`. `-Print0` e` XARGS -0` lidar com os nomes de arquivos com espaços corretamente.
* `Grep`:filtrar linhas contendo" erro "(insensível com o caso).
* `wc -l`:para contar as linhas.
Limitações: * O script de shell não é tão poderoso ou eficiente quanto as linguagens de programação completas para aplicações complexas.
* O tratamento de erros pode ser mais desafiador.
* A depuração pode ser mais difícil.
Quando usar scripts de shell: O script de shell é ideal para:
* Automatando tarefas simples a moderadamente complexas.
* Criando pequenos utilitários da linha de comando.
* Aplicativos de prototipagem rapidamente.
* Tarefas envolvendo processamento de texto e manipulação de arquivos.
Ao combinar inteligentemente esses programas de utilidade e os recursos do shell, você pode criar aplicativos de linha de comando surpreendentemente sofisticados. Lembre-se de tornar seus scripts legíveis e bem contratados para manutenção.