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 encontrar o tipo de um arquivo (texto, executável, binário, etc.) e qual o esquema de codificação (= encoding) do 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.
Um 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
Ordena lexicograficamente as linhas de um arquivo de texto. O funcionamento é afetado pela variável de ambiente LC_COLLATE. Supondo que o arquivo de texto esteja em português e use codificação UTF-8, convém adotar LC_COLLATE="pt_BR.UTF-8". Veja documentação na Wikipedia ou em man7.org.
LC_COLLATE=pt_BR.UTF-8 sort nome_do_arquivo
Para odenar lexicograficamente byte-a-byte (ignorando os caracteres que alguns blocos de bytes podem eventuamente representar), diga
LC_COLLATE=C sort nome_do_arquivo
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
.