Gerenciamento Basico de Arquivos - cp, mv, rm, touch e Wildcards

Gerenciamento Basico de Arquivos - cp, mv, rm, touch e Wildcards

O Que Voce Vai Alcancar

  • Usar as principais opcoes de cp / mv / rm (-r -a -i -p -u -f) adequadamente
  • Criar arquivos vazios e atualizar timestamps com touch
  • Criar e remover diretorios com seguranca usando mkdir -p / rmdir
  • Escrever wildcards (* ? [ ] [!...]) e brace expansion ({ }) corretamente
  • Explicar que e o shell, e nao o comando, que expande os globs

Este e o nucleo do objetivo 103.3 do LPIC-1 "Realizar gerenciamento basico de arquivos". Domine os padroes para executar as operacoes de arquivo que compoe a maior parte do trabalho diario sem acidentes.

Qual Comando e Opcao Escolher

Escolha operacoes de arquivo por "o que voce quer fazer" e "como prevenir acidentes". A tabela abaixo e o ponto de partida.

O que voce quer Comando Habito de seguranca
Copiar cp -i (confirmar sobrescrita)
Backup (manter atributos) cp -a -a = recursivo + preservar
Mover / renomear mv -i (confirmar sobrescrita)
Excluir rm -i (confirmar cada item)
Criar / atualizar arquivo touch Mantem o conteudo existente intacto
Criar diretorio mkdir -p Criar pais de uma vez
Remover diretorio vazio rmdir Falha se nao estiver vazio (seguro)

Na duvida, adote como padrao "adicionar -i em operacoes destrutivas (rm / sobrescrita com mv)". O fato de rmdir falhar a menos que esteja vazio nao e um defeito, mas uma valvula de seguranca contra exclusao acidental.

Usando cp / mv / rm

cp - Copia e Diferencas de Opcoes

cp duplica arquivos e diretorios. Diretorios requerem -r (recursivo). Para backups, use -a, que tambem preserva atributos.

cp file1.txt file2.txt
cp -r src/ backup/
cp -a src/ archive/
$ ls -l file2.txt
-rw-r--r-- 1 user user 0 May 30 10:00 file2.txt

As principais opcoes significam o seguinte. Isso assume o cp do GNU coreutils.

Opcao Significado
-r, -R Copiar diretorios recursivamente
-a Modo archive. Equivalente a -dR --preserve=all (manter atributos)
-i Perguntar antes de sobrescrever
-p Preservar atributos como mtime, proprietario e permissoes
-u Copiar somente quando o destino e mais antigo ou inexistente

-r significa "copiar o conteudo", enquanto -a significa "copiar o conteudo e preservar completamente atributos, links simbolicos e timestamps". Lembre-se de -r para uma copia simples e -a para um backup.

-u (update) e util para sincronizacao diferencial. cp -au src/ dst/ copia "somente arquivos mais novos preservando atributos", utilizavel como um backup simples.

mv - Mover e Renomear

mv serve tanto para mover quanto para renomear. mv antigo novo no mesmo diretorio e uma renomeacao, e mv arquivo dir/ para outro diretorio e uma movimentacao. Adicione -i quando sobrescrever for arriscado.

mv draft.txt report.txt
mv report.txt /home/user/docs/
mv -i report.txt /home/user/docs/
$ mv -i report.txt /home/user/docs/
mv: overwrite '/home/user/docs/report.txt'? n
Opcao Significado
-i Perguntar antes de sobrescrever
-f Forcar sobrescrita sem perguntar (cancela o -i)

Diferente do cp, o mv nao precisa de -r para mover um diretorio. Dentro do mesmo sistema de arquivos, ele apenas reescreve as informacoes de caminho sem mover os dados em si, portanto e rapido.

rm - Exclusao e o Perigo do -rf

rm exclui arquivos. Use -r para excluir diretorios e -f para forcar a exclusao sem perguntar. Nao existe "lixeira" com rm; exclusao significa remocao imediata.

rm unwanted.txt
rm -i unwanted.txt
rm -r olddir/
$ rm -i unwanted.txt
rm: remove regular file 'unwanted.txt'? y
Opcao Significado
-r, -R Excluir diretorios recursivamente
-f Suprimir verificacoes de existencia e prompts; forcar
-i Confirmar cada item antes de excluir

touch / mkdir / rmdir / file

touch - Criar Arquivos Vazios e Atualizar Timestamps

touch cria um arquivo inexistente como vazio, e para um arquivo existente atualiza os tempos de acesso e modificacao para o horario atual (sem alterar o conteudo).

touch newfile.txt
touch existing.txt
touch -c missing.txt
$ ls -l --time-style=+%H:%M newfile.txt
-rw-r--r-- 1 user user 0 10:05 newfile.txt
Opcao Significado
-a Atualizar somente o tempo de acesso
-m Atualizar somente o tempo de modificacao
-c Nao criar o arquivo se ele nao existir
-t Definir para o horario especificado ([[CC]YY]MMDDhhmm[.ss])

Executar touch em um arquivo existente nao apaga dados. Tambem e usado para manipular o tempo de modificacao, como forcar uma reconstrucao (verificacao de timestamp do make).

mkdir / rmdir - Criar e Excluir Diretorios

mkdir cria um diretorio. Para uma hierarquia profunda cujos pais nao existem, use -p para cria-los todos de uma vez. rmdir exclui somente um diretorio vazio.

mkdir project
mkdir -p project/src/lib
rmdir project/src/lib
$ rmdir project
rmdir: failed to remove 'project': Directory not empty

Sem -p, voce nao pode criar um diretorio sob um pai inexistente e recebe um erro. Que rmdir "falhe a menos que esteja vazio" e um mecanismo de seguranca; para excluir conteudo e tudo, use rm -r (que e correspondentemente mais perigoso).

file - Determinar o Tipo de Arquivo pelo Conteudo

file determina o tipo de um arquivo examinando seu conteudo, nao sua extensao. Ele pode ver alem de uma extensao falsificada e identificar a entidade real.

file report.pdf script.sh archive.gz photo
report.pdf:  PDF document, version 1.7
script.sh:   Bourne-Again shell script, ASCII text executable
archive.gz:  gzip compressed data
photo:       JPEG image data, JFIF standard 1.01

Mesmo photo sem extensao e identificado como JPEG. Verificar o tipo com file antes de abrir com cat e obter saida ilegivel e um habito seguro.

Wildcards e Expansao do Shell

Wildcards (globs) sao um mecanismo para especificar padroes de nomes de arquivo em massa. O ponto-chave e que e o shell, nao o cp ou rm, que os expande. O shell substitui o padrao por nomes de arquivo reais antes de passa-los ao comando.

Padrao Corresponde a Exemplo
* Qualquer string de zero ou mais caracteres *.txt -> todos os .txt
? Qualquer caractere unico file?.txt -> file1.txt, fileA.txt
[abc] Qualquer um dos caracteres entre colchetes file[12].txt -> file1.txt, file2.txt
[a-z] Qualquer caractere unico no intervalo [a-c]* -> nomes que comecam com a/b/c
[!abc] Qualquer caractere unico nao entre colchetes file[!0].txt -> nao file0.txt

Brace expansion { } e diferente dos globs: ela gera strings mecanicamente independentemente de os arquivos existirem.

echo file{A,B,C}.txt
echo {1..3}.log
mkdir -p project/{src,test,docs}
fileA.txt fileB.txt fileC.txt
1.log 2.log 3.log

{A,B,C} e uma lista separada por virgulas e {1..3} e uma sequencia numerica. mkdir -p project/{src,test,docs} cria tres diretorios de uma vez.

Brace expansion cria strings mesmo se nenhum arquivo existir (generativa). Globs * ? [ ], por outro lado, correspondem a nomes de arquivo existentes (busca). *.txt nao corresponde a nada se nao houver .txt, e no bash padrao a propria string do padrao e passada ao comando. Tenha isso em mente.

ls *.nonexistent
echo *.nonexistent
ls: cannot access '*.nonexistent': No such file or directory
*.nonexistent

Quando um glob nao corresponde a nada, o bash por padrao passa o padrao como esta (echo imprime essa string, e ls diz "no such file"). Voce pode mudar isso para "expandir para vazio quando houver zero correspondencias" configurando shopt -s nullglob.

Erros Comuns e Correcoes

Aqui estao os pontos que causam problemas tanto na pratica quanto no exame.

  • Esquecer -r para diretorio no cp: cp dir/ dst/ gera um erro omitting directory. Sempre use -r ou -a para copias de diretorio.
  • Confundir -r e -a: Use -r para uma copia simples, e -a para um backup que preserva proprietario, permissoes, links e timestamps. Somente com -r, os atributos mudam.
  • Sobrescrever silenciosamente com mv: Por padrao, mv sobrescreve silenciosamente um arquivo existente. Torne -i um habito para arquivos importantes.
  • Executar rm * no diretorio root ou importante: E o shell que expande o glob. Usar echo rm * antes para confirmar o que ele expande e seguro.
  • Confusao com o erro "not empty" do rmdir: Este e o comportamento seguro por design. Para excluir conteudo e tudo, use rm -r, mas sempre confirme o alvo.

Solucao de Problemas

Sintoma: cp diz "omitting directory" e nao copia nada

Causa: Tentativa de copiar um diretorio sem -r (ou -a)

Verificacao:

file src

Correcao: Use cp -r src/ dst/ para diretorio, ou cp -a src/ dst/ para tambem manter atributos.

Sintoma: Arquivos desapareceram apos executar rm -rf

Causa: rm -rf exclui recursivamente sem confirmacao. rm nao tem desfazer

Verificacao:

echo rm -rf target/

Correcao: Use echo antes para inspecionar visualmente a expansao antes de executar. Combine com -i (rm -ri) se nao tiver certeza. Arquivos excluidos so podem ser recuperados de um backup.

Sintoma: Um wildcard nao corresponde / o padrao e impresso literalmente

Causa: Zero arquivos correspondem. O bash por padrao passa a string do padrao como esta

Verificacao:

shopt nullglob
ls -d *.txt

Correcao: Verifique novamente o diretorio de destino e a extensao. Para expandir para vazio quando houver zero correspondencias, configure shopt -s nullglob.

Lista de Verificacao de Conclusao

  • [ ] Explicou e usou a diferenca entre cp -r e cp -a
  • [ ] Habilitou confirmacao de sobrescrita/exclusao com mv -i / rm -i
  • [ ] Confirmou a criacao de arquivo vazio e atualizacao de timestamp com touch
  • [ ] Confirmou a diferenca entre mkdir -p e rmdir
  • [ ] Escreveu * ? [ ] e brace expansion { } de forma distinta
  • [ ] Entendeu que e o shell que expande os globs

Resumo

Cenario Comando Ponto
Copiar cp -r / cp -a -a preserva atributos tambem
Mover / renomear mv -i Padrao sobrescreve silenciosamente
Excluir rm -ri Sem desfazer; -rf requer cautela maxima
Criar / atualizar touch / mkdir -p Mantem conteudo existente intacto
Remover dir vazio rmdir Falha se nao estiver vazio (seguro)
Determinar tipo file Pelo conteudo, nao pela extensao
Especificar em massa * ? [ ] { } O shell faz a expansao

Gerenciamento basico de arquivos e a area mais frequentemente usada no LPIC-1. Uma vez que voce solidifique isso, avance para o mecanismo de links que aponta para entidades de arquivo, e para o FHS e localizacao de arquivos, para completar o quadro.

Proximas Leituras