Alura > Cursos de DevOps > Cursos de Linux > Conteúdos de Linux > Primeiras aulas do curso Certificação Linux LPI Essentials: Redirecting I/O Redirection

Certificação Linux LPI Essentials: Redirecting I/O Redirection

Redirecionando a saída padrão - Apresentação

Boas-vindas a quinta parte do nosso curso de Certificação Linux LPI Essential, mais precisamente, LPI E6. Sou o Ricardo Merces e serei seu instrutor.

Ricardo Merces é uma pessoa de pele clara, rosto arredondado e olhos escuros. É careca e está com barba por fazer. Está com uma camiseta rosa e sentado em uma cadeira gamer preta e vermelha. Ao fundo, uma parede lisa na cor azul. Na lateral esquerda uma prateleira.

Além da certificação, esse curso também é voltado para quem deseja se aprofundar e entender o Linux para realizar tarefas cotidianas.

Neste módulo, vamos nos concentrar principalmente em entrada e saída, redirecionamento. Isso inclui, por exemplo, como lidar com informações que caem na saída padrão e processá-las no arquivo, como redirecionar a saída de um comando para outro comando, além de outros cenários.

Como pré-requisito, é importante que você tenha concluído os outros cursos dessa formação, afinal, daremos continuidade no aprendizado. Além disso, as explicações do módulo anterior certamente será útil para você realizar as tarefas que faremos.

Vamos começar?

Redirecionando a saída padrão - Como funciona a saída padrão

Na apresentação do curso, mencionamos que nosso foco será nos redirecionamentos, entrada padrão, saída padrão e erros.

Saída Padrão

Para que tudo isso aconteça, é importante entender como o Linux trata essas saídas. A primeira parte que abordaremos é a saída padrão, que se chama stdout.

Para esse curso, é importante que você tenha passado pelos módulos anteriores. No primeiro, usamos uma máquina virtual e fizemos todo o processo de instalação. Caso você tenha alguma dúvida, recomendamos que você retorne nesse curso.

Se você não possui todos os diretórios, não se preocupe, faremos o passo a passo. Começamos criando o diretório que usaremos.

Para isso, passamos o comando mkdir -p seguido de LPI/redirecionamento, pois estamos na home, isso é importante. Em seguida apertamos "Enter".

mkdir -p LPI/redirecionamento

Assim, criamos nossa estrutura. Vamos relembrar de alguns comandos. Se passarmos pwd, dessa forma:

pwd

É exibido onde estamos. Nesse caso, estamos em home/ricardo. Se passarmos ls:

ls

Assim temos o diretório dead.letter. Caso já exista, passamos cd LPI, caso não, passamos -p.

Dentro do diretório, criamos o redirecionamento. Fizemos isso apenas para facilitar a organização. Mas, obviamente, você pode trabalhar isso em qualquer diretório.

Ao digitar echo "teste de mensagem", que é o comando echo, seguido de "Enter".

teste de mensagem

Como resultado temos a saída padrão que é o monitor onde conseguimos visualizar para realizar as interações necessárias. Portanto:

teste de mensagem

Nesse comando, não fizemos nada em relação ao redirecionamento dessa saída. Portanto, ele exibiu a informação na tela.

Porém, a habilidade está relacionada a conseguir trabalhar com essa informação. Suponhamos que você não queira que isso seja destinado à saída padrão, mas sim para um arquivo.

Para isso, após echo "teste de mensagem" adicionamos o sinal > seguido do arquivo no qual queremos destinar a saída, nesse caso mensagem.txt.

echo "teste de mensagem mensagem.txt

Ao executar notamos que nada aconteceu na tela. Isso porque a saída padrão foi direcionada para o arquivo mensagem.txt.

Para visualizar o conteúdo de um arquivo, passamos cat mensagem.txt.

cat mensagem.txt

Ao executar esse comando, temos o seguinte retorno:

teste de mensagem

Isso significa que deu certo, o conteúdo está lá. O sinal de maior >, seguido do nome do arquivo, redirecionou a saída padrão.

