Gerenciar Arquivos no Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você ganhará experiência prática no gerenciamento de arquivos e diretórios usando ferramentas essenciais de linha de comando em um ambiente RHEL. Você aprenderá a explorar sua localização atual e listar conteúdos com pwd e ls, navegar por diretórios e criar arquivos usando cd e touch, e organizar arquivos e diretórios de forma eficaz com mkdir, cp, mv e rm.

Além disso, você descobrirá como criar links entre arquivos usando ln (links físicos e simbólicos) e selecionar arquivos eficientemente com expansões de shell, equipando você com habilidades fundamentais para o gerenciamento de arquivos na linha de comando.

Explore Sua Localização Atual e Liste Conteúdos com pwd e ls

Nesta etapa, você aprenderá como explorar sua localização atual no sistema de arquivos e listar seu conteúdo usando os comandos pwd e ls. Compreender seu diretório de trabalho atual e ser capaz de visualizar seu conteúdo são habilidades fundamentais para navegar e gerenciar arquivos a partir da linha de comando.

Primeiro, vamos determinar seu diretório de trabalho atual usando o comando pwd. pwd significa "print working directory" (imprimir diretório de trabalho) e exibe o nome completo do caminho de sua localização atual no sistema de arquivos.

pwd

Você deverá ver uma saída semelhante a esta, indicando seu diretório atual:

/home/labex

Em seguida, você usará o comando ls para listar o conteúdo do seu diretório atual. ls significa "list" (listar) e lista o conteúdo de diretórios para o diretório especificado ou, se nenhum diretório for fornecido, para o diretório de trabalho atual.

ls

Você deverá ver uma saída mostrando o conteúdo do seu diretório home:

project

O comando ls possui várias opções úteis para exibir mais informações sobre arquivos e diretórios.

  1. A opção -l (formato de listagem longa) fornece informações detalhadas sobre cada arquivo e diretório, incluindo permissões, número de links físicos, proprietário, grupo, tamanho e hora da última modificação.

    ls -l

    Você deverá ver uma saída semelhante a esta:

    total 0
    drwxr-xr-x 2 labex labex 6 Aug 27  2024 project
  2. A opção -a (todos os arquivos) lista todos os arquivos, incluindo arquivos ocultos. No Linux, nomes de arquivos que começam com um ponto (.) são considerados ocultos. Além disso, . refere-se ao diretório atual e .. refere-se ao diretório pai.

    ls -a

    Você deverá ver uma saída semelhante a esta, incluindo arquivos de configuração ocultos:

    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .tmux.conf  project
  3. Combinar -l e -a como -la fornece uma listagem longa de todos os arquivos, incluindo os ocultos.

    ls -la

    Isso mostrará informações detalhadas para todos os arquivos e diretórios, incluindo os ocultos:

    total 20
    drwx------ 1 labex labex  72 Jun  4 03:12 .
    drwxr-xr-x 1 root  root   19 Aug 27  2024 ..
    -rw------- 1 labex labex  31 Jun  4 03:13 .bash_history
    -rw-r--r-- 1 labex labex  18 Feb 15  2024 .bash_logout
    -rw-r--r-- 1 labex labex 141 Feb 15  2024 .bash_profile
    -rw-r--r-- 1 labex labex 877 Jun  4 03:12 .bashrc
    -rw-r--r-- 1 labex labex  68 Aug 27  2024 .tmux.conf
    drwxr-xr-x 2 labex labex   6 Aug 27  2024 project
  4. A opção -R (recursiva) lista o conteúdo de todos os subdiretórios recursivamente. Para demonstrar isso, vamos primeiro criar um subdiretório.

    mkdir mydir

    Agora, use ls -R para ver a listagem recursiva.

    ls -R

    Você deverá ver os diretórios mydir e project listados, seguidos por seus conteúdos:

    .:
    mydir  project
    
    ./mydir:
    
    ./project:

    Finalmente, vamos remover o diretório mydir para limpar o ambiente para as próximas etapas.

    rmdir mydir

    Este comando funciona apenas para diretórios vazios. Você aprenderá mais sobre rmdir e rm em uma etapa posterior.

Exemplo de saída do comando ls

Nesta etapa, você aprenderá como mudar seu diretório de trabalho atual usando o comando cd e criar arquivos vazios usando o comando touch. Esses comandos são essenciais para organizar seus arquivos e navegar pelo sistema de arquivos de forma eficiente.

Primeiro, vamos verificar sua localização atual e navegar até o diretório project que foi mostrado na etapa 1.

pwd

Você deverá ver /home/labex como saída (seu diretório home).

Agora, vamos navegar até o diretório project usando o comando cd:

cd project

Verifique sua nova localização:

pwd

Você deverá agora ver /home/labex/project como saída.

Agora, vamos criar um novo diretório chamado documents dentro do seu diretório project atual. Você usará o comando mkdir, que você encontrou brevemente na etapa anterior.

mkdir documents

Verifique se o diretório documents foi criado:

ls

Você deverá ver documents listado na saída.

Em seguida, você usará o comando cd para mudar o diretório de trabalho atual do seu shell para o diretório documents recém-criado.

cd documents

Após mudar de diretório, é uma boa prática confirmar sua nova localização usando pwd:

pwd

A saída agora deve ser /home/labex/project/documents.

O comando cd oferece várias opções convenientes para navegação:

  1. cd -: Este comando muda para o diretório anterior em que você estava. Vamos tentar.

    cd -

    Você deverá retornar para /home/labex/project. Verifique com pwd:

    pwd

    Agora, use cd - novamente para retornar para /home/labex/project/documents:

    cd -

    E verifique com pwd:

    pwd
  2. cd ..: Este comando usa o diretório oculto .. (dois pontos) para subir um nível para o diretório pai, sem a necessidade de saber o nome exato do pai.

    cd ..

    Você deverá agora estar em /home/labex/project. Verifique com pwd:

    pwd

    Você pode encadear .. para subir vários níveis. Por exemplo, para ir para /home/labex a partir de /home/labex/project:

    cd ../

    Verifique sua localização:

    pwd

    Você deverá estar em /home/labex.

  3. cd (sem argumentos): Este comando sempre o levará de volta ao seu diretório home, que é /home/labex para o usuário labex.

    cd

    Verifique sua localização:

    pwd

    Você deverá estar em /home/labex.

Agora, vamos retornar ao seu diretório ~/project/documents para criar alguns arquivos.

cd ~/project/documents

Verifique sua localização:

pwd

A saída deve ser /home/labex/project/documents.

Você usará agora o comando touch. O comando touch atualiza o timestamp de um arquivo para a data e hora atuais sem modificá-lo de outra forma. Este comando também é muito útil para criar arquivos vazios.

Vamos criar dois arquivos vazios chamados report.txt e notes.txt no diretório ~/project/documents.

touch report.txt notes.txt

Verifique se os arquivos foram criados usando ls -l:

ls -l

Você deverá ver uma saída semelhante a esta, mostrando os arquivos recém-criados:

total 0
-rw-rw-r--. 1 labex labex 0 Mar  7 HH:MM report.txt
-rw-rw-r--. 1 labex labex 0 Mar  7 HH:MM notes.txt

Finalmente, vamos criar um novo diretório chamado drafts dentro de ~/project/documents e, em seguida, criar um arquivo dentro dele.

mkdir drafts
cd drafts
touch draft_v1.txt

Verifique a criação do arquivo:

ls -l

Você deverá ver draft_v1.txt listado.

Agora, navegue de volta para o seu diretório ~/project usando um único comando cd.

cd ~/project

Verifique sua localização:

pwd

A saída deve ser /home/labex/project.

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

Nesta etapa, você aprenderá sobre a criação de links entre arquivos usando o comando ln. Os sistemas de arquivos Linux suportam dois tipos de links: links hard (ou rígidos) e links simbólicos (ou soft). Compreender a diferença entre eles é crucial para um gerenciamento de arquivos eficaz.

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.

Vamos criar um novo arquivo chamado original_file.txt com algum conteúdo para trabalhar.

echo "This is the content of the original file." > original_file.txt

Verifique o conteúdo do arquivo:

cat original_file.txt

Um link hard é essencialmente outro nome para um arquivo existente. Ele aponta diretamente para os mesmos dados (inode) no dispositivo de armazenamento que o arquivo original. Após a criação de um link hard, você não consegue distinguir entre o novo link hard e o nome original do arquivo; ambos são formas igualmente válidas de acessar os mesmos dados.

Você pode determinar se um arquivo possui múltiplos links hard usando o comando ls -l. A segunda coluna na saída do ls -l mostra o número de links hard para o arquivo.

Inicialmente, original_file.txt tem um link hard (ele mesmo):

ls -l original_file.txt

Você deverá ver uma saída semelhante a esta, onde o número 1 indica um link hard:

-rw-rw-r--. 1 labex labex 35 Mar  7 HH:MM original_file.txt

Agora, vamos criar um link hard para original_file.txt chamado hard_link.txt usando o comando ln.

ln original_file.txt hard_link.txt

Verifique a contagem de links hard para ambos os arquivos:

ls -l original_file.txt hard_link.txt

Você deverá agora ver a contagem de links hard como 2 para ambos os arquivos, indicando que eles apontam para os mesmos dados:

-rw-rw-r--. 2 labex labex 35 Mar  7 HH:MM hard_link.txt
-rw-rw-r--. 2 labex labex 35 Mar  7 HH:MM original_file.txt

Para confirmar que eles apontam para os mesmos dados, você pode usar a opção ls -i para listar o número do inode de cada arquivo. Se os arquivos estiverem no mesmo sistema de arquivos e seus números de inode forem os mesmos, então os arquivos são links hard que apontam para o mesmo conteúdo de arquivo de dados.

ls -i original_file.txt hard_link.txt

Os números de inode devem ser idênticos:

1234567 original_file.txt  1234567 hard_link.txt

Se você modificar o conteúdo de um arquivo, as alterações serão refletidas no outro, pois são os mesmos dados subjacentes.

echo "Adding new line." >> hard_link.txt
cat original_file.txt

Você verá:

This is the content of the original file.
Adding new line.

Mesmo que o arquivo original seja excluído, você ainda pode acessar o conteúdo do arquivo, desde que pelo menos um outro link hard exista. Os dados são excluídos do armazenamento apenas quando o último link hard é excluído, tornando o conteúdo do arquivo não referenciado por nenhum link hard.

Vamos remover original_file.txt:

rm original_file.txt

Agora, tente acessar hard_link.txt:

cat hard_link.txt

Você ainda verá o conteúdo:

This is the content of the original file.
Adding new line.

A contagem de links hard para hard_link.txt deverá agora ser 1:

ls -l hard_link.txt

Limitações dos Hard Links:

  • Você só pode usar links hard com arquivos regulares. Você não pode usar o comando ln para criar um link hard para um diretório ou arquivo especial.
  • Você só pode usar links hard se ambos os arquivos estiverem no mesmo sistema de arquivos. Você pode usar o comando df para listar os sistemas de arquivos.

Um link simbólico (também chamado de "soft link" ou "symlink") é um tipo especial de arquivo que aponta para outro arquivo ou diretório pelo seu caminho. É semelhante a um atalho no Windows. Ao contrário dos links hard, os links simbólicos não apontam diretamente para os dados; eles apontam para o nome do arquivo ou diretório de destino.

Vamos criar um novo arquivo chamado target_file.txt para o nosso link simbólico.

echo "This is the target file for the symbolic link." > target_file.txt

Agora, crie um link simbólico chamado sym_link.txt apontando para target_file.txt usando o comando ln -s.

ln -s target_file.txt sym_link.txt

Verifique os detalhes do link simbólico usando ls -l:

ls -l target_file.txt sym_link.txt

Você notará algumas diferenças:

  • O primeiro caractere da listagem longa para sym_link.txt é l (letra l), indicando que é um link simbólico.
  • A saída mostra sym_link.txt -> target_file.txt, mostrando explicitamente para o que ele aponta.
  • O tamanho do link simbólico é muito pequeno (é apenas o comprimento do caminho de destino), não o tamanho do arquivo de destino.
  • A contagem de links hard para sym_link.txt é 1.
-rw-rw-r--. 1 labex labex 45 Mar  7 HH:MM target_file.txt
lrwxrwxrwx. 1 labex labex 14 Mar  7 HH:MM sym_link.txt -> target_file.txt

Você pode acessar o conteúdo de target_file.txt através de sym_link.txt:

cat sym_link.txt

Você verá:

This is the target file for the symbolic link.

