Organize Arquivos e Diretórios com mkdir, cp, mv e rm
Nesta etapa, você aprenderá como organizar seus arquivos e diretórios de forma eficaz usando os comandos mkdir (make directory - criar diretório), cp (copy - copiar), mv (move/rename - mover/renomear) e rm (remove - remover). Esses comandos são cruciais para manter um sistema de arquivos limpo e estruturado.
Primeiro, certifique-se de que você está no seu diretório ~/project.
cd ~/project
Verifique sua localização atual:
pwd
A saída deve ser /home/labex/project.
mkdir: Criando Diretórios
Você já usou mkdir para criar um único diretório. Agora, vamos explorar opções mais avançadas do mkdir.
Você pode criar múltiplos diretórios de uma vez listando-os como argumentos:
mkdir reports presentations
Verifique a criação deles:
ls
Você deverá ver documents, presentations e reports listados.
A opção -p (parents - pais) do comando mkdir é muito útil para criar quaisquer diretórios pais ausentes para o destino solicitado. Isso evita erros se você tentar criar um subdiretório dentro de um diretório pai inexistente.
Vamos criar uma estrutura de diretórios aninhada: projects/alpha/docs.
mkdir -p projects/alpha/docs
Agora, use ls -R para ver a estrutura aninhada recém-criada:
ls -R projects
Você deverá ver:
projects:
alpha
projects/alpha:
docs
projects/alpha/docs:
cp: Copiando Arquivos e Diretórios
O comando cp copia arquivos e diretórios. Ao copiar um arquivo, ele cria um duplicado no diretório atual ou em um diretório diferente especificado.
Vamos copiar report.txt do diretório documents para o diretório reports.
cp documents/report.txt reports/
Verifique a cópia listando o conteúdo do diretório reports:
ls reports
Você deverá ver report.txt no diretório reports.
Se um arquivo com o mesmo nome existir no diretório de destino, cp o sobrescreverá por padrão.
Para copiar um diretório e seu conteúdo, você deve usar a opção -r (recursive - recursiva). Por padrão, cp ignora diretórios se -r não for especificado.
Vamos copiar todo o diretório documents para projects/alpha/.
cp -r documents projects/alpha/
Verifique a cópia recursiva:
ls -R projects/alpha/documents
Você deverá ver o conteúdo do diretório documents (incluindo notes.txt, drafts e drafts/draft_v1.txt) agora duplicado dentro de projects/alpha/documents.
projects/alpha/documents:
drafts notes.txt report.txt
projects/alpha/documents/drafts:
draft_v1.txt
mv: Movendo e Renomeando Arquivos e Diretórios
O comando mv move arquivos de um local para outro. Ele também pode ser usado para renomear arquivos ou diretórios. Se você pensar no caminho absoluto de um arquivo como seu nome completo, então mover um arquivo é efetivamente o mesmo que renomear um arquivo. O conteúdo dos arquivos que são movidos permanece inalterado.
Vamos renomear notes.txt no diretório documents para meeting_notes.txt.
mv documents/notes.txt documents/meeting_notes.txt
Verifique a renomeação:
ls documents
Você deverá agora ver meeting_notes.txt em vez de notes.txt.
Agora, vamos mover report.txt do diretório reports para documents/drafts.
mv reports/report.txt documents/drafts/
Verifique a movimentação:
ls reports
O diretório reports deverá agora estar vazio.
ls documents/drafts
Você deverá ver draft_v1.txt e report.txt no diretório documents/drafts.
A opção -v para mv exibe uma saída detalhada das operações do comando, o que pode ser útil para confirmação.
mv -v documents/meeting_notes.txt documents/final_notes.txt
Você verá uma saída como:
renamed 'documents/meeting_notes.txt' -> 'documents/final_notes.txt'
rm: Removendo Arquivos e Diretórios
O comando rm remove arquivos. Tenha cuidado com rm, pois os arquivos excluídos geralmente não são recuperáveis da linha de comando.
Vamos criar um arquivo temporário para praticar rm.
touch temp_file.txt
Agora, remova temp_file.txt:
rm temp_file.txt
Verifique sua remoção:
ls
temp_file.txt não deverá mais ser listado.
Por padrão, rm não remove diretórios. Se você tentar remover um diretório não vazio sem a opção correta, você receberá um erro.
rm presentations
Você verá um erro:
rm: cannot remove 'presentations': Is a directory
Para remover diretórios e seu conteúdo, você deve usar a opção -r (recursive - recursiva). O comando rm -r percorre cada subdiretório primeiro e remove individualmente seus arquivos antes de remover cada diretório.
Vamos remover o diretório presentations e seu conteúdo (que atualmente está vazio, mas -r ainda é necessário para diretórios).
rm -r presentations
Verifique sua remoção:
ls
presentations não deverá mais ser listado.
A opção -i para rm solicita interativamente a confirmação antes de excluir cada arquivo. Esta é uma boa medida de segurança.
Vamos criar mais alguns arquivos temporários e depois removê-los interativamente.
touch file1.txt file2.txt
rm -i file1.txt file2.txt
Você será solicitado para cada arquivo:
rm: remove regular empty file 'file1.txt'? y
rm: remove regular empty file 'file2.txt'? y
Digite y e pressione Enter para cada solicitação para confirmar a exclusão.
A opção -f (force - forçar) força a remoção sem solicitar confirmação ao usuário. Se você especificar tanto -i quanto -f, -f terá prioridade. Use -f com extremo cuidado.
Finalmente, vamos limpar o diretório projects.
rm -r projects
Verifique se projects foi removido:
ls
rmdir: Removendo Diretórios Vazios
Você também pode usar o comando rmdir para remover diretórios vazios. Ele falhará se o diretório não estiver vazio.
Vamos criar um diretório vazio e removê-lo com rmdir.
mkdir empty_dir
rmdir empty_dir
Verifique sua remoção:
ls
empty_dir não deverá mais ser listado.
Se você tentar remover um diretório não vazio com rmdir, ele falhará:
mkdir test_dir
touch test_dir/test_file.txt
rmdir test_dir
Você verá um erro:
rmdir: failed to remove 'test_dir': Directory not empty
Lembre-se de usar rm -r para diretórios não vazios.
rm -r test_dir