Arquivos no GNU/Linux
Os arquivos são utilizados para gravar dados. Eles, podem conter um texto, uma música, programa, planilha, etc.
Nomes e extensões
Para facilitar a identificação, cada arquivo deve ter um nome — lembrando que o GNU/Linux é case sensitive. No entanto, muitas vezes, não é possível localizar ou saber como utilizá-lo somente pelo nome, por conta disso, existem as extensões.
A extensão são os caracteres separados do nome do arquivo por um ., assim: nome_arquivo.extensao. O uso de extensões não é obrigatório na maioria das distribuições GNU/Linux, mas é conveniente o seu uso para determinar facilmente o tipo de arquivo e qual programa utilizar para abri-lo.
No GNU/Linux, quando o primeiro caractere do nome é um . significa que o arquivo em questão é oculto. Arquivos ocultos são ignorados, ou seja, eles existem, mas não são listados — a não ser que seja explicitado.
Tipos de arquivos
No GNU/Linux, existem sete tipos de arquivos, são eles:
- Arquivo regular: É o tipo mais comum de arquivo que se pode encontrar em um sistema GNU/Linux. Existem dois tipos de arquivos regulares:
- Arquivo de texto: Seu conteúdo é compreendido pelas pessoas. Ele pode ser uma carta, um script, um programa de computador escrito pelo programador, arquivo de configuração, etc.
- Arquivo binário: Seu conteúdo somente pode ser entendido por computadores. Ele é gerado por um arquivo de programa através de um processo chamado de compilação.
- Arquivo de diretório: Armazena arquivos de qualquer tipo, inclusive outros diretórios.
- Arquivo de dispositivo: São utilizados para gerenciar os dispositivos de entrada e saída. Eles se subdividem em dois grupos:
- Arquivo de caractere: Nele, normalmente, os dados são lidos e escritos diretamente no dispositivo, dispensando o uso de buffers.
- Arquivos de bloco: Nele, as operações de entrada e saída são realizadas de modo aleatório, em blocos, fazendo o uso de buffers intermediários.
- Arquivo de socket: Permite a comunicação entre dois processos que compartilham dados. Ele permite a comunicação até mesmo entre sistemas operacionais diferentes.
- Arquivo pipe: Permite a comunicação entre dois processos executados no mesmo sistema operacional.
- Arquivo de link simbólico: Armazena uma representação textual do caminho para um arquivo referenciado.
Diretórios no GNU/Linux
O diretório é um arquivo utilizado para armazenar conjuntos de arquivos. Com os diretórios é possível manter os arquivos organizados.
No GNU/Linux não é permitido a existência de dois arquivos com o mesmo nome no mesmo diretório. As exceção são:
- Arquivos de mesmo nome com extensões diferentes.
- Dois arquivos com o mesmo nome, e até com a mesma extensão, com um deles oculto.
Estrutura de diretórios do GNU/Linux
O sistema GNU/Linux possui uma estrutura básica de diretórios. Essa estrutura também é conhecida como Árvore de Diretórios, porque é parecida com uma árvore de cabeça para baixo. Cada diretório do sistema tem seus respectivos arquivos que são armazenados conforme regras definidas pela Filesystem Hierarchy Standard (FHS) da seguinte forma:

