Одно из самых частых использований этой команды - создание пустых файлов, однако на самом деле назначение утилиты иное.
touch входит в состав базовых утилит GNU, присутствующих в любой системе GNU/Linux
Описание
Основное назначение команды - изменение времени модификации, изменения или последнего обращения к файлу. Общий синтаксис выглядит следующим образом:
touch [параметры] файл [файл2 файл3]
*значения в квадратных скобках являются необязательными
Что такое временные метки файла?
Современные файловые системы могут хранить полезную информацию о файлах. Создадим пустой файл и выведем о нём информацию с помощью команды stat:
Четыре последние строки содержат:
- время доступа к файлу (когда содержимое считывалось из файла в последний раз);
- время модификации файла (когда содержимое файла редактировалось в последний раз);
- время изменения файла (когда в последний раз редактировались атрибуты файла или его содержимое);
- время создания файла.
Более подробно о временных метках можете прочитать здесь:
Изменение временных меток
Для изменения временных достаточно указать команде путь к файлу:
touch myfile
Если файл не существует, он будет создан. В результате выполнения команды в поля atime, mtime и ctime будет записано текущее время системы:
Команда touch не может изменить временную метку создания файла.
Не создавать файл
Чтобы отключить создание файла в случае его отсутствия, достаточно указать параметр '-c' или его длинную версию '--no-create':
Также этот параметр позволяет отключить вывод предупреждения о несуществующем файле.
Временные метки из другого файла
У вас есть эталонный файл, с которого необходимо скопировать временные метки? Используйте параметр '-r имя_файла':
Применить изменения к симлинкам
По умолчанию, если вы примените touch к символической ссылке, команда изменит метки файла и не тронет сам симлинк. Чтобы применить изменения к символической ссылке непосредственно, укажите параметр '-h', он же '--no-dereference':
Изменение временных меток символических ссылок должно поддерживаться файловой системой.
Access timestamp
Если требуется поменять только метку времени последнего доступа к файлу, укажите параметр '-a':
Для изменения atime также можно использовать параметры ‘--time=atime’, ‘--time=access’ или ‘--time=use’
Modification timestamp
Аналогично можно изменить метку mtime. Для этого используйте один из следующих параметров: ‘-m’, ‘--time=mtime’ или ‘--time=modify’:
Произвольная дата
Если вместо текущей даты вам необходимо подставить конкретное значение, используйте '-d' или '--date=значение':
Кроме даты вы можете указать ещё и время, в этом случае использовать параметр -t не понадобится
Произвольное время
Для изменения времени используйте параметр '-t'. Аналогично предыдущему параметру, здесь можно указать дату. Общий формат записи следующий:
[[ГГ]ГГ]ММДДччмм[.сс]
*значения в квадратных скобках являются необязательными
Заключение
Краткий вывод: установить произвольную дату или время можно только для меток atime и mtime. Метка ctime всегда устанавливается в соответствии с текущем временем системы, метка birthtime не может быть изменена.
Если у вас остались какие-то вопросы, просьба задать их в комментариях.
Пожалуйста, оцените мой труд лайком и подпиской, это позволит вам чаще видеть в ленте подобный контент. Всего доброго!)
---
Подробный обзор других команд Linux:
Материальная поддержка автора:
- Сбербанк: 2202 2013 5155 5152
- Тинькофф: 2200 7008 1567 2323