Команда 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
9
задан 14 February 2017 в 14:16

4 ответа

Как указано в справочной странице , основное использование touch заключается в следующем:

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

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

0
ответ дан 14 February 2017 в 14:16

Пример в верхней части не проясняет, что «касание» задает время каталога (новое время в списке было таким же, как и в оригинале, просто потому, что касание произошло так скоро после создания каталога ) ... да, определение «ФАЙЛ» в документации включает каталоги, так что вы можете использовать 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
                              ~~~~~~~~~~~~~
0
ответ дан 14 February 2017 в 14:16

Непосредственной причиной этого вопроса является тот факт, что временное разрешение по умолчанию 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 вместо.

0
ответ дан 14 February 2017 в 14:16

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

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

-Википедия

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

man touch

0
ответ дан 14 February 2017 в 14:16

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

Похожие вопросы: