В Linux команда touch
предназначена для изменения метки времени. Утилита используется также для создания пустых файлов, хотя это не основная её функция.
Команда touch
может изменить модификацию и время доступа для любого заданного файла. Утилита создает файл только в том случае, если он ещё не существует.
Содержание
- Синтаксис
- Опции
- Примеры использования команды touch в Linux
- Создание файла
- Создание нескольких файлов
- Создание большого пакета файлов
- Установка конкретной временной мерки
- Установка временной метки с использованием строки даты
- Изменение времени доступа на текущее
- Явное изменение времени доступа
- Изменение времени модификации на текущее
- Явное изменение времени модификации
- Одновременное изменение времени модификации и доступа
- Заключение
Синтаксис
touch [ПАРАМЕТР]… ФАЙЛ…
Опции
- -a
- Изменять только время доступа
- -c, --no-create
- Не создавать новые файлы
- -d, --date=СТРОКА
- Проанализировать СТРОКУ и использовать её вместо текущего времени
- -f
- (Игнорируется)
- -h, --no-dereference
- Изменять символические ссылки, а не файлы, на которые они ссылаются (имеет смысл только на системах, где можно изменять владельца символической ссылки)
- -m
- Изменять только время изменения
- -r, --reference=ФАЙЛ
- Использовать время ФАЙЛА вместо текущего времени
- -t ВРЕМЯ
- Использовать [[ВВ]ГГ]ММДДччмм[.сс] вместо текущего времени
- --time=СЛОВО
- Изменять время, указанное СЛОВОм: значения
access
,atime
,use
эквивалентны-a
значенияmodify
,mtime
эквивалентны-m
Примеры использования команды touch в Linux
При работе с файлами в Linux необходимо помнить о трёх временных метках:
- Время доступа или
atime
- Изменяются, когда команда считывает содержимое файла, например
grep
илиcat
. Командаls -lu
отображает время для файлов. - Изменение времени или
ctime
- При изменении свойств файла, например при переименовании файлов, изменении прав доступа к файлам или перемещении файла. Команда
ls -lc
показываетctime
для файлов. - Время модификации или
mtime
- Изменяется при изменении содержимого файла. Команда
ls -l
показываетmtime
для файлов.
Приведенные ниже примеры запускаются из терминала и демонстрируют, как использовать команду Linux touch
с различными параметрами и какой результат следует ожидать.
Создание файла
Создание пустого файла — самый простой способ использования команды touch
без параметров:
oleg@mobile:~/Directory:$ touch example
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 11:40 example
oleg@mobile:~/Directory:$
Создание нескольких файлов
Для создания нескольких файлов командой touch
нужно лишь перечислить их имена, разделив их пробелами:
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 11:42 example_1
-rw-r--r-- 1 oleg users 0 июл 26 11:42 example_2
-rw-r--r-- 1 oleg users 0 июл 26 11:42 example_3
oleg@mobile:~/Directory:$
Создание большого пакета файлов
Для создания большого количества файлов командой touch
необходимо к имени файла добавить первый и последний элемент, заключив их в фигурные скобки и отделив друг от друга двумя точками (..
):
oleg@mobile:~/Directory:$ touch example_{1..15}
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_1
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_10
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_11
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_12
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_13
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_14
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_15
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_2
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_3
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_4
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_5
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_6
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_7
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_8
-rw-r--r-- 1 oleg users 0 июл 26 11:48 example_9
oleg@mobile:~/Directory:$
Команда не позволяет сочетать цифры и буквы.
Установка конкретной временной мерки
При установке конкретной метки времени для существующего файла команда touch
используется так:
$ touch -t <timestamp> <filename>
Формат метки времени следует шаблону:
[[CC]YY]MMDDhhmm[.ss]
Здесь:
- CC
- Первые две цифры года
- YY
- Две последние цифры года
- MM
- Месяц
- DD
- День
- hh
- Час
- mm
- Минуты
- ss
- Секунды
Цифры в квадратных скобках необязательны. При использовании двузначного формата года установка YY любого числа от 0 до 68 автоматически предполагает, что CC — это 20, тогда как 69–99 предполагает, что CC — это 19.
Например, чтобы изменить отметку времени для файла с именем example
на полночь 1 января 2022 года, запустите:
$ touch -t 202201010000 example
Создаём файл example
и меняем временную метку:
oleg@mobile:~/Directory:$ touch example
oleg@mobile:~/Directory:$ ls -l --full-time
итого 0
-rw-r--r-- 1 oleg users 0 2022-07-26 12:05:41.019328038 +0300 example
oleg@mobil202201010000 exampleh -t 202201010000 example
oleg@mobile:~/Directory:$ ls -l --full-time
итого 0
-rw-r--r-- 1 oleg users 0 2022-01-01 00:00:00.000000000 +0200 example
oleg@mobile:~/Directory:$
Для того чтобы видеть детали временной метки, команда ls
использовалась с опцией --full-time
.
Установка временной метки с использованием строчной даты
В данном случае используется опция -d
:
$ touch -d <string> <filename>
Строчная дата является гибким форматом времени и принимает множество различных удобочитаемых текстовых форм.
Вот некоторые примеры:
- Даты календаря
- Такие как 19 August 2020.
- Время суток
- Например 9:27pm или 8:02am.
- Дни недели
- Такие как Sunday, Monday, и т.д.
- Относительное время
- Такое как 5 years ago, yesterday, next tuesday, и т.д.
Как например можно изменить временную метку с помощью -d tomorrow
:
oleg@mobile:~/Directory:$ touch -d tomorrow example
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 27 2022 example
oleg@mobile:~/Directory:$
Изменение времени доступа на текущее
В данном случае используется лишь опция -a
.
Проверяем время доступа к файлу:
oleg@mobile:~/Directory:$ ls -lu
итого 0
-rw-r--r-- 1 oleg users 0 июл 27 2022 example
oleg@mobile:~/Directory:$
Изменяем время доступа и проверяем изменённое время:
oleg@mobile:~/Directory:$ touch -a example
oleg@mobile:~/Directory:$ ls -lu
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 12:19 example
oleg@mobile:~/Directory:$
Время доступа изменилось на текущую отметку времени.
Явное изменение времени доступа
В данном случае используются опции -a
и -t
.
Проверяем время доступа к файлу перед его изменением:
oleg@mobile:~/Directory:$ ls -lu
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 12:19 example
oleg@mobile:~/Directory:$
Изменяем время доступа к файлу example
на полночь 01 января 2019 года, добавив отметку времени, и проверяем время доступа после внесения изменений:
oleg@mobile:~/Directory:$ touch -at 1901010000 example
oleg@mobile:~/Directory:$ ls -lu
итого 0
-rw-r--r-- 1 oleg users 0 янв 1 2019 example
oleg@mobile:~/Directory:$
После выполнения команды время доступа изменилось на время, заданное опцией -t
.
Изменение времени модификации на текущее
В этом случае используется опция -m
.
Проверяем mtime
файла перед изменением метки времени:
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 27 2022 example
oleg@mobile:~/Directory:$
Изменяем время модификации файла и снова проверяем mtime
после изменения:
oleg@mobile:~/Directory:$ touch -m example
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 12:34 example
oleg@mobile:~/Directory:$
Опция -m
изменила время модификации на текущую метку времени.
Явное изменение времени модификации
В этом случае используются опции -m
и -t
.
Проверяем mtime
файла перед изменением:
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 12:34 example
oleg@mobile:~/Directory:$
Изменяем время модификации на полночь 1 января 2001 года и перепроверяем время модификации:
oleg@mobile:~/Directory:$ touch -mt 0101010000 example
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 янв 1 2001 example
oleg@mobile:~/Directory:$
Одновременное изменение времени модификации и доступа
Используются опции -a
и -m
:
Проверяем atime
и mtime
перед их изменением:
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 янв 1 2001 example
oleg@mobile:~/Directory:$ ls -lu
итого 0
-rw-r--r-- 1 oleg users 0 янв 1 2019 example
oleg@mobile:~/Directory:$
Изменяем atime
и mtime
тестового файла example
на текущую отметку времени и снова проверяем оба времени после изменения:
oleg@mobile:~/Directory:$ touch -am example
oleg@mobile:~/Directory:$ ls -l
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 12:57 example
oleg@mobile:~/Directory:$ ls -lu
итого 0
-rw-r--r-- 1 oleg users 0 июл 26 12:57 example
oleg@mobile:~/Directory:$
Заключение
В Linux команда touch
является одной из основных утилит при работе с файлами. В этой статье вы ознакомились с некоторыми типичными вариантами её использования.