Arquivos e diretórios no terminal Linux

Sistema de arquivos é uma estrutura lógica que possibilita o armazenamento e recuperação de arquivos. No Unix, arquivos são contidos em diretórios (ou pastas), os quais são conectados em uma árvore que começa no diretório raiz (designado por /). O processo de conectar a árvore de diretórios de um dispositivo de armazenamento à árvore de diretórios raiz é chamado de “montar dispositivo de armazenamento” (montagem). Para ver a estrutura de diretórios do Linux, clique no link.

Existem caracteres especiais, como traço, asterisco, cerquilha, barra e ponto de interrogação, que devem ser evitados. Caso execute um comando em um arquivo/diretório que inicie por algum desses sinais, utilize “./” (ponto e barra) antes do nome; caso esteja no meio do nome, utilize aspas ao redor da palavra; se aparecer aspas, coloque barra invertida na frente dela.

Comandos básicos

Para criar um arquivo vazio, utiliza-se o comando touch (para criar um arquivo vazio e, caso já exista um com esse nome, apagar seu conteúdo, use “cp /dev/null filename”). Esse comando também é usado para mudar a data de um arquivo, como nos exemplos a seguir:

touch -d "3 days ago" teste.txt
touch -d "2018-05-29 13:06" teste.txt

Para criar uma pasta o comando é mkdir. O comando cp realiza a cópia de arquivos de um diretório para um destino, sendo que o parâmetro “-r” realiza a cópia recursivamente, ou seja, considera os diretórios e subdiretórios. Ao copiar uma pasta onde já tem outra, o Linux mescla conteúdo se não tiver mesmo nome; se tiver mesmo nome, ele substitui arquivo.

Para mover um arquivo ou diretório o comando é “mv arquivo_de_origem diretório_de_destino” (pode-se utilizar o mesmo comando para renomear o arquivo). Para remover um arquivo, o comando é rm – se o nome contiver caracteres especiais, veja alguns truques para removê-lo clicando no link. A opção “-r” indica recursividade (é necessária para apagar um diretório) e sabendo que “-f” remove os arquivos sem perguntar, veja o exemplo a seguir para remover todos os arquivos (*) que terminem com “~” (geralmente arquivos temporários):

$ rm -rf *~

Para esvaziar lixeira via terminal, use o comando “rm -f ~/.local/share/Trash/files/*”. Para remover as miniaturas, o diretório é “~/.cache/thumbnails/normal/”.

Para listar arquivos, o comando é o ls. Existem as opções “-l” para listar com mais informações (como data de última modificação, usuário, etc), “-h” para listar tamanho em formato “human” (usando kilobytes, megabytes, etc) e “-t” para ordenar por alteração. Já o comando “du” informa tamanho dos subdiretórios (para diretório todo, usar também a opção “-s”).

$ ls | more #semelhante ao "dir -p" do DOS, deve-se apertar ESPAÇO para avançar uma página da lista ou ENTER para avançar uma linha na tela
$ ls -trl | tail -1 #mostra arquivo mais recente, ou head para o mais antigo
$ du -lh --max-depth=1 #última opção limita o somatório apresentado ao 1° nível de diretórios

Para localizar arquivos, existem os comandos locate (busca o arquivo pelo nome) e find. Para buscar conteúdo dentro do arquivo, tem o comando grep – veja mais usos desse comando clicando no link.

$ locate arquivo
$ find /root/teste/ -size "+1000k" -exec ls -lah {} ; #busca dentro do diretório /root/teste todos arquivos maiores que 1000kb e depois listá-los
$ find /path/* -cmin +1440 -exec rm -rvf {} \; #busca diretórios e arquivos criados a mais de 1440 minutos (24 horas * 60 minutos) e remove
$ grep -R palavra diretório #procurar por palavra nos arquivos do diretório
$ grep -R manaus /home/smith/ 2>/dev/null | cut -d: -f2 | uniq #alternativa para localizar arquivo contendo texto especificado

O comando tar (Tape ARchive) é muito utilizado para “empacotar” vários arquivos em um único arquivo “.tar”. As opções “-c” cria um novo arquivo tar, “-t” exibe o conteúdo de um arquivo tar, “-r” adiciona arquivos a um arquivo tar existente, “-x” extrai arquivos de um arquivo tar existente, “-f” permite especificar o arquivo tar a ser utilizado e “-z” é para manipular o arquivo .tar.gz em GZip.

$ tar -czvf pacote.tar.gz arq1.txt arq2.txt #criar pacote compactado .tar.gz
$ tar -tvf pacote.tar.gz #ver conteúdo
$ tar -xzvf pacote.tar.gz #extrair e descompactar pacote compactado

Já o comando gzip serve para compactar os arquivos. Uma junção muito comum dos dois comandos (empacotar + compactar) gera o arquivo “.tar.gz”. Para o comando gzip, a opção “-l” lista o conteúdo de um arquivo compactado. Veja os exemplos:

$ gzip arquivo(s) #comprimir
$ gunzip arquivo #descomprimir

Existem outras compactações. O algoritmo de compressão bzip2, cuja extensão é .bz2, pode ser trabalhado usando o comando tar, bastando incluir a opção “-j”, ou também usando o próprio comando bzip2. Para extrair arquivos .rar utiliza-se o comando unrar, e para arquivos .zip pode usar o comando zip (empacotar e comprimir) e unzip.

O comando “ln -s alvo nome-da-ligação” cria um link simbólico, que é um ponteiro para outro arquivo. A remoção do link não irá causar o apagar do arquivo para o qual ela aponta, ou seja, “rm nome_do_link”. Da mesma forma, ela não tem sua própria configuração de permissões, mas mantém as permissões de seu alvo.

Para dividir um arquivo muito grande em vários menores, você pode usar o comando split. No exemplo a seguir, ele divide o arquivo “cartao.iso” em arquivos menores de 200 MB cada, cujo sufixo é um número de dois dígitos (00, 01, 02, etc) após prefixo definido no último campo.

$ split --verbose -d -b200M cartao.iso cartao.iso.

Montagem e sistemas de arquivos

“Montagem” é a ação de incluir o conteúdo de um dispositivo periférico em um arquivo comum da árvore do sistema. O sistema de arquivos raiz é sempre montado na inicialização, pelo kernel; outros dispositivos são geralmente montados mais tarde, durante a sequência de inicialização ou manualmente com o comando “mount”.

O processo de montar uma partição de disco faz os conteúdos dela acessíveis como um diretório. Qualquer programa pode acessar os conteúdos, lendo ou escrevendo no ponto de montagem do computador. Veja alguns comandos úteis:

$ sudo fdisk -l #lista os discos e partições disponíveis no computador, mesmo as que não estão montadas
$ sudo mount -a #monta todos os discos mencionados no arquivo /etc/fstab
$ sudo mount -o remount,rw <device> #monta o dispositivo <device> de modo a permitir leitura e escrita

Caso não queira montar todas as partições, encontre o nome do dispositivo correspondente à partição do disco rígido que você deseja montar na listagem. Por exemplo, “/dev/sdb3” é a terceira partição no segundo disco rígido. Crie uma pasta para montar o disco nela (no caso, /mnt/point), digite “mount /dev/sda3 /mnt/point” no terminal, substituindo “/dev/sda3” pelo nome do dispositivo da partição que você quer montar e pressione “Enter”.

$ df -h #tamanho de partições
$ sudo gparted #aplicativo gráfico do GNOME para edição de partições
$ sudo mount -o loop /pasta_arquivo_ISO/imagem.iso /media/cdrom0 #gravar imagem ISO em CD

Para desmontar, utilize o comando “umount /dev/“. Caso dê algo como “unable to mount, device is busy”, certifique-se de que não está dentro da pasta a ser desmontada (nem mesmo outro usuário). Se não conseguir novamente desmontar, tente um “ps aux|grep NOME_DO_VOLUME” e veja se existe algum processo rodando – caso sim, de um “kill -9 NÚMERO_DO_PROCESSO”. Outra forma de localizar os programas que estão usando o dispositivo é o comando “fuser -vm /dev/“.

O sistema de arquivos é a forma de organização de dados em algum meio de armazenamento de dados em massa. O Linux geralmente usa o Ext4 ou suas versões mais antigas. Para montar dispositivo NTFS (sistema de arquivos desenvolvido pela Microsoft devido às limitações e falta de recursos do FAT) no Linux, execute esses passos:

  1. apt-get install ntfs-3g (instalar programa para leitura)
  2. mkdir media/usb (criar pasta para montagem)
  3. chmod 777 /media/usb (alterar permissões de acesso)
  4. mount -t auto /dev/sdb1 /media/usb (montar)
  5. umount /media/Novo_volume (desmontar)

Nas outras vezes, basta clicar em Sistema > Ferramenta de configuração NTFS e reiniciar com o HD externo ligado.

Veja mais sobre Particionamento de disco e inicialização de sistema clicando no link.

2 comments

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.