Estamos tão acostumados com Interfaces Gráficas de Usuário (Graphical User Interface, GUI) que acabamos deixando passar as maravilhas que podem ser realizadas com uma Interface de Linha de Comando (Command-Line Interface, CLI). Além da possibilidade de automatizar tarefas e da maior liberdade garantida pelo acesso às funcionalidades e serviços do sistema operacional, a Interface de Linha de Comando também é uma ferramenta poderosa para o processamento de dados. E com a crescente fama da Ciência de Dados, essa funcionalidade não pode passar despercebida.
Nesse artigo pretendo demonstrar a importância da CLI para a Ciência de Dados e por que devemos aprender a usá-la nesse intuito, ensinando alguns conceitos básicos relacionados ao tratamento de dados.
OBS.: Todos os códigos abaixo foram feitos para o shell Bash mas a maioria é aplicável em outros shells.
Comandos Básicos
Antes de iniciarmos vamos fazer uma pequena revisão dos comandos de shell mais utilizados:
-
ls [OPÇÃO]... [ARQUIVO]...
: Lista as informações sobre osARQUIVO
s (por padrão aqueles que estão dentro do diretório). Ordena as entradas em ordem alfabetica se nem-cftuvSUX
nem--sort
foram especificados.
Principais argumentos:
-a, –all { inclui arquivos que começam com . }
-l { lista arquivos no formato longo }
cd [-L|[-P [-e]] [-@]] [dir]
: Muda o diretório de trabalho do shell. O padrão é o diretório HOME.mkdir [OPÇÃO]...DIRETÓRIO...
: Cria osDIRETÓRIO
s, caso eles ainda não existam.rmdir [OPÇÃO]...DIRETORIO...
: Remove osDIRETÓRIO
s, caso eles estejam vazios.cp [OPÇÃO]... [-T] FONTE DESTINO
oucp [OPÇÃO]... FONTE... DIRETÓRIO
oucp [OPÇÃO]... -t DIRETÓRIO FONTE...
: CopiaFONTE
paraDESTINO
, ou mútiplasFONTE
s paraDIRETÓRIO
.
Principais argumentos:
-i, --interactive { mostra prompt antes de sobrescrever (sobrepõe a opção -n) }
-n, --no-clobber { não sobrescreve um arquivo existente (sobrepõe a opção -i) }
-R, -r, --recursive { copia diretórios recursivamente }
-
rm [OPÇÃO]... [ARQUIVO]...
: Remove (desvincula) osARQUIVO
s.
Principais argumentos:
-f, --force { ignora arquivos inexistentes e argumentos, não mostra o prompt }
-i { mostra prompt antes de cada remoção }
-r, -R, --recursive { remove diretórios e seus conteúdos recursivamente }
-
mv [OPÇÃO]... [-T] FONTE DESTINO
oumv [OPÇÃO]... FONTE... DIRETÓRIO
oumv [OPÇÃO]... -t DIRETÓRIO FONTE...
: RenomeiaFONTE
noDESTINO
, ou moveFONTE
s paraDIRETÓRIO
.
Principais argumentos:
-f, --force { não mostra prompt antes de sobrescrever }
-i, --interactive { mostra prompt antes de sobrescrever }
-n, --no-clobber { não sobrescreve um arquivo existente }
Relação com Ciência de Dados
A crescente quantidade de dados diversos no cenário atual obriga o mundo a desenvolver ferramentas que consigam lidar com esse volume de informações, é nesse contexto que surge a Ciência de Dados. Com todos os instrumentos necessários para tratar e processar esses dados, dando vazão aos mesmos.
Quando escolhemos uma ferramenta ideal para algum trabalho sempre optamos por algo que seja otimizado e de rápido processamento. Nesse contexto, temos as CLIs que permitem a automatização de tarefas, o manuseio de grandes arquivos rapidamente e a organização de dados mais facilmente.
A partir de agora vou apresentar alguns comandos de shell que são úteis no processamento de dados:
Inspeção de Dados
-
head [OPÇÃO]... [ARQUIVO]...
: Imprime as 10 primeiras linhas doARQUIVO
na saída padrão. Quando não háARQUIVO
, ou quando oARQUIVO
é -, o comando lê da entrada padrão.
Principais argumentos:
-n, --lines=[-]NUM { imprime as NUM primeiras linhas ao invés das 10 primeiras }
-
tail [OPÇÃO]... [ARQUIVO]...
: Imprime as 10 últimas linhas doARQUIVO
. Quando não háARQUIVO
, ou quando oARQUIVO
é -, o comando lê da entrada padrão.
Principais argumentos:
-n, --lines=[-]NUM { imprime as NUM primeiras linhas ao invés das 10 primeiras }
-
wc [OPÇÃO]... [ARQUIVO]...
ouwc [OPÇÃO]... --files0-from=F
: Imprime a contagem de quebra de linha, palavras e bytes para cadaARQUIVO
, e o númeto total de linhas se mais de umARQUIVO
é especificado.
Principais argumentos:
-c, --bytes { imprime a contagem de bytes }
-m, --chars { imprime a contagem de caracteres }
-l, --lines { imprime a contagem de quebras de linha }
-w, --words { imprime a contagem de palavras }
- column [OPÇÕES] [...] : Listagem de
ARQUIVO
em colunas.
Principais argumentos:
-t, --table { cria uma tabela }
-s, --separator <string> { possíveis delimitadores da tabela }
shuf [OPÇÕES]... [ARQUIVO]
oushuf -e [OPÇÕES]... [ARGUMENTOS]...
oushuf -i LO-HI [OPÇÕES]...
: Escreve uma permutação aleatória das linhas doARQUIVO
na saída padrão.
Principais argumentos:
-n, --head-count=COUNT { a saída tem COUNT linhas }
-o, --output=FILE { escreve o resultado no ARQUIVO ao invés da saída padrão }
-r, --repeat { as linhas da saída podem se repetir }file [OPÇÃO...] [ARQUIVO...]
: Determina o tipo dosARQUIVO
s.
Processamento de Dados
cat [OPÇÃO]... [ARQUIVOS]...
: ConcatenaARQUIVO
s na saída padrão.sort [OPÇÃO]... [ARQUIVO]...
ousort [OPÇÃO]... --files0-from=F
: Escreve uma versão ordenada e concatenada de todos osARQUIVO
s na saída padrão.
Principais argumentos:
-r, --reverse { reverte o resultado das comparações }
-t, --field-separator=SEP { usa SEP ao invés de um separador não vazio }
-u, --unique { imprime apenas a primeira ocorrência de um dado }
-k, --key=KEYDEF { ordena pela chave (key); KEYDEF fornece a localização e o tipo }
-
cut OPÇÃO... [ARQUIVO]...
: Imprime as partes selecionadas doARQUIVO
na saída padrão.
Principais argumentos:
-d, --delimiter=DELIM { usa DELIM ao invés de TAB para delimitar os campos }
-
grep [OPÇÃO]... PADRÕES [ARQUIVO]...
: Procura PADRÕES em cada ARQUIVO. PADRÕES podem contem múltiplos padrões separados por quebras de linha.
Principais argumentos:
-v, --invert-match { seleciona linhas que não contém o PADRÃO }
-n, --line-number { imprime númeração das linhas na saída padrão }
-i, --ignore-case { ignora distinções de case nos PADRÕES e nos dados }
Exemplo: grep -i 'hello world' main.c
Pipelines
Muitas vezes também podemos querer usar a saída de um comando como a entrada de outro, e para evitar o uso de algum arquivo intermediário podemos conectar os dois comandos da seguinte forma:
comando1 | comando2
No exemplo acima o comando2
recebe como entrada a saída do comando1
. Essa funcionalidade é chamada de Pipeline.
Conclusão
Os comandos apresentados tem aplicações variadas e muitos outros argumentos que não foram exibidos aqui. Então podemos ver que a CLI é uma ferramenta realmente preparada para lidar com o processamento de dados, o que nos falta muitas vezes é o conhecimento de tantos comandos e seus argumentos.
A proposta do artigo foi mostrar um pouco do que a CLI pode fazer e espero que tenha incentivado alguém a ir além do apresentado e explorar outras funcionalidades relacionadas a Ciência de Dados.
Top comments (0)