linux.playground

trilha / arco 1 · onde eu estou

o que é cat e o que ele faz

o arquivo parece idêntico ao que funciona. o script não roda, a variável chega com um caractere a mais, e o cat mostrou tudo certinho. o cat mostra o que está no arquivo. o terminal esconde parte.

em poucos minutos: o que o cat faz, o que o -A revela que o olho não vê, e o erro que zera um arquivo antes de você ler. a pílula fica no final.

o vídeo desta aula sai em breve.
a aula já funciona: lê, treina no terminal e faz o quiz.

escolhe a camada

em uma frase

é abrir a carta e ler em voz alta. se a carta tem uma letra invisível, quem lê não enxerga.

para quem está começando

lê um ou mais arquivos e escreve o conteúdo na tela, na ordem em que você passou. não edita nada, só mostra.

a fonte da verdade

o cat lê os bytes do arquivo e escreve na saída, sem interpretar. quem esconde é o terminal: o byte 13 (CR) manda o cursor para o começo da linha e não desenha nada. o cat -A troca o byte invisível por um nome: ^M.

o número por trás do nome

o ^M é o byte 13, o retorno de carro. o fim de linha do Linux é só o byte 10. o do Windows é 13 e 10 juntos, por isso cada linha ganha um byte a mais.

mac vs linux

no mac o cat é do bsd e não tem -A. o equivalente é cat -et: mostra o ^M e o $ do fim de linha.

agora você

terminal fechado

um linux de verdade, só seu, apagado quando você sai.

  1. mostra o arquivo env-crlf, o que veio de um editor do Windows.

    cat env-crlf

  2. pede ao cat para mostrar o que está escondido, no mesmo arquivo.

    cat -A env-crlf

  3. env-unix e env-crlf têm as mesmas duas linhas de texto. o wc -c conta os bytes. qual deles é maior?

  4. numera as linhas do env-unix.

    cat -n env-unix

  5. roda o deploy.sh pelo nome. ele tem o mesmo problema do env-crlf, na primeira linha.

    ./deploy.sh

cuidado: cat a b > a zera o a antes de ler

o arquivo ~/juntar.sh junta o extra.env no fim do producao.env, na pasta ~/config. só que o cat dele escreve no mesmo arquivo que lê. o shell zera o arquivo de saída antes de o cat abrir. passo 1: veja o estrago. rode ~/juntar.sh e depois cat config/producao.env. o arquivo ficou vazio, ou quase. para trazer tudo de volta, digite restaurar-env (só esse nome, sem ./ e sem .sh). passo 2: conserte o script. abra com nano ~/juntar.sh. para salvar: ctrl+o e enter. para sair: ctrl+x. passo 3: teste. rode ~/juntar.sh de novo e confira com cat config/producao.env que as linhas antigas continuam e as novas entraram no fim.

a pílula

cat arquivomostra o conteúdo
cat -A arquivomostra o ^M e o fim da linha
cat -n arquivonumera as linhas

cat -A mostra o que o terminal esconde.

quiz

1. o env-crlf parece igual ao env-unix no cat, mas a variável chega com lixo. o que mostra a diferença?
2. por que um arquivo com 2 linhas em CRLF tem 2 bytes a mais que o mesmo arquivo com LF?
3. o que o cat a.env b.env > a.env faz com o a.env?

próxima: o que é less e o que ele faz