Operações básicas com arquivos no Linux

LinuxBeginner
Pratique Agora

Introdução

O Linux organiza os dados em uma árvore de diretórios e arquivos. Os comandos operam sobre locais dessa árvore, portanto, um trabalho confiável com arquivos começa com três perguntas: Onde estou? O que existe aqui? Qual caminho identifica o item que quero?

Neste laboratório, você desenvolverá essas ideias gradualmente em /home/labex/project/file-basics. Você navegará usando caminhos absolutos e relativos, examinará entradas visíveis e ocultas, criará arquivos e diretórios, selecionará nomes com curingas e copiará, moverá e removerá arquivos de prática com segurança. Na etapa final, você conhecerá atalhos do terminal que tornam essas operações mais rápidas sem alterar o significado delas.

Localize o diretório de trabalho

Nesta etapa, você relacionará o prompt do terminal ao diretório no qual os comandos são executados.

O shell sempre tem um diretório de trabalho atual. Os caminhos relativos começam nesse diretório, portanto, verificar sua localização evita muitos erros comuns de iniciantes. Vá para o espaço de trabalho deste laboratório usando o caminho completo:

cd /home/labex/project/file-basics

Um caminho que começa com / é um caminho absoluto. Ele começa na raiz do sistema de arquivos e identifica o mesmo local, independentemente de onde você estava no início.

Exiba o diretório de trabalho:

pwd

Você deverá ver:

/home/labex/project/file-basics

Salve esse local como evidência. O operador > redireciona a saída para starting-location.txt; como a saída vai para o arquivo, nada será exibido desta vez:

pwd > starting-location.txt

Leia o arquivo para confirmar o que foi salvo:

cat starting-location.txt

A tela do terminal e o arquivo deverão mostrar o mesmo caminho absoluto.

Nesta etapa, você percorrerá diretórios vizinhos usando caminhos relativos e os nomes especiais . e ...

Retorne ao espaço de trabalho, se necessário:

cd /home/labex/project/file-basics

Liste as entradas visíveis:

ls

Você deverá ver path-map e starting-location.txt. Entre em path-map usando um caminho relativo, ou seja, um caminho interpretado a partir do diretório atual:

cd path-map
pwd

Agora entre em north e leia o arquivo de referência:

cd north
cat reference.txt

A saída é north reference. O nome .. representa o diretório pai, um nível acima do local atual:

cd ..

Vá de path-map para o diretório filho south:

cd south
cat reference.txt

O nome . representa o diretório atual. Salve o local absoluto atual na raiz do laboratório combinando pwd com um destino relativo que sobe dois níveis:

pwd > ../../relative-location.txt

Retorne diretamente à raiz do laboratório usando seu caminho absoluto:

cd /home/labex/project/file-basics
cat relative-location.txt

O caminho salvo deverá terminar com /path-map/south. Você usou tanto a navegação relativa quanto um caminho absoluto para retornar.

Examine o conteúdo de diretórios

Nesta etapa, você usará opções de ls para revelar nomes ocultos e detalhes dos arquivos.

Execute uma listagem simples na raiz do laboratório:

cd /home/labex/project/file-basics
ls

Normalmente, o Linux oculta nomes que começam com um ponto. A opção -a significa “all” e inclui essas entradas:

ls -a

Agora você deverá ver .practice-note, além de . para o diretório atual e .. para o diretório pai.

A opção -l produz uma listagem longa com permissões, proprietário, tamanho, horário e nome:

ls -l

Combine as opções para examinar todas as entradas no formato longo:

ls -la

Cada linha da saída começa com um campo de tipo e permissões. Um d no início identifica um diretório; um - no início identifica um arquivo regular. As permissões serão estudadas em detalhes posteriormente.

Salve os nomes, incluindo as entradas ocultas. Neste espaço de trabalho controlado, ls já os exibe em ordem alfabética, portanto, ainda não é necessário usar outro comando de ordenação:

ls -A > all-names.txt

Diferentemente de -a, a opção -A omite as entradas especiais . e .., mas mantém os demais nomes ocultos. Exiba o resultado:

cat all-names.txt

A lista deverá incluir .practice-note, path-map e os arquivos criados nas etapas anteriores.

Crie diretórios e arquivos

Nesta etapa, você criará uma pequena árvore de projeto e inserirá texto em arquivos regulares.

mkdir cria um diretório. A opção -p também cria os diretórios-pai ausentes, portanto, um único comando pode criar um caminho aninhado:

cd /home/labex/project/file-basics
mkdir -p workspace/docs workspace/logs

Isso cria workspace e seus diretórios filhos docs e logs. Examine o resultado:

find workspace -maxdepth 2 -type d

touch cria um arquivo vazio quando o nome ainda não existe. Crie dois arquivos de uma vez:

touch workspace/docs/guide.txt workspace/logs/app.log

Escreva conteúdo no guia. Um único > substitui o conteúdo do destino pela saída do comando:

echo "Linux file practice" > workspace/docs/guide.txt

Acrescente uma segunda linha com >>, que preserva o conteúdo existente:

echo "Paths make locations predictable" >> workspace/docs/guide.txt

Leia o arquivo completo:

cat workspace/docs/guide.txt

Você deverá ver as duas linhas na ordem original. O arquivo vazio app.log também existe e será usado posteriormente na prática com curingas.

Selecione nomes com curingas

Nesta etapa, você criará grupos de arquivos e os selecionará usando padrões de nomes.

Entre no diretório de logs:

cd /home/labex/project/file-basics/workspace/logs

A expansão de chaves gera vários nomes literais antes da execução do comando. Crie logs numerados:

touch app{1..3}.log worker{1..2}.log notes.txt

O shell expande {1..3} para 1 2 3, portanto, app{1..3}.log se torna três argumentos.

Um curinga é diferente: ele corresponde a nomes que já existem. * corresponde a qualquer sequência de caracteres:

ls *.log

A saída inclui todos os nomes que terminam em .log, mas não inclui notes.txt.

O curinga ? corresponde exatamente a um caractere. Liste somente os logs numerados de app:

ls app?.log

O shell expande os padrões de nomes de arquivos em ordem alfabética. printf imprime cada nome expandido em sua própria linha, e > salva essas linhas:

printf '%s\n' *.log > matched-logs.txt
cat matched-logs.txt

A lista salva deverá conter app.log, app1.log, app2.log, app3.log, worker1.log e worker2.log. Colocar *.log entre aspas impediria a expansão do curinga, portanto, o padrão foi deixado intencionalmente sem aspas.

Copie, mova e remova arquivos com segurança

Nesta etapa, você comparará os efeitos de cp, mv e rm antes de usá-los no desafio a seguir.

Retorne ao diretório do espaço de trabalho:

cd /home/labex/project/file-basics/workspace

cp SOURCE DESTINATION cria outro arquivo e mantém o arquivo de origem no local. Faça uma cópia de backup do guia:

cp docs/guide.txt docs/guide-backup.txt

Confirme que os dois arquivos têm conteúdo idêntico. cmp compara dois arquivos byte a byte. Ele não exibe nada quando os arquivos são iguais; uma mensagem de erro indicaria que eles são diferentes:

cmp docs/guide.txt docs/guide-backup.txt

mv SOURCE DESTINATION move ou renomeia um item. Mova o backup para a raiz do espaço de trabalho e dê a ele um nome mais claro:

mv docs/guide-backup.txt archived-guide.txt

Liste os dois locais:

ls docs
ls

Você deverá ver guide.txt em docs e archived-guide.txt no diretório atual.

rm remove permanentemente um arquivo nomeado; normalmente, não há uma lixeira no terminal. Remova somente o arquivo de notas descartável:

rm logs/notes.txt

Liste o diretório novamente para tornar a exclusão observável:

ls logs

notes.txt não deverá mais aparecer. O guia original e sua cópia movida continuam disponíveis, enquanto o único arquivo descartável explicitamente nomeado foi removido.

Trabalhe mais rápido com atalhos do terminal

Nesta etapa, você praticará quatro controles do terminal que reduzem a digitação e ajudam a interromper um comando que continua em execução.

Primeiro, entre no diretório de documentos:

cd /home/labex/project/file-basics/workspace/docs

Execute um comando que você reutilizará:

cat guide.txt

Pressione a seta para cima (Up Arrow) uma vez. O comando anterior cat guide.txt deverá reaparecer no prompt. Pressione Enter para executá-lo novamente. Recuperar comandos evita redigitá-los e ainda permite editar a linha recuperada antes da execução.

Em seguida, digite cat g sem pressionar Enter e depois pressione Tab. Como somente guide.txt corresponde, o shell deverá completar o nome do arquivo. Pressione Enter para executar o comando completo.

Agora inicie um comando que aguarda continuamente:

tail -f /dev/null

tail -f acompanha um arquivo e aguarda novos dados. /dev/null nunca fornece linhas úteis, portanto, o comando parecerá ficar parado em silêncio. Pressione Ctrl+C para enviar uma interrupção e retornar ao prompt. Essa é a resposta padrão inicial quando você precisa interromper um comando em primeiro plano.

Pressione Ctrl+L para limpar a saída antiga da tela visível. Assim como clear, isso não exclui arquivos nem o histórico de comandos.

Crie um marcador de conclusão depois de retornar ao prompt:

echo "Shortcuts practiced" > /home/labex/project/file-basics/shortcuts-complete.txt
cat /home/labex/project/file-basics/shortcuts-complete.txt

O marcador confirma que você recuperou o prompt com sucesso após a prática interativa.

Resumo

Você aprendeu como o diretório de trabalho e os caminhos controlam as operações com arquivos. Navegou usando caminhos absolutos e relativos, examinou entradas ocultas e metadados, criou uma árvore de diretórios e arquivos de texto, selecionou nomes com curingas e comparou cópia, movimentação e remoção permanente. Você também praticou a recuperação de comandos, o preenchimento com Tab, Ctrl+C e Ctrl+L. O próximo laboratório ensina como encontrar ajuda confiável quando surgir um comando ou uma opção desconhecida.