Comandos essenciais do Linux: "touch"


O comando touch tem a função de actualizar data e hora de acesso e modificação de um ficheiro para o momento actual, uma função valiosa para scripts e fluxos de trabalho automatizados. Notavelmente, quando o nome do ficheiro especificado não existe no sistema (no directório onde o comando irá operar), cria facilmente um novo ficheiro vazio com tal nome.
 
Vamos criar o noso primeiro ficheiro.

Na imagem acima, criamos o ficheiro meu_ficheiro.txt usando o comando touch, de seguida usamos o comando ls para listar e junto com a opção -l para visualizar os detalhes do ficheiro.
 
Na imagem abaixo actualizamos a hora desde ficheiro, e para isso usamos a opção -c. Vejamos abaixo.
 
Vamos então tentar perceber: na primeira imagem simplesmente usamos o comando touch que criou um ficheiro com o nome especificado, uma vez que este ainda não existia no directório em que corremos o comando. Na segunda imagem usamos o mesmo comando mas com uma opção adicional para actualizar o timestamp do ficheiro, conforme mostra a segunda imagem. 
 
E se corrermos este comando para criar um ficheiro com nome já existente mas sem a opção -c ? Vejamos o resultado na imagem abaixo.

 Conforme é possivel ver, o timestamp foi actualizado.
 
Vamos adicionar conteúdo ao ficheiro e fazer novamente esta experiência. Em algum momento pode parecer que umas das opções substitui o ficheiro antigo pelo novo.
 
Depois de adicionar conteúdo ao ficheiro, usamos o comando cat para imprimir o conteúdo do mesmo, corremos novamente o comando touch e de seguida imprimimos novamente o contéudo do ficheiro para ver se foi de facto substituido ou se apenas actualizou-se o timestamp.

E conforme podemos ver, o ficheiro não foi substituido, mas sim foi actualizado seu timestamp.
 
Vamos seguir so mesmos passos usando a opção -c. Veja abaixo.

E o resultado é o mesmo. A grande difença aqui é: quando usamos a opção -c, se o ficheiro não existir, não será criado.
 
A opção -a altera a hora de acesso ao ficheiro para a hora actual do sistema e não altera a hora em que o ficheiro foi modificado. Se o ficheiro não existir, será criado. Vejamos abaixo.
 
Note que na imagem acima usamos o comando stat para ter mais detalhes do ficheiro, e conseguimos ver que a hora do ultimo acesso ao ficheiro foi actualizada mas a hora em que foi modificado não foi alterada. Nos primeiros dois exemplos deste tutorial vimos que a hora é alterada para a hora actual do sistema.
 
A opção -cr altera as horas de acesso e modificação do ficheiro "a" para corresponder as horas do ficheiro "b". A hora de alteração será definida para a hora actual do sistema. Se o ficheiro "b" não existir, não será criado e o ficheiro "a" já deve existir neste contexto.
Vejamos abaixo o exemplo para os ficheiros meu_ficheiro.txt e  meu_ficheiro2.tx.

 

E o ficheiro meu_ficheiro2.txt já tem a mesma hora de acesso e modificação iguais as do ficheiro meu_ficheiro.txt.
 
A opção -d define a data de acesso e modificação de um ficheiro para a data especificada no comando. A data e hora de alteração (momento em que corremos o comando) é definida para data e hora actual do sistema. Vejamos o exemplo abaixo.

Note que se o ano não for especificado, ira manter o ano corrente.

Comentários