# Guia do Linux/Iniciante+Intermediário/Explicações básicas/Arquivos
## Arquivos

É onde gravamos nossos dados. Um arquivo pode conter um texto feito por nós, uma música, programa, planilha, etc.
Cada arquivo deve ser identificado por um nome, assim ele pode ser encontrado facilmente quando se desejar usá-lo. Se estiver fazendo um trabalho de história, nada melhor que salvá-lo com o nome história. Um arquivo pode ser binário ou texto (para detalhes veja Arquivo texto e binário).
O GNU/Linux é Case Sensitive ou seja, ele diferencia letras maiúsculas e minúsculas nos arquivos. O arquivo história é completamente diferente de História. Esta regra também é válido para os comandos e diretórios.
O nome do arquivo pode ser qualquer string, inclusive com espaços em branco, acentos ou outros caracteres não-alfanuméricos. Não é recomendável, porém, usar espaços nem acentos ou caracteres especiais: espaços e caracteres especiais dificultam na hora de escrever scripts, e acentos dificultam a portabilidade do arquivo para outros sistemas e para gravar em CDs, DVDs ou pen-drives. Prefira, sempre que possível, usar letras minúsculas, dígitos (0-9), underscore e o sinal de menos (-) para identificar seus arquivos, pois quase todos os comandos do sistema estão em minúsculas.
Um arquivo oculto no GNU/Linux é identificado por um "." no início do nome (por exemplo, .bashrc). Arquivos ocultos não aparecem em listagens normais de diretórios, deve ser usado o comando ls -a para também listar arquivos ocultos.

### Extensão de arquivos

A extensão serve para identificar o tipo do arquivo. A extensão são as letras após um "." no nome de um arquivo, explicando melhor:
* relatório.txt - O .txt indica que o conteúdo é um arquivo texto.
* script.sh - Arquivo de Script (interpretado por /bin/sh).
* system.log - Registro de algum programa no sistema.
* arquivo.gz - Arquivo compactado pelo utilitário gzip.
* index.html - Página de Internet (formato Hypertexto).
A extensão de um arquivo também ajuda a saber o que precisamos fazer para abri-lo. Por exemplo, o arquivo relatório.txt é um texto simples e podemos ver seu conteúdo através do comando cat, já o arquivo index.html contém uma página de Internet e precisaremos de um navegador para poder visualizá-lo (como o lynx, Firefox ou o Konqueror).
A extensão (na maioria dos casos) não é requerida pelo sistema operacional GNU/Linux, mas é conveniente o seu uso para determinarmos facilmente o tipo de arquivo e que programa precisaremos usar para abri-lo.

### Tamanho de arquivos

A unidade de medida padrão nos computadores é o bit. A um conjunto de 8 bits nós chamamos de byte. Cada arquivo/diretório possui um tamanho, que indica o espaço que ele ocupa no disco e isto é medido em bytes. O byte representa uma letra. Assim, se você criar um arquivo vazio e escrever o nome Linux e salvar o arquivo, este terá o tamanho de 5 bytes. Espaços em branco e novas linhas também ocupam bytes.
Além do byte existem as medidas Kbytes, Mbytes, Gbytes. Os prefixos K (quilo), M (mega), G (giga), T (tera) etc. vêm da matemática. O "K" significa multiplicar por 10$^3$, o "M" por 10$^6$, e assim por diante. Esta letras servem para facilitar a leitura em arquivos de grande tamanho. Um arquivo de 1K é a mesma coisa de um arquivo de 1024 bytes. Uma forma que pode inicialmente lhe ajudar a lembrar: K vem de Kilo que é igual a 1000 - 1Kilo é igual a 1000 gramas certo?.
Da mesma forma 1Mb (ou 1M) é igual a um arquivo de 1024K ou 1.048.576 bytes
1Gb (ou 1G) é igual a um arquivo de 1024Mb ou 1048576Kb ou 1.073.741.824 bytes (1 Gb é igual a 1.073.741.824 bytes, são muitos números!). Deu pra notar que é mais fácil escrever e entender como 1Gb do que 1.073.741.824 bytes :-)
A lista completa em ordem progressiva das unidades de medida é a seguinte:
| Símbolo | 10^ | 2^ | Nome |
| K | 3 | 10 | Quilo |
| M | 6 | 20 | Mega |
| G | 9 | 30 | Giga |
| T | 12 | 40 | Tera |
| P | 15 | 50 | Peta |
| E | 18 | 60 | Eta |
| Z | 21 | 70 | Zetta |
| Y | 24 | 80 | Yotta |

### Arquivo texto e binário

Quanto ao tipo, um arquivo pode ser de texto ou binário:
texto
Seu conteúdo é compreendido pelas pessoas. Um arquivo texto pode ser uma carta, um script, um programa de computador escrito pelo programador, arquivo de configuração, etc.
binário
Seu conteúdo somente pode ser entendido por computadores. Contém caracteres incompreensíveis para pessoas normais. Um arquivo binário é gerado através de um arquivo de programa (formato texto) através de um processo chamado de compilação. Compilação é basicamente a conversão de um programa em linguagem humana para a linguagem de máquina.