O sistema GNU/Linux tem uma rica e poderosa caixa de ferramentas. Trata-se de uma coleção de programas (muitos escritos em C) que executam tarefas corriqueiras. Alguns desses programas são implementações de algoritmos e estruturas de dados discutidos neste sítio.
Faz indentação correta do arquivo-fonte de um programa C. Veja o sítio astyle.
Basic calculator: arbitrary precision calculator language. Faz cálculos com números inteiros arbitrariamente grandes. Veja documentação na Wikipedia, ou em man7.org.
bc
Universal character encoding detector: procura encontrar, heuristicamente, o esquema de codificação (= encoding) de um arquivo.
chardet nomes-de-arquivos
Semelhante ao diff. Veja documentação na Wikipedia, ou em man7.org.
cmp file1 file2
The UNIX file-difference utility. Compara as linhas de dois arquivos de texto. Mostra as linhas do primeiro que não estão no segundo e vice-versa. Veja documentação na Wikipedia, ou em man7.org.
diff -b -B file1 file2
Converte arquivos de texto em arquivos no formato HTML, no formato PostScript, ou outros. Exemplo:
enscript --highlight=c --color --language=html \ --output=isort.html isort.c
converte o arquivo isort.c no arquivo isort.html. Veja documentação no sítio oficial, ou na Wikipedia.
Tenta descobrir qual o tipo (texto, executável, binário, etc.) e qual o esquema de codificação (= encoding) de um arquivo (ASCII, ISO-LATIN-1, UTF-8, etc.). O comando
file -i *
faz um relatório sobre o conteúdo do diretório corrente. Veja manual no man7.org.
Um formatador de texto simples. Veja documentação na Wikipedia, ou em man7.org. Exemplo:
fmt -w65 <nome_do_arquivo>
GNU Compiler Collection: compilador de programas em C. Veja manual (versão 6.3) no gnu.org ou man7.org. Veja também o verbete GNU Compiler Collection na Wikipedia. Exemplo:
gcc -std=c99 -Wall arquivo1.c arquivo2.c
Veja tutorial no Cprogramming.com ou numa página da disciplina CSE141 na Universidade da Califórnia em San Diego.
GNU debugger (depurador de programas = caçador de erros de programas). Veja documentação no sítio oficial, ou na Wikipedia, ou em man7.org. Veja também a folhinha GDB Quick Reference. Exemplo:
gdb
Para aprender a usar o GDB leia os artigos Debugging with GDB e Debugging Segmentation Faults and Pointer Problems no sítio Cprogramming.com. Veja também o tutorial da disciplina CSE141 na Universidade da Califórnia.
GNU profiler: dá estatísticas sobre a execução de um programa (quantas vezes cada função foi chamada, quanto tempo cada função consumiu, etc.). Veja documentação na Wikipedia, ou em man7.org.
gprof
Procura um padrão (= pattern) em todos os arquivos de um diretório. Veja documentação na Wikipedia, ou em man7.org. Exemplo:
grep -r -s -i -I -e 'pattern' ./
Filtro que exibe o conteúdo de arquivo no formato especificado pelo usuário. Veja também od.
Filtro que muda o esquema de codificação de um arquivo de texto (por exemplo, de ISO-LATIN-1 para UTF-8). (O nome do filtro é uma abreviatura de international conversion). Exemplo:
iconv -f iso-8859-1 -t utf-8 in.txt -o out.txt
(A opção -f significa from e a opção -t significa to.) Veja documentação no sítio oficial, ou na Wikipedia, ou em man7.org.
Verificador ortográfico (spelling checker). Veja documentação na Wikipedia.
ispell -t files
Exibe o conteúdo de um arquivo no terminal. Veja documentação na Wikipedia, ou em man7.org.
less arquivo
Automatiza o processo de compilação de um programa. Veja a seção Make e Makefile no capítulo Como organizar e compilar um programa. Veja documentação na Wikipedia, ou em man7.org.
make
Veja também o verbete Makefile na Wikipedia.
Octal dump: exibe todos os bytes de um arquivo, digamos xxx. Diga
od -t u1 -A d xxx
para exibir todos os bytes em notação decimal. Diga
od -t o1 -A d xxx
para exibir os bytes em notação octal. Diga
od -t c -A d xxx
para exibir os caracteres ASCII representados por cada byte. Veja documentação na Wikipedia, ou em man7.org. Veja também hexdump.
Prepara arquivos de texto para impressão. Veja documentação na Wikipedia, ou em man7.org. Exemplo:
pr -3 -t
Rearranja o conjunto de linhas de um arquivo de texto
numa ordem de dicionário
que respeita as tradições da língua local.
Estamos supondo que a língua local é o português brasileiro
e que a codificação do arquivo é UTF-8.
Nesse caso,
a ordem de dicionário
é mais complexa que a
lexicográfica
pois mantém juntas todas as variantes de uma mesma letra.
(Por exemplo,
mantém as variantes
A,
á,
Á,
à,
À,
â, etc.
junto com a letra a.)
Exemplo:
sort nome_do_arquivo
A escolha da língua local é determinada pela variável de ambiente LC_COLLATE do sistema. Estamos supondo que o valor de LC_COLLATE é pt_BR.UTF-8. Para forçar esse valor, você pode invocar o programa dizendo
LC_COLLATE=pt_BR.UTF-8 sort nome_do_arquivo
Veja, por exemplo, o arquivo ordenado br-utf8.txt de todas as palavras do português brasileiro. Veja também a documentação de sort na Wikipedia ou em man7.org.
Encontra defeitos na administração da memória, caça segmentation faults, vazamentos de memória, e faz estatísticas de execução de um programa. Veja documentação no sítio da ferramenta, ou na Wikipedia, ou em man7.org.
valgrind --leak-check=yes xxxx
Veja o artigo Using Valgrind to Find Memory Leaks and Invalid Memory Use no sítio Cprogramming.com.
Word count: conta o número de linhas, de palavras e de bytes de um arquivo ASCII. Se o seu arquivo é xxx.txt, basta dizer
wc xxx.txt
Veja a versão do
programa wc escrito por Donald Knuth e Silvio Levi.
Veja
a documentação do programa
antes de sua conversão automática em código C.
Isso foi escrito por Knuth e Levi para ilustrar o
sistema CWEB de programação letrada
.