Mas, a saída padrão se limita a isso? Não! Há outras formas para explorar. Faremos isso no próximo vídeo!

Te esperamos lá!

Redirecionando a saída padrão - Redirecionando a saída padrão para um arquivo

Daremos continuidade do ponto que paramos no vídeo anterior. Temos o arquivo mensagem.txt, para visualizá-lo, usamos o comando cat.

cat mensagem.txt

Como retorno temos:

teste de mensagem

Redirecionando a saída padrão para um arquivo

Agora, imagine o seguinte cenário. Queremos adicionar uma nova mensagem a esse mesmo arquivo. Para isso, usamos o comando echo, seguido de espaço, aspas duplas e nova mensagem. Em seguida, adicionamos o redirecionamento, ou seja, o sinal >. Por fim, passamos o arquivo mensagem.txt.

echo "nova mensagem" > mensagem.txt

Note que nada foi retornado para a saída padrão, indicando que o comando foi executado com sucesso. Agora, analisaremos o arquivo. Para isso, passamos novamente o comando cat.

cat mensagem.txt

Como retorno temos:

nova mensagem

Repare que há algo de errado. O conteúdo do arquivo mensagem.txt só está exibindo a última entrada, ou seja, só foi armazenado no arquivo a última mensagem que passamos, ele subscreveu a mensagem ao invés de salvar as duas. Esse comportamento é muito importante de ser frisado, pois o Shell executou exatamente o que lhe foi instruído.

Se analisarmos o comando e o que acontece por baixo dos panos, quando colocamos o sinal de maior que >, se um arquivo destino não existir, então será criado. Tanto que quando fizemos o primeiro direcionamento o arquivo não existia, então foi criado e adicionou o conteúdo.

Mas, ao repetir o comando e mudar a mensagem, o arquivo foi substituído, portanto, o que já estava armazenado foi perdido. Porém, há uma forma de reaproveitarmos tudo isso.

Para isso, apertamos o botão "Seta para cima" para usarmos o mesmo comando e mudamos o texto para nova mensagem-2. Se apertarmos "Enter", a mensagem será subscrita novamente. Para que isso não ocorra, adicionamos mais um sinal de >. Dessa forma:

echo "nova mensagem" >> mensagem.txt

Ao rodar, não aparece nada como saída padrão. Passamos cat mensagem.txt. Feito isso, temos o retorno abaixo:

nova mensagem nova mensagem-2

Deu certo. Repare que ele manteve o primeiro arquivo e acrescentou a nova informação. Isso pode ser aplicado em qualquer situação que envolva a saída padrão.

Outra possível questão que pode surgir é a seguinte: e se escrevermos um script que adiciona uma nova mensagem ao arquivo automaticamente?. Imagine que seu script tenha a seguinte linha echo "log xpto" seguido de > script.log.

Estamos escrevendo coisas aleatórias para mostrar que não há uma conexão específica com o conteúdo do arquivo, já que o Linux ignora completamente o conteúdo e executa a ação que lhe foi instruída.

Como queremos manter o arquivo, adicionamos o segundo sinal de >. Porém, o arquivo script.log ainda não existe. Será que funcionará? Rodaremos o comando.

echo "log xpto" >> script.log

Não aparece nada, portando passamos o comando ls. Assim, temos o retorno abaixo:

mensagem.txt script.log

Deu certo! Portanto, o conceito de criação do arquivo, mesmo que ele não exista, se aplica tanto ao uso de maior > quanto à utilização de dois sinais de maior >>. Isso é muito importante, pois se você escreveu o script, não há necessidade de se preocupar caso o arquivo não exista. Assim, na primeira execução, é realizado a gravação.

Esse foi um resumo sobre a saída padrão. Recomendamos que você teste e aplique os comandos para evoluir o seu aprendizado.

Te esperamos na aula seguinte!

Sobre o curso Certificação Linux LPI Essentials: Redirecting I/O Redirection

O curso Certificação Linux LPI Essentials: Redirecting I/O Redirection possui 69 minutos de vídeos, em um total de 20 atividades. Gostou? Conheça nossos outros cursos de Linux em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Linux acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas