Команда Linux Touch Directory

Что команда "трогает" при применении к каталогу?

$ 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

4 ответа

Решение

Как указано на странице руководства, основное использование touch это:

Обновите время доступа и модификации каждого ФАЙЛА к текущему времени.

Таким образом, он обновляет время доступа и модификации каталога.

Пример в верхней части не проясняет, что "touch" устанавливает время для каталога (новое время в списке было таким же, как и в оригинале, просто потому, что touch был так скоро после создания каталога). Да, определение "ФАЙЛ" в документации включает каталоги, так что вы можете использовать touch, чтобы изменить их метки времени, НО...

В некоторых ситуациях вы не можете изменить временную метку каталога (для некоторых типов удаленно смонтированных каталогов), даже если у вас есть разрешение на что-либо еще. Например, это монтирование NFS:

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

Кроме того, вы можете столкнуться с проблемами, когда некоторые старые даты не поддерживаются на некоторых серверах, например:

$ 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

Это работает:

$ 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

Это работало бы на локальном каталоге, но дает странную дату при монтировании 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
                              ~~~~~~~~~~~~~

Непосредственной причиной этого вопроса является тот факт, что разрешение по умолчанию времени ls -l в минутах, поэтому запись в файловой системе, затронутая в течение той же минуты, будет отображаться точно так же, как и по умолчанию ls -l выход.

Решение этой проблемы описано по адресу https://superuser.com/questions/355318/how-to-have-linux-ls-command-show-second-in-time-stamp и в основном включает запуск ls -l --time-style=full-iso вместо.

touch стандартная программа Unix, используемая для изменения времени доступа к файлу и его изменения Он также используется для создания нового пустого файла.

Спецификация Single Unix (SUS) указывает, что касание должно изменить время доступа, время модификации или оба, для файла. Файл идентифицируется путем, указанным в качестве единственного аргумента. В нем также указывается, что если указанный файл не существует, файл создается, а время доступа и изменения устанавливаются в соответствии с указаниями. Если новые временные метки не указаны, touch использует текущее время.

-Wikipedia

Вы можете найти более подробную информацию о touch команда (или любая другая команда, о которой вы хотели бы знать) с помощью man команда как это:

man touch

Другие вопросы по тегам