Principais diferenças e comportamentos dos Links Simbólicos:

  • Vinculação entre sistemas de arquivos: Links simbólicos podem vincular dois arquivos em sistemas de arquivos diferentes.

  • Vinculação a diretórios: Links simbólicos podem apontar para um diretório, não apenas para um arquivo regular. Vamos criar um link simbólico para o seu diretório documents.

    ln -s documents doc_shortcut

    Agora, você pode usar cd para entrar em doc_shortcut como se fosse o próprio diretório documents:

    cd doc_shortcut

    Verifique sua localização. Observe que pwd por padrão mostra o caminho do link simbólico:

    pwd

    Saída: /home/labex/project/doc_shortcut

    Se você quiser que pwd mostre o caminho real do diretório para o qual o link simbólico aponta, use a opção -P:

    pwd -P

    Saída: /home/labex/project/documents

    Agora, volte para ~/project:

    cd ~/project
  • Links simbólicos quebrados (dangling): Quando o arquivo regular original (o destino) é excluído, o link simbólico ainda existe, mas aponta para um arquivo ausente. Isso é chamado de "dangling symbolic link" (link simbólico pendente).

    Vamos remover target_file.txt:

    rm target_file.txt

    Agora, verifique sym_link.txt com ls -l:

    ls -l sym_link.txt

    Você verá que sym_link.txt ainda existe, mas seu destino target_file.txt é mostrado em vermelho ou em uma cor diferente (dependendo da configuração do seu terminal) para indicar que está quebrado:

    lrwxrwxrwx. 1 labex labex 14 Mar  7 HH:MM sym_link.txt -> target_file.txt

    Se você tentar usar cat no link simbólico pendente, ele falhará:

    cat sym_link.txt

    Saída:

    cat: sym_link.txt: No such file or directory

Finalmente, vamos limpar os arquivos e links criados nesta etapa.

rm hard_link.txt sym_link.txt doc_shortcut
ls

Você deverá ver apenas os diretórios documents e reports restantes das etapas anteriores.

Selecione Arquivos Eficientemente com Expansões de Shell

Nesta etapa, você aprenderá a selecionar eficientemente arquivos e diretórios usando vários recursos de expansão do shell, incluindo correspondência de padrões (globbing), expansão de til (~), expansão de chaves ({}), expansão de variáveis e substituição de comandos. Esses recursos permitem que você execute operações em vários arquivos com comandos concisos.

Primeiro, certifique-se de estar no seu diretório ~/project.

cd ~/project

Verifique sua localização atual:

pwd

A saída deve ser /home/labex/project.

Para demonstrar as expansões do shell, vamos criar um conjunto de arquivos e diretórios.

mkdir data
cd data
touch file1.txt file2.log file_a.txt file_b.log report_2023.txt report_2024.log
touch image.jpg document.pdf archive.zip
mkdir dir1 dir2 dir3
cd ..

Agora, liste o conteúdo do diretório data para ver os arquivos que você criou:

ls data

Você deverá ver:

archive.zip  dir1  dir2  dir3  document.pdf  file1.txt  file2.log  file_a.txt  file_b.log  image.jpg  report_2023.txt  report_2024.log

Correspondência de Padrões (Globbing)

A correspondência de padrões, também conhecida como globbing, permite selecionar arquivos com base em padrões usando caracteres especiais chamados metacaracteres.

Metacaractere Corresponde a Exemplo
* Qualquer sequência de zero ou mais caracteres. *.txt corresponde a todos os arquivos terminados em .txt.
? Qualquer caractere único. file?.txt corresponde a file1.txt, fileA.txt, etc.
[abc...] Qualquer caractere único na classe contida. file[12].txt corresponde a file1.txt ou file2.txt.
[!abc...] Qualquer caractere único que não está na classe contida. file[!1].txt corresponde a fileA.txt, mas não a file1.txt.
[[:alpha:]] Qualquer caractere alfabético. file[[:alpha:]].txt corresponde a fileA.txt.
[[:digit:]] Qualquer dígito único de 0 a 9. file[[:digit:]].txt corresponde a file1.txt.

Vamos tentar alguns exemplos dentro do diretório data.

  1. Usando *:
    Liste todos os arquivos terminados em .txt:

    ls data/*.txt

    Saída:

    data/file1.txt  data/file_a.txt  data/report_2023.txt

    Liste todos os arquivos que contêm file no nome:

    ls data/*file*

    Saída:

    data/file1.txt  data/file2.log  data/file_a.txt  data/file_b.log
  2. Usando ?:
    Liste arquivos que têm exatamente um caractere antes de .log:

    ls data/file?.log

    Saída:

    data/file2.log
  3. Usando [] para conjuntos de caracteres:
    Liste arquivos que começam com report_ e têm 2023 ou 2024 no nome:

    ls data/report_[2][0][2][34].*

    Saída:

    data/report_2023.txt  data/report_2024.log
  4. Usando {} para expansão de chaves (brace expansion):
    Liste arquivos que começam com file e terminam com .txt ou .log:

    ls data/file*.{txt,log}

    Saída:

    data/file1.txt  data/file2.log  data/file_a.txt  data/file_b.log

Expansão de Til ~

O caractere til (~) se expande para o diretório home do usuário atual (/home/labex). Quando seguido por um nome de usuário, ele se expande para o diretório home desse usuário.

echo ~

Saída:

/home/labex
echo ~root

Saída:

/root
echo ~/project/data

Saída:

/home/labex/project/data

Expansão de Chaves {} (Brace Expansion)

A expansão de chaves gera strings arbitrárias. É útil para criar listas de arquivos ou diretórios com nomes semelhantes sem digitar cada um individualmente.

  1. Lista separada por vírgulas:
    Crie os arquivos report_jan.txt, report_feb.txt, report_mar.txt:

    touch data/report_{jan,feb,mar}.txt

    Liste-os:

    ls data/report_*.txt

    Saída:

    data/report_2023.txt  data/report_jan.txt  data/report_feb.txt  data/report_mar.txt
  2. Intervalo de números ou letras:
    Crie os arquivos doc1.txt, doc2.txt, doc3.txt:

    touch data/doc{1..3}.txt

    Liste-os:

    ls data/doc*.txt

    Saída:

    data/doc1.txt  data/doc2.txt  data/doc3.txt

    Crie os diretórios chapterA, chapterB, chapterC:

    mkdir data/chapter{A..C}

    Liste-os:

    ls data/chapter*

    Saída:

    data/chapterA  data/chapterB  data/chapterC

Expansão de Variáveis

As variáveis do shell armazenam valores que podem ser expandidos em comandos. Você define uma variável usando VARNAME=valor e acessa seu valor usando $VARNAME ou ${VARNAME}.

MY_DIR=data
echo "My directory is: $MY_DIR"

Saída:

My directory is: data

Você pode usar variáveis em comandos:

ls $MY_DIR

A saída será o conteúdo do diretório data.

Substituição de Comando (Command Substitution)

A substituição de comando permite que você use a saída de um comando como parte de outro comando. Isso é feito envolvendo o comando em $(comando) ou crases `comando`. A sintaxe $(comando) é geralmente preferida, pois pode ser aninhada.

Vamos obter a data atual e usá-la em um nome de arquivo.

touch data/log_$(date +%Y-%m-%d).txt

Liste o diretório data para ver o novo arquivo:

ls data/log_*.txt

A saída será semelhante a:

data/log_2024-03-07.txt

Você também pode usá-la para contar arquivos:

echo "There are $(ls data | wc -l) items in the data directory."

A saída será semelhante a:

There are 19 items in the data directory.

Protegendo Argumentos Contra Expansão

Às vezes, você deseja impedir que o shell expanda certos caracteres. Você pode fazer isso usando:

  1. Barra invertida (\): Escapa o próximo caractere único.

    echo "The value of \$HOME is your home directory."

    Saída:

    The value of $HOME is your home directory.
  2. Aspas simples (''): Impedem toda a expansão do shell dentro das aspas.

    echo 'The current date is $(date +%Y-%m-%d).'

    Saída:

    The current date is $(date +%Y-%m-%d).
  3. Aspas duplas (""): Impedem a maior parte da expansão do shell, mas permitem a expansão de variáveis ($VAR) e a substituição de comandos ($()).

    MY_DATE=$(date +%Y-%m-%d)
    echo "Today's date is $MY_DATE."

    Saída:

    Today's date is 2024-03-07.

    Compare com as aspas simples:

    echo 'Today is $MY_DATE.'

    Saída:

    Today's date is $MY_DATE.

Finalmente, vamos limpar o diretório data.

rm -r data

Resumo

Neste laboratório, você aprendeu ferramentas fundamentais de linha de comando para gerenciar arquivos e diretórios no RHEL. Você começou dominando pwd para identificar seu diretório de trabalho atual e ls para listar o conteúdo do diretório, incluindo o uso de opções como -l para informações detalhadas e -a para revelar arquivos ocultos. Em seguida, progrediu para navegar no sistema de arquivos com cd e criar novos arquivos com touch.

Além disso, você ganhou proficiência na organização do seu sistema de arquivos usando mkdir para criar diretórios, cp para copiar arquivos e diretórios, mv para movê-los ou renomeá-los, e rm para removê-los. O laboratório também cobriu a criação de links hard e simbólicos usando ln, e como selecionar arquivos eficientemente usando expansões do shell, aprimorando sua capacidade de gerenciar arquivos e diretórios de forma eficaz a partir da linha de comando.