Linux утилита touch

Как в linux у файла изменить время последнего доступа? Как установить время модификации файла? Как в системе linux создать пустой файл? Об этом мы поговорим в данной статье, рассказывая о linux утилите touch.

Описание утилиты touch

Linux утилита touch предназначена для изменения отметок времени доступа и модификации файлов. Полную документацию можно посмотреть по данной ссылке.

Использование команды touch

touch [OPTION] … FILE …

Linux команда touch обновляет временные метки доступа и модификации файлов FILE на текущее. При этом, если указанный файл не существует, то будет создан новый пустой файл. Пусть у нас имеется обычный текстовый файл test.txt:

$ ls -l
total 4
-rw-rw-r--. 1 user user 2035 Oct 26 14:30 test.txt

Воспользуемся утилитой touch и посмотрим не результат:

$ touch test.txt

$ ls -l
total 4
-rw-rw-r--. 1 user user 2035 Oct 26 14:35 test.txt

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

$ touch test2.txt

$ ls -l
total 4
-rw-rw-r--. 1 user user    0 Oct 26 14:41 test2.txt
-rw-rw-r--. 1 user user 2035 Oct 26 14:35 test.txt

Из-за этой особенности linux утилиту touch часто используют именно для создания новых файлов.

Параметры команды touch

Linux утилита touch может принимать следующие опции:

-a – изменяет только последнее время доступа к файлу
-c, –no-create – не создает никаких файлов, если они не существуют
-d, –date=String – задать временную метку (в виде строки), которая будет использована вместо текущего времени:

$ touch -d '25 Oct 2020 15:00' test.txt

$ ls -l
total 4
-rw-rw-r--. 1 user user    0 Oct 26 14:41 test2.txt
-rw-rw-r--. 1 user user 2035 Oct 25 15:00 test.txt

-h, –no-dereference – изменяет временные метки символических ссылок вместо файлов, на которые есть ссылки (работает только в системах, которые могут изменять временные метки символической ссылки)
-m – изменяет только время модификации файла
-r, –reference=FILE – использовать время указанного файла вместо текущего времени:

$ touch -r test.txt test2.txt

$ ls -l
total 4
-rw-rw-r--. 1 user user    0 Oct 25 15:00 test2.txt
-rw-rw-r--. 1 user user 2035 Oct 25 15:00 test.txt

-t STAMP – использовать временную метку [[CC]YY]MMDDhhmm[.ss] вместо текущего времени:

$ touch -t 202010251513 test.txt

$ ls -l
total 4
-rw-rw-r--. 1 user user    0 Oct 25 15:00 test2.txt
-rw-rw-r--. 1 user user 2035 Oct 25 15:13 test.txt

–time=WORD – изменить только время доступа или модификации. Эквивалентно опциям -a и -m, только в данном случае вместо WORD указывается access / atime или modify / mtime.
–help – показать справку
–version – показать версию утилиты:

$ touch --version
touch (GNU coreutils) 8.30

Ещё больше полезных Linux-утилит вы можете найти на данной странице.