linux.playground

trilha / arco 2 · mexer em arquivo

o que é touch e o que ele faz

o backup copia só o que mudou desde a última vez. um arquivo mudou e ficou de fora. alguém mexeu na data dele, e o backup confiou na data.

em poucos minutos: o que o touch faz, a diferença para o >, e a data que ninguém consegue mudar. 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

é carimbar a data na capa da pasta. o carimbo muda, o que está dentro não.

para quem está começando

se o arquivo não existe, cria um vazio. se existe, só muda a data dele para agora. o conteúdo nunca é tocado.

a fonte da verdade

o touch não abre o arquivo para escrever: ele pede ao kernel para mudar as datas guardadas no inode. o > é outro caso: abre o arquivo para escrita e zera o conteúdo antes.

o número por trás do nome

cada arquivo guarda três datas: atime (último acesso), mtime (última modificação do conteúdo) e ctime (última mudança do inode). o touch -d escolhe as duas primeiras. o ctime vira agora, e ninguém escolhe.

agora você

terminal fechado

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

  1. cria um arquivo chamado notas.txt, que não existe, e olha o tamanho dele.

    touch notas.txt && ls -l notas.txt

  2. o relatorio.txt já existe e tem 12 bytes. o que acontece com o conteúdo se você rodar touch nele?

  3. agora o contraste. o rascunho.txt tem texto. zera ele com o sinal de maior, sem nenhum comando na frente, e confere o tamanho.

    > rascunho.txt; wc -c rascunho.txt

  4. mostra as três datas do relatorio.txt.

    stat relatorio.txt

  5. volta a data do relatorio.txt para 2020 e compara a data de modificação (%y) com a de mudança (%z).

    touch -d "2020-01-01" relatorio.txt && stat -c "%y | %z" relatorio.txt

cuidado: find -newer confia numa data que o touch muda

o arquivo ~/backup.sh lista os arquivos do ~/projeto que mudaram desde o último backup. ele usa o find com -newer. só que o contas.txt foi editado hoje e alguém voltou a data dele para 2020 com touch -d. o -newer olha a data de modificação e não vê esse arquivo. passo 1: veja o problema. rode ~/backup.sh. o contas.txt não está na lista. depois rode stat projeto/contas.txt e compare Modify com Change. passo 2: conserte o script. abra com nano ~/backup.sh. para salvar: ctrl+o e enter. para sair: ctrl+x. passo 3: teste. rode ~/backup.sh de novo e confira que o contas.txt aparece.

a pílula

touch arquivocria vazio, ou muda a data
touch -d 'data' arquivoescolhe a data
stat arquivomostra as três datas

touch muda a data. nunca o conteúdo.

quiz

1. o que acontece com o conteúdo de um arquivo que existe quando você roda touch nele?
2. o backup usa find -newer e um arquivo editado hoje ficou de fora. o que pode ter acontecido?
3. qual das datas o touch não consegue escolher?

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