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).
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'?
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).