Команда Linux Touch Directory

9

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

$ 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
Драгос Ризеску
источник

Ответы:

8

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

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

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

Хорхе Суарес де Лис
источник
4

Пример в верхней части не проясняет, что «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
                              ~~~~~~~~~~~~~
user235510
источник
2

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

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

-Wikipedia

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

man touch

Atari911
источник
2

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

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

Иосип Роден
источник