13 de fevereiro de 2020 • 4 min de leitura
Gerenciamento básico de arquivos
Entender melhor os comandos antes de utiliza-los é muito importante, então segue alguns dos mais comuns.
É muito comum vermos os tutoriais sobre linux informando diversas variantes de comandos como ls, mkdir, cp, mv e não informar para que as serve. Irei compartilhar alguns dos comandos que mais utilizo dentro do meu dia a dia como analista de sistemas, assim como qual a sua utilidade e suas principais variantes.
Vou dividir essa serie de postagens em "Gerenciamento básico de arquivos", "Fluxos, Pipes e Redirecionamentos" e "Criar, Monitorar e Encerrar Processos", iniciaremos abordando o Gerenciamento básico de arquivos, através dos comandos cd, ls, file, touch, cp, mv, rm, mkdir, rmdir, find.
Antes de começarmos, vou repassar alguns atalhos para facilitar a nossa utilização do terminal, o mais comum é o "TAB" para realizar o autocomplete, porém existem outros que podemos utilizar para aumentar a nossa agilidade durante os procedimentos, são eles:
Ctrl+c: Cancela o comando executado
Ctrl+d: Desloga da sessão atual (exit)
Ctrl+u: Apaga a linha inteira
Ctrl+a: Vai para o inicio da linha (Home)
Ctrl+l: Limpa a tela
Seta ^: Mostra os ultimos comandos digitados
Existem outros, porém esses são os que julgo mais importantes e que utilizo com mais frequência.
Comandos Básicos
Quando começamos a utilizar o terminal, principalmente no linux, é normal não sabermos como navegar pelo filesystem do sistema operacional, em que pasta estamos, como listar o conteúdo da pasta, então segue alguns comandos para facilitar esse processo de aprendizagem:
cd - Entrar no diretório desejado
#Acessar diretório:
thiago@pc:~$ cd Downloads/
thiago@pc:~/Downloads$
#Votlar um nível no diretório:
thiago@pc:~/Downloads$ cd ..
thiago@pc:~$
#Volta para o diretório anterior:
thiago@pc:~$ cd -
/home/thiago/Downloads
thiago@pc:~/Downloads$
#Voltando 2 níveis no sistema de arquivo:
thiago@pc:~/Downloads$ cd ../..
thiago@pc:/home$
Para listagem de arquivos e diretórios temos o comando ls e algumas variações que nos trazem mais informações sobre o conteúdo listado:
#Listagem de arquivos e diretórios
thiago@pc:~$ ls
Área de Trabalho Downloads Desktop Vídeos
#Listagem de arquivos e arquivos ocultas:
thiago@pc:~$ ls -a
. Área de Trabalho Downloads
.. .gconf .purple
#Listagem detalhada de arquivos e diretório:
thiago@pc:~$ ls -l #Pode ser usada também ls -la para add listagem ocultas
total 85900
drwxr-xr-x 2 thiago thiago 4096 Mai 23 13:10 Área de Trabalho
drwxr-xr-x 2 thiago thiago 4096 Mai 10 15:01 Desktop
#Listagem detalhada para visualização de tamanho de pastas:
thiago@pc:~$ ls -lh
total 84M
drwxr-xr-x 2 thiago thiago 4,0K Mai 23 13:10 Área de Trabalho
drwxr-xr-x 2 thiago thiago 4,0K Mai 10 15:01 Desktop
Podemos também verificar que tipo de arquivo é exibido, por exemplo de uma image, conseguimos verificar se de fato o arquivo .png é uma imagem, para isso, utilizamos o comando file
thiago@pc:~/Downloads$ file email.png
email.png: PNG image data, 1074 x 824, 8-bit/color RGB, non-interlaced
Manipulação de arquivos
É bastante comum termos de criar, mover, copiar arquivos no nosso dia a dia, através do terminal isso também é comum e possuímos alguns comandos para realizar essa manipulação de arquivos, para copiar utilizando o comando cp:
# Copiar um arquivo para um determinado local:
thiago@pc:~/Downloads$ cp codigo-aluno.txt /home/thiago/Documentos/
thiago@pc:~/Downloads$ ls -l /home/thiago/Documentos/
-rw-rw-r-- 1 thiago thiago 38 Jun 9 14:41 codigo-aluno.txt
# Copiando diretórios com o comando cp de forma recursiva:
thiago@pc:~/Downloads$ cp -rv Copia/ /tmp/
'Copia/' -> '/tmp/Copia'
'Copia/texto.txt' -> '/tmp/Copia/texto.txt'
# Copias com preservação de permissão:
thiago@pc:~/Downloads$ cp -p texto.txt /tmp/
# Copiar um arquivo para outro arquivo de nome diferente:
thiago@pc:~/Downloads$ cp texto.txt novotexto.txt
Para a realização da criação de arquivos, você pode utilizar diversos comandos, como por exemplo, através de um editor de texto como nano e vim, porém nesse caso será utilizado o comando touch pois é bastante simples:
# Criar um arquivo em brando utilizando o touch
thiago@pc:~$ touch linux.txt
Assim como a necessidade de criação dos arquivos, precisamos muitas vezes realizar a remoção de alguns desses, seja para liberação de espaço como também para remoção de arquivos indesejados, para isso é utilizado o comando rm porém, bastante cuidado para não remover conteúdo critico do sistema:
# rm Caminho/Completo/do/Arquivo.txt remove sem que seja perguntado nada
thiago@pc:/tmp/teste$ rm teste2/arq5.txt
# Remoção com solicitação de permissão
thiago@pc:/tmp/teste$ rm -i teste2/arq2.txt
rm: remover arquivo comum vazio 'teste2/arq2.txt'? y
thiago@pc:/tmp/teste$
# rm -v nome_do_arquivo (verbose, mostra todas as interações)
thiago@pc:/tmp/teste$ rm -v teste2/arq*
removido 'teste2/arq1.txt'
removido 'teste2/arq2.txt'
# rm -r Diretorio/ (remoção de tudo que existe na pasta diretorio inclusive a pasta)
thiago@pc:/tmp/teste$ rm -r -v teste3/
removido 'teste3/arq1.txt'
removido 'teste3/arq2.txt'
removed directory 'teste3/'
Para a criação e manipulação de diretórios, temos os comandos mkdir e rmdir:
# Criação de diretório
thiago@pc:/tmp/teste$ mkdir -v teste5
mkdir: foi criado o diretório 'teste5'
# Criando arvoré de diretório
thiago@pc:/tmp/teste$ mkdir -v -p teste10/teste9
mkdir: foi criado o diretório 'teste10'
mkdir: foi criado o diretório 'teste10/teste9'
# Removendo arvore de diretórios vazias
thiago@pc:/tmp/teste$ rmdir -v -p teste10/teste
rmdir: removendo o diretório 'teste10/teste9'
rmdir: removendo o diretório 'teste10'
Busca e compactação
A busca de arquivos é algo bastante util, quando precisamos achar todos os arquivos de configurações de um serviço, todos os arquivos de backup, e para ele, utilizamos o comando find que pode ser utilizado em conjunto com alguns outros comandos como exec e xargs, porém nesse exemplo o nosso intuito é apenas identificar os arquivos que foram achados:
# Achar todos os arquivos .conf
thiago@pc:~$ find Downloads/ -name "*.conf"
Downloads/Teste/httpd.conf
Downloads/Teste/exim.conf
Já na compactação de conteúdo, temos várias ferramentas que podem ser utilizadas, como tar, gzip, bzip2, xz porém utilizaremos o tar com gzip para agrupar e compactar os arquivos:
# Agrupamento e extração de arquivos utilizando Tar:
c create
x extract
t list
f determina nome do .tar
p preserva permissões originais
v verbose para visualizar atualização
Sabendo os parâmetros do comando, vamos seguir agrupando alguns arquivos
# Criando arquivo agrupado
thiago@pc:~/Downloads/Teste$ tar cpvf exemplo.tar *.conf
httpd.conf
exim.conf
Após agrupado, podemos compactar, utilizando o gzip, basta indicar o arquivo:
thiago@pc:~/Downloads/Teste$ gzip exemplo.tar
Podemos fazer o processo de compactação diretamente pelo comando tar, basta adicionar o parâmetro z para compactar e x para extrair:
# Compactar
thiago@pc:~/Downloads/Teste$ tar zcvf exemplo.tar.gz *.conf
httpd.conf
exim.conf
# Descompactar
thiago@pc:~/Downloads/Teste$ tar zxvf exemplo.tar.gz
./httpd.conf
./exim.conf
Espero que tenham gostado do conteúdo abordado, nas próximas postagens, vamos abordar "Fluxos, Pipes e Redirecionamentos".