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.
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ê
um linux de verdade, só seu, apagado quando você sai.
cria um arquivo chamado notas.txt, que não existe, e olha o tamanho dele.
touch notas.txt && ls -l notas.txto relatorio.txt já existe e tem 12 bytes. o que acontece com o conteúdo se você rodar touch nele?
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.txtmostra as três datas do relatorio.txt.
stat relatorio.txtvolta 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 arquivo | cria vazio, ou muda a data |
touch -d 'data' arquivo | escolhe a data |
stat arquivo | mostra as três datas |
touch muda a data. nunca o conteúdo.