Консольная команда touch в linux представляет собой мощную и многофункциональную утилиту командной строки в Linux встроенную в оболочку Bash, предназначенную для управления временными метками (timestamp) файлов. Название «touch» (по-русски «коснуться») весьма наглядно описывает ее основную функцию — изменение времени доступа и модификации файлов. Однако, она способна делать гораздо больше, чем просто обновлять временные метки. Давайте рассмотрим ее основные возможности и практическое применение.
- Создание новых файлов: можно создать пустой файл, если он еще не существует. Это полезно, например, при создании временных файлов или файлов для дальнейшей записи данных.
- Обновление временных меток: может использоваться для изменения времени доступа и модификации существующего файла на текущее время. Это может пригодиться, например, при отслеживании последнего доступа к файлу.
- Управление временными метками: С помощью опций
touch
, вы можете устанавливать временные метки в произвольные значения, что полезно, например, при восстановлении файлов из резервной копии. - Автоматизация задач: Команда
touch
часто используется в скриптах и автоматизированных задачах для управления временными метками файлов и каталогов. - Изменение времени доступа для символических ссылок: может изменять временные метки символических ссылок, что может быть полезно для определенных задач.
- Интервальное обновление времени: можно обновлять временные метки файлов и каталогов в определенные моменты времени, что полезно, например, в задачах ротации журналов и архивирования данных.
- Синтаксис
- Опции
- Как создавать пустые файлы
- Генерация нескольких пустых файлов
- Изменение временных меток файла на текущее
- Явное изменение времени доступа
- Изменение времени модификации на текущее. Опция -m
- Явное изменение времени модификации. Опция -t
- Одновременное изменение времени модификации и доступа
- Изменение метки времени символической ссылки. Опция -h
- Изменение даты с помощью опции STRING
- Изменение даты с помощью слова. Опция —time=WORD
- Заключение
Синтаксис
Синтаксис команды touch
достаточно прост, и она может быть использована с различными опциями и аргументами. Основной формат команды выглядит следующим образом:
1 | touch [ОПЦИИ]... ФАЙЛ... |
Где:
- ОПЦИИ: Это опциональные аргументы, которые определяют, какие действия будет выполнять команда touch. Ниже мы подробно рассмотрим доступные опции.
- ФАЙЛ…: Это список файлов, для которых вы хотите изменить временные метки. Вы можете указать один или несколько файлов, разделяя их пробелами.
Опции
Команда touch
также может использоваться с различными опциями. Давайте подробнее рассмотрим доступные опции:
- -a — Изменяет только временную метку доступа (atime) файла, не трогая временную метку модификации (mtime).
- -c или —no-create — Не создавать файл, если он не существует.
- -d или —date=STRING — Позволяет указать желаемую временную метку в формате
STRING
илиСТРОКА
вместо текущей. Формат временной метки STRING подробно описан в справке. - -f — Игнорируется и оставлена для совместимости с другими командами. В touch она не выполняет никаких действий.
- -h или —no-dereference — Изменяет временные метки символических ссылок, а не файлов, на которые они ссылаются.
- -m — Изменяет только временную метку модификации (mtime) файла, не трогая временную метку доступа (atime).
- -r FILE или —reference=FILE — Устанавливает временные метки файла из другого файла FILE, вместо использования текущего времени.
- -t STAMP — Позволяет установить временную метку вручную в формате
[[CC]YY]MMDDhhmm[.ss]
в кириллическом варианте так[[ВВ]ГГ]ММДДччмм[.сс]
. - —time=WORD — Позволяет явно указать, какую временную метку следует изменить.
WORD
илиСЛОВО
может бытьaccess
,atime
,use
,modify
илиmtime
. - —help — Отображает справочную информацию о команде touch и ее опциях.
- —version — Отображает информацию о версии утилиты touch.
Для получения подробной официальной справки по команде укажите — man touch .
С использованием различных опций и аргументов, можно создавать файлы и гибко управлять временными метками. В дальнейших разделах рассмотрим конкретные примеры использования этих опций для различных задач.
Как создавать пустые файлы
Создание пустых файлов полезно, когда вам нужно создать файл без какого-либо содержимого, но вы хотите, чтобы он существовал. Для создания пустого файла воспользуйтесь следующим синтаксисом:
1 | touch имя_файла |
Где имя_файла
— это имя файла, который вы хотите создать. Например, чтобы создать пустой файл с именем «example.txt», выполните команду:
1 | $ touch example.txt |
После выполнения этой команды, файл «example.txt» будет создан в текущей директории.
Генерация нескольких пустых файлов
Вы можете создавать одновременно несколько пустых файлов, перечислив их имена через пробел. Например:
1 | $ touch file1.txt file2.txt file3.txt |
Это создаст три пустых файла: «file1.txt», «file2.txt» и «file3.txt».
Изменение временных меток файла на текущее
При помощи touch также можно изменять временные метки файла. Они включают время последнего доступа (atime), время последней модификации (mtime) и ctime (время изменения) относится к времени последнего изменения атрибутов или содержимого файла. Эти атрибуты включают в себя права доступа, владельца файла, группу и местоположение файла.
Чтобы изменить временную метку файла используйте синтаксис:
1 | touch имя_файла |
Где имя_файла
— это имя файла, чьи временные метки вы хотите изменить. После выполнения этой команды, как только файл будет касаться или изменяться, его временные метки будут обновлены до текущего времени.
Эта операция полезна, например, когда вам нужно обновить метку времени доступа к файлу, но не хотите вносить реальные изменения в содержимое файла.
Для более точного управления временными метками используйте опции.
Помните, что для выполнения изменения времени доступа на файле вам может потребоваться соответствующее разрешение на запись к этому файлу.
Пример:
1 | $ touch example.txt |
Эта команда изменит метку времени доступа файла example.txt
на текущее время.
Вы можете проверить изменение метки времени доступа с помощью команды stat
;
1 | $ stat example.txt |
Вы увидите вывод, содержащий информацию о файле, включая Access
(Доступ) в разделе Access:
. Это и есть время последнего доступа.
Пример вывода команды stat
:
1 | Access: 2023-08-13 10:30:00.000000000 +0000 |
Если метка времени доступа была успешно изменена, вы увидите актуальное текущее время и дату в этом выводе.
Метод stat дает подробную информацию не только об измененном состоянии файла но и о модификации и том когда файл был создан. Для отображения только времени изменения можно использовать команду ls с опцией -l
1 | $ touch example.txt |
Вы увидите, что метка времени доступа (atime
) была изменена на текущее время.
Явное изменение времени доступа
Для явного изменения времени доступа файла на определенную дату и время, вы можете использовать опцию -d
с указанием желаемой даты и времени. Вот синтаксис:
1 | touch -d "ГГГГ-ММ-ДД ЧЧ:ММ:СС" файл |
Где:
- «ГГГГ-ММ-ДД ЧЧ:ММ:СС» — это дата и время в формате
"ГГГГ-ММ-ДД ЧЧ:ММ:СС"
(год, месяц, день, часы, минуты, секунды), которые вы хотите установить. - файл — имя файла, для которого вы хотите изменить метку времени доступа.
Например, если вы хотите установить время доступа файла example.txt
на 1 января 2024 года в 15:30:00, выполните следующую команду:
1 | $ touch -d "2024-01-01 15:30:00" example.txt |
После выполнения этой команды, метка времени доступа файла example.txt
будет установлена на указанное время.
Изменение времени модификации на текущее. Опция -m
Для изменения времени модификации файла на текущее необходимо использовать опцию -m
. Вот синтаксис:
1 | touch -m файл |
Где файл
— это имя файла, для которого вы хотите изменить метку времени модификации.
Например, у меня есть файл с именем example.txt
, и я хочу обновить его метку времени модификации на текущее то выполняю команду:
1 | $ touch -m example.txt |
После выполнения этой команды, метка времени модификации файла example.txt
будет установлена на текущее время.
Явное изменение времени модификации. Опция -t
Для явного изменения времени модификации файла на определенное значение используйте опцию -t
, за которой следует заданное время и дата в формате [[CC]YY]MMDDhhmm[.ss]
или в русском варианте [[ВВ]ГГ]ММДДччмм[.сс]
Вот синтаксис для явного изменения времени модификации:
1 | touch -t ММДДччмм файл |
Где:
- CC, ВВ — стоит за «Век» (Century).
- YY, ГГ — обозначает «Год» (Year).
- MM — это «Месяц» (Month).
- DD, ДД — означает «День» (Day).
- hh, чч — обозначает «Час» (Hour).
- mm, мм — значит «Минута» (Minute).
- ss, сс — это «Секунда» (Second).
Например, если вы хотите установить метку времени модификации файла example.txt
на 23 апреля 2024 года в 18:45, выполните команду:
1 | $ touch -t 2404231845 example.txt |
Одновременное изменение времени модификации и доступа
Для одновременного изменения времени модификации и доступа файла в Linux можно использовать опции -a
(для изменения времени доступа) и -m
(для изменения времени модификации). Синтаксис следующий:
1 | touch -a -m имя_файла |
Где:
- -a — указывает на изменение времени доступа.
- -m — указывает на изменение времени модификации.
- имя_файла — имя файла, для которого вы хотите изменить оба времени.
Пример:
У меня есть файл «my_file.txt» и хочу изменить ему за один раз время доступа и модификацию этого файла. Выполню команду:
1 | $ touch -a -m my_file.txt |
После выполнения этой команды времена доступа и модификации файла my_file.txt
будут установлены в текущее время.
Изменение метки времени символической ссылки. Опция -h
Для изменения метки времени символической ссылки используйте команду touch
с опцией -h
или --no-dereference
. Эта опция указывает на изменение метки времени символической ссылки, а не файла, на который она ссылается.
Синтаксис команды:
1 | touch -h символическая_ссылка |
Где:
- -h — указывает на изменение метки времени символической ссылки.
- символическая_ссылка — имя символической ссылки, для которой вы хотите изменить метку времени.
Пример:
У вас есть символическая ссылка с именем my_link
, и мне нужно изменить её метку времени. Выполним команду:
1 | $ touch -h my_link |
После выполнения этой команды метка времени символической ссылки my_link
будет обновлена.
Важно отметить, что это изменяет метку времени самой символической ссылки, а не файла, на который она указывает.
Изменение даты с помощью опции STRING
Можно использоватьtouch
для изменения временных меток файлов, включая установку временных меток на основе слов или фраз. В этом случае, вы можете использовать опцию -d
, за которой следует строка, описывающая дату и время. Вот пример:
1 | $ touch -d "yesterday" example.txt |
В этом примере мы использовали фразу «yesterday», что означает «вчера». Будут установлены временные метки для файла example.txt
на дату и время, соответствующие «вчерашнему дню».
Вы можете использовать различные фразы, такие как «today» (сегодня), «tomorrow» (завтра), «next Monday» (следующий понедельник) и так далее. Команда touch
интерпретирует эти слова и устанавливает временные метки соответственно.
Это полезно, например, если вам нужно изменить временные метки файла на основе относительных дат и времени, а не на конкретную дату и время.
Изменение даты с помощью слова. Опция —time=WORD
Для изменения даты с использованием слова с опцией --time=WORD
в команде touch
, вы можете указать одно из следующих слов: «access», «atime», «use», «modify», или «mtime».
- «access», «atime» или «use» изменяют время доступа к файлу.
- «modify» или «mtime» изменяют время модификации файла.
Изменить время доступа к файлу на текущее:
1 | $ touch --time=access example.txt |
Изменить время модификации файла на текущее:
1 | $ touch --time=modify example.txt |
Эти опции позволяют явно выбирать, какую временную метку файла требуется изменить, в зависимости от ваших потребностей.
Заключение
Команда touch
позволяет управлять временными метками файлов и создавать пустые файлы. Это полезная программа для установки времени доступа, модификации и других временных характеристик файлов в системе Linux. Предоставляет простые и гибкие возможности для работы с временными параметрами файлов.