Comando do Linux Touch Directory

9

O que o comando 'toca' quando aplicado a um diretório?

$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Dragos Rizescu
fonte

Respostas:

8

Conforme declarado na página de manual , o principal uso touché o seguinte:

Atualize os tempos de acesso e modificação de cada ARQUIVO para o horário atual.

Portanto, ele atualiza os tempos de acesso e modificação do diretório.

Jorge Suárez de Lis
fonte
4

O exemplo na parte superior não deixa claro que "touch" define o horário do diretório (o novo horário na lista era o mesmo que o original, simplesmente porque o toque ocorreu logo após a criação do diretório) .. Sim, a definição de "ARQUIVO" na documentação inclui diretórios, para que você possa usar o toque para alterar os carimbos de data e hora, MAS ...

Existem algumas situações em que você não pode alterar o carimbo de data e hora de um diretório (para alguns tipos de diretórios montados remotamente), mesmo se você tiver permissão para fazer qualquer outra coisa. por exemplo, esta montagem NFS:

$ touch -d "2014-07-02 12:15" /public/test.dir    
touch: setting times of ‘/public/test.dir’: Operation not permitted

Além disso, você pode ter problemas com algumas datas antigas que não são suportadas em alguns servidores, por exemplo:

$ mkdir  /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir

Isso funciona:

$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr  1  2014 /Acer/kopies/test.dir

Isso funcionaria em um diretório local, mas fornece uma data estranha nas montagens do Samba:

$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26  60410 /Acer/kopies/test.dir
                              ~~~~~~~~~~~~~
user235510
fonte
2

touché um programa Unix padrão usado para alterar os carimbos de data e hora de acesso e modificação de um arquivo. Também é usado para criar um novo arquivo vazio.

A Especificação Unix Única (SUS) especifica que o toque deve alterar os tempos de acesso, tempos de modificação ou ambos, para um arquivo. O arquivo é identificado por um nome de caminho fornecido como um único argumento. Ele também especifica que, se o arquivo identificado não existir, ele será criado e os tempos de acesso e modificação serão definidos conforme especificado. Se nenhum novo registro de data e hora for especificado, o toque usa a hora atual.

-Wikipedia

Você pode encontrar informações mais detalhadas sobre o touchcomando (ou qualquer outro comando que você gostaria de saber) usando o mancomando da seguinte maneira:

man touch

Atari911
fonte
2

A razão imediata para a pergunta é o fato de que a resolução padrão de tempo ls -lé em minutos; portanto, uma entrada do sistema de arquivos tocada no mesmo minuto aparecerá exatamente a mesma na ls -lsaída padrão .

A solução para isso é descrita em /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp e basicamente envolve a execução ls -l --time-style=full-iso.

Josip Rodin
fonte