/: Diretório principal do sistema. Dentro dele estão todos os diretórios do sistema./bin: É reservado para gravar comandos que serão utilizados por todos os usuários./boot: Contém os arquivos necessários para a inicialização do sistema./cdrom: Este diretório não faz parte do padrão de hierarquia FHS, porém ele ainda é encontrado em algumas distribuições GNU/Linux. É utilizado como local temporário para CDs e DVDs inseridos no computador — porém, o local padrão para essas mídias é o diretório/media./dev: Contém arquivos gerados pelos dispositivos de hardware, como processador, placa de vídeo, leitor de mídia etc./etc: Guarda a maioria dos arquivos essenciais do sistema operacional do computador local, como configuração usados para controlar uma operação ou programa./home: Local destinado para os arquivos dos usuários, com exceção do root./lib: Contém diretórios e links simbólicos compartilhados pelos programas do sistema e módulos do kernel./lost+found: Local para a gravação de arquivos corrompidos, recuperados após uma verificação do sistema de arquivos — esse tipo de verificação ocorre na primeira reinicialização após um travamento no sistema./media: Ponto de montagem de dispositivos removíveis como pendrives, CDs, Blu-Ray etc./mnt: Ponto de montagem de subdiretórios temporários de dispositivos não removíveis e arquivos, como imagens ISO./opt: É uma área reservada para instalações de pacotes de aplicações que otimizam o funcionamento de determinado programa ou acrescentam novos recursos./proc: É usado pelo kernel para guardados registros de desempenho e status de processos./root: Diretório padrão do usuário root./run: Fornece às aplicações um local para armazenamento de arquivos temporários que, diferentemente dos arquivos armazenados no/tmp, em caso de exclusão causam problemas às aplicações que os utilizam./sbin: Reúne arquivos binários acionados pelo sistema em si ou pelo root em processos de manutenção./srv: Possui dados que são utilizados por serviços armazenados, como web servers./sys: Sistema de arquivos do kernel, que facilita a troca de informações entre os programas que rodam no espaço do kernel, como os drivers, com os programas que rodam no espaço do usuário — por isso, esse diretório é usado por diversos programas./tmp: Diretório para armazenamento de arquivos temporários criados por programas./usr: Contém a maior parte dos programas. Normalmente acessível somente como leitura./var: Aqui são armazenados logs e arquivos variados que normalmente seriam escritos em/usr.
Manipulação de arquivos
Abaixo estão listados comandos úteis para a manipulação de arquivos.
ls
- Utilidade: Listar os arquivos de um diretório.
- Estrutura:
ls[opções][caminhos|arquivos]. - Opções:
-a: Lista todos os arquivos, inclusive os ocultos, de um diretório.-l: Lista permissões, donos, grupos, tamanho em bytes e data de modificação dos arquivos.-lh: Edita o tamanho dos arquivos mostrando pela opção-l, ou seja, o tamanho dos arquivos serão exibidos em Kbytes, Mbytes ou Gbytes — o que o GNU/Linux julgar mais conveniente.
- Macetes:
ls -lhaé uma concatenação das opções-l,-h,-a. Quando se trata de listagem, talvez, seja o comando mais completo.- É possível listar vários diretório com um único comando. Por exemplo, o comando
ls . /retornará a listagem do diretório atual e do diretório raiz do GNU/Linux.
cd
- Utilidade: Entrar em um diretório. O usuário precisa ter a permissão de execução para entrar no diretório.
- Estrutura:
cd[caminho|diretório]. - Macetes:
cd /: Levará ao diretório raiz do GNU/Linux.cd ~: Levará para o diretório padrão do usuário que está operando o GNU/Linux.cd -: Levará ao último diretório acessado.cd ..: Levará à um diretório a cima.cd ../ [caminho|diretório]: Levará à um diretório a cima e entrará, caso exista, no diretório do caminho informado.
pwd
- Utilidade: Mostrar o nome e caminho do diretório atual.
mkdir
- Utilidade: Criar um diretório no GNU/Linux.
- Estrutura:
mkdir[opções][caminhos|diretórios]. - Opções:
-p: Caso os diretórios dos níveis acima não existam, eles também serão criados.-v: Mostra uma mensagem para cada diretório criado.
- Macetes:
- Para criar um novo diretório, o usuário deve ter permissão de gravação.
- É possível criar vários diretório com um único comando. Por exemplo, o comando
mkdir diretorio1 diretório2criará dois diretórios — odiretorio1e odiretório2.
rmdir
- Utilidade: Remover um diretório vazio do GNU/Linux.
- Estrutura:
rmdir[caminhos|diretórios]. - Macetes:
- Para remove um diretório, o usuário deve ter permissão de gravação sobre ele.
- É possível remover vários diretório com um único comando. Por exemplo, o comando
mkdir diretorio1 diretório2removerá tanto odiretorio1quanto odiretório2— desde que ambos estejam vazios. - Para remover um diretório que contém arquivos, basta usar o comando
rmcom a opção-rseguida pelo diretório que deseja remover.
cat
- Utilidade: Mostrar o conteúdo de um arquivo binário ou de texto.
- Estrutura:
cat[opções][caminhos|arquivos]. - Opções:
-n: Mostra o número das linhas enquanto o conteúdo do arquivo é mostrado.
touch
- Utilidade: Criar um arquivo regular em branco
- Estrutura:
touch[caminhos|arquivos]. - Macetes:
- É possível criar vários arquivos com um único comando. Por exemplo, o comando
touch arquivo1 arquivo2criará dois arquivos — oarquivo1e oarquivo2. - Para escrever algo no arquivo basta utilizar um editor de texto como por exemplo o Nano ou o Vim.
- É possível criar vários arquivos com um único comando. Por exemplo, o comando
rm
- Utilidade: Remover arquivos.
- Estrutura:
rm[opções][caminhos|diretórios]. - Opções:
-i: Pergunta antes de remover um arquivos.-v: Mostra os arquivos a medida que são removidos.-r: Remove arquivos em subdiretórios e em seguida o subdiretório.
- Macetes:
rm -r[caminho|diretório]é utilizado para remover um diretório.
cp
- Utilidade: Copiar arquivos.
- Estrutura:
cp[opções][origem][destino] - Opções:
-rCopia arquivos dos diretórios e subdiretórios da origem para o destino.-v: Mostra os arquivos a medida que são copiados.-l: Faz o link simbólico no destino ao invés de copiar os arquivos.
mv
- Utilidade: Mover arquivos.
- Estrutura:
mv[opções][origem][destino] - Opções:
-v: Mostra os arquivos a medida que são movidos.
find
- Utilidade: Buscar arquivos.
- Estrutura:
find[diretorio][opções][expressão] - Opções:
-atime: Procurar arquivos acessados dentro de um intervalo de dias.-mtime: Procurar arquivos modificados dentro de um intervalo de dias.-ctime: Procurar arquivos criados dentro de um intervalo de dias.-name: Procura um arquivo pelo nome — é case sensitive.-iname: Procura um arquivo pelo nome — não é case sensitive.-user: Procura arquivos pelo usuário.-goup: Procura arquivos pelo grupo.-perm: Procura arquivos pela permissão.-type: Procura um arquivo pelo tipo. Os seguintes tipos são aceitos:f: arquivo regular;d: diretório;b: bloco;c: caractere;l: link simbólico;p: pipe;s: socket.
- Macetes:
- Para fazer buscas com o
-atime,-mtimeou-ctimeé interessante não somente indicar os dias, mas também especificar o intervalo. O-significa "a menos de", enquanto o+significa "a mais de". Por exemplo, o comandofind / -atime -2busca arquivos acessados a menos de dois dias. - É possível concatenar as opções e fazer buscas mais refinadas. Por exemplo:
find / -iname teste -user root.
- Para fazer buscas com o
Referências globais
Coringas, ou referências globais, é um recurso usado para especificar um ou mais arquivos do sistema de uma só vez. Este recurso permite fazer a filtragem do que será listado, copiado, apagado, buscados e etc. No GNU/Linux são usados 4 tipos de coringas, são eles:
*: Faz referência a um nome completo ou restante de um arquivo.?: Faz referência a uma letra naquela posição.[ ]: Faz referência a uma faixa de caracteres de um arquivo. Os padrões aceitos estão listados abaixo — caso qualquer um deles for precedido por um^significa que a expressão deve desconsiderar os caracteres indicados:[a-z][0-9]: Faz referência aos caracteres deaatézseguido de um caractere de0até9.[a,z][1,0]: Faz referência aos caracteresaezseguido de um caractere1ou0naquela posição.[a-z,1,0]: Faz referência ao intervalo de caracteres deaatézou1ou0naquela posição.
{ }: Expande e gera strings para pesquisa de padrões de um arquivo/diretório.X{ab,01}: Faz referência a sequencia de caracteresXabouX01.X{a-z,10}: Faz referencia a sequencia de caracteresXa-zeX10.
Compactadores
Compactadores são programas que diminuem o tamanho de um ou vários arquivo através de algoritmos muito avançados e complexos. A eficiência desses algoritmos pode ser mesurada pela taxa de compactação — que é o quanto um arquivo foi compactado. Por exemplo, se o tamanho do arquivo for diminuído a metade após a compactação, a taxa de compactação foi de 2:1 ou dois para um.
É importante frisar que não é possível trabalhar diretamente com arquivos compactados. Para manipula-los é necessário descompactar o arquivo. Entretanto, alguns programas descompactam o arquivo, o abrem e assim que o trabalho estiver concluído o compactam novamente, tudo isso para facilitar a rotina de trabalho.
Tipos de compactação
Existem, basicamente, dois tipos de compactação, são elas:
- Compactação sem perda: Não causa nenhuma perda nas informações contidas no arquivo.
- Compactação com perda: É desenvolvida para atingir altas taxas de compactação, porém com perdas parciais dos dados. É aplicada a tipos de arquivos especiais, como músicas e imagens ou arquivos que envolvam a percepção humana.
Arquivos de compactação
Para identificar um arquivo compactado e o programa utilizado para descompactá-lo, basta verificar a extensão do arquivo. Abaixo segue uma listagem dos programas mais comuns de descompactação e como utiliza-los:
gzip: É capaz de compactar arquivos para a extensão.gze descompactá-los. Possui uma ótima taxa de compactação e velocidade.- Estrutura:
gzip[opções][arquivos]. - Opções:
-d: Descompacta um arquivo.-lLista o conteúdo de um arquivo.gz.-r: Compacta diretórios e subdiretórios.
- Estrutura:
bzip2: É um novo compactador que vem sendo cada vez mais usado porque consegue atingir a melhor compactação em arquivos texto se comparado aos já existentes, em consequência sua velocidade de compactação também é menor; quase duas vezes mais lento que ogzip.- Estrutura:
bzip2[opções][arquivos]. - Opções:
-d: Descompacta um arquivo.-lLista o conteúdo de um arquivo.bz2.-r: Compacta diretórios e subdiretórios.
- Estrutura:
zip: Utilitário de compactação compatível com arquivos de extensão.zip.- Estrutura:
zip[opções][arquivo-destino][arquivo-origem]. - Opções:
-r: Compacta diretórios e subdiretórios.-e: Permite encriptar o conteúdo de um arquivo.zipatravés de senha. A senha será pedida no momento da compactação.-y: Armazena links simbólicos no arquivo.zip. Por padrão, os links simbólicos são ignorados durante a compactação.
- Macetes:
- Para a descompactação de arquivos
.zipno GNU/Linux, é necessário o uso dounzipseguido do nome do arquivo que deseja descompactar.
- Para a descompactação de arquivos
- Estrutura:
rar: É um compactador que trabalha com arquivos de extensão.rar.- Estrutura:
rar[ações][opções][arquivos]. - Ações:
a: Compacta arquivos.x: Descompacta arquivos.
- Opções:
p: Inclui senha no arquivo. Cuidado, pessoas conectadas ao sistema operacional podem capturar a linha de comando facilmente e descobrir a senha.
- Estrutura:
tar: Não é um compactador, ele apenas junta vários arquivos em um só.- Estrutura:
tar[opções][arquivo-destino][arquivo-origem]. - Opções:
-x: Extrai arquivos.tar.-t: Lista o conteúdo de um arquivo.tar.-c: Cria um novo arquivo.tar.
- Macetes:
- É comum encontrar arquivos
.tarcompactados em um arquivo.gz— nesses casos a extensão do arquivo será.tar.gz. Para descompactá-lo basta utilizar a opção-zpara chamar ogzip.
- É comum encontrar arquivos
- Estrutura: