Команда 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