O que significa 'touch'?

5

Minha pergunta não é tanto uma questão de ciência da computação, mas sim uma questão de etimologia.

O comando touch altera o acesso ao arquivo e os tempos de modificação.

O que significa 'toque'?

    
por Remi.b 01.04.2017 / 00:05

2 respostas

13

Não significa nada; não é uma abreviação ou um inicialismo. É um verbo.

Quando você touch a um arquivo, você está "colocando novas impressões digitais", atualizando sua data de última modificação (ou criando-a se ela ainda não existir).

    
por 01.04.2017 / 00:15
1

Como diz DopeGhoti, atualizar os timestamps para a hora atual se encaixa bem com o significado semântico da palavra inglesa. É comum falar sobre "tocar" os dados na memória para significar acessá-los (por exemplo, "essa função toca 2 GB de dados, então isso destrói os caches da CPU"). O comando touch(1) existe para tocar um arquivo de maneira a produzir um efeito nos metadados, sem outros efeitos.

Ele também tem opções para definir os metadados de hora / data para algo diferente do horário atual, em cujo caso o significado semântico realmente não se aplica mais. (por exemplo, touch -r reference_file /tmp/foo para definir que mtime e atime sejam iguais à referência).

Algo relacionado:

Caso você esteja curioso, a implementação do GNU coreutils touch(1) usa essa sequência de chamadas do sistema para atualizar os timestamps para a hora atual:

$ strace touch /tmp/foo
...
open("/tmp/foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0)                              = 0
close(3)                                = 0

open com O_CREAT atinge o comportamento de criar se houver falta. Omitir O_TRUNC preserva o conteúdo existente, como >> /tmp/foo . dup2 atualiza todos os três mtime, atime e ctime para a hora atual. (Apenas o open() / close() sozinho não afeta os timestamps).

Para definir a hora para algo diferente de "agora", ela faz a mesma sequência e, em seguida, usa utimensat(0, NULL, ...) para definir os tempos no arquivo referido por stdout (desde que duplicou o fd para esse arquivo para fd0).

    
por 15.06.2017 / 05:53

Tags