Введение
Команда touch позволяет нам обновлять временные метки существующих файлов и каталогов, а также создавать новые пустые файлы.
В этом руководстве мы покажем вам, как использовать сенсорную команду, на практических примерах и подробных объяснениях наиболее распространенных параметров команды.
Временная метка файлов Linux
Прежде чем мы перейдем к тому, как использовать команду touch, давайте начнем с просмотра временных меток файлов в Linux.
Файл в Linux имеет три отметки времени:
- atime (время доступа) — время последнего доступа к файлу/открытия из команды или приложения, такого как cat, vim или grep.
- mtime (изменить сейчас) — время последнего изменения содержимого файла.
- ctime (изменить сейчас) — время последнего изменения атрибута или содержимого файла. Атрибут включает права доступа к файлам, владельца файла или местоположение файла.
Чтобы просмотреть статус файла, включая временные метки, используйте команду stat
:
stat file_name
Для создания нового файла требуются права на запись в корневой каталог. В противном случае вы получите ошибку отказа в доступе.
Как использовать сенсорную команду
В своей простейшей форме при использовании без каких-либо параметров, если имя файла, указанное в качестве аргумента, не существует, touch создаст новый файл.
Если файл уже существует, touch изменит последний файл и время модификации на текущее время.
Например, если файл file1
не существует, следующая команда создаст его, в противном случае он изменит временные метки:
touch file1
Чтобы создать или изменить несколько файлов одновременно, укажите имена файлов в качестве аргументов:
touch file1 file2 file3
Если вы не хотите, чтобы команда touch создавала новые файлы, используйте параметр -c
( --no-create
).
Например, если файл file1
существует, следующая команда изменит временные метки файла, в противном случае она ничего не сделает:
touch -c file1
Изменение только времени доступа или модификации
По умолчанию, если никакая опция не используется, touch обновит последний файл и время модификации до текущего времени. Используя параметры -a
и -m
, вы можете изменить только одну из этих временных меток.
Меняется только время доступа
Используйте параметр -a
, чтобы изменить только время доступа к файлу:
touch -a file1
Изменить только время редактирования
Используйте параметр -m
, чтобы изменить время модификации файла:
touch -m file1
Установка определенных временных меток
Команда touch также позволяет нам обновлять или создавать файл с определенным временем, отличным от текущего времени.
Используйте параметр -d
( --date=
), чтобы указать строку даты и использовать ее вместо текущего времени.
Например, чтобы изменить время последнего доступа и время модификации file1
1 на 1 июня 2018 г., 11:02, используйте следующую команду:
touch -d '1 June 2018 11:02' file1
Строка даты должна быть заключена в одинарные кавычки.
Вы также можете указать частичную строку даты и времени для команды touch. Предоставляя только дату, он автоматически меняет год на текущий:
touch -d '12 June' file1
Используйте параметр -t
, чтобы указать отметку времени и использовать ее вместо текущего времени. Аргумент отметки времени должен быть в следующем формате:
use [[CC]YY]MMDDhhmm[.ss]
Например, следующая команда установит время доступа и изменения последнего файла file1
на 1 июня, 11:02 текущего года.
touch -t 12061102 file1
Использование метки времени другого файла
Параметр -r
( --reference=
) позволяет нам указать справочный файл и использовать его метки времени вместо текущего времени.
Например, следующая команда указывает touch использовать время file1
для file2
:
touch -r file1 file2
Изменение даты/времени символической ссылки
По умолчанию, если вы используете сенсорную команду для символической ссылки, временные метки указанного файла будут изменены.
Используйте -h
( --no-dereference
), чтобы изменить временную метку символической ссылки.
Например, чтобы изменить временные метки символической ссылки symlink1
, вам нужно будет использовать:
touch -h symlink1
Вывод
К настоящему времени вы должны хорошо понимать, как использовать команду touch в Linux.