touch

Из Википедии, бесплатной энциклопедии

touch — команда Unix, предназначенная для установки времени последнего изменения файла или доступа в текущее время. Также используется для создания пустых файлов.

История[править | править код]

Утилита touch появилась в операционной системе AT&T UNIX Version 7. Версия утилиты touch, которая идет в комплекте с GNU coreutils, была разработана Полом Рабином, Арнольдом Роббинсом, Джимом Кингдоном, Девидом МакКинзи и Рэнди Смитом.

Спецификация[править | править код]

Согласно POSIX утилита touch изменяет время последнего изменения файла или время последнего доступа к нему. Имя файла или путь к нему передается в качестве аргумента. Если файл не существует, утилита создает пустой файл с указанным именем и устанавливает время последнего изменения и последнего доступа в значение, переданное в качестве аргумента. Если аргумент времени не задан, используется текущее время.

Синтаксис команды[править | править код]

touch [-acfhm] [-r файл] [-t [[CC]YY]MMDDhhmm[.ss]] файл
  -a
  Устанавливает время последнего доступа к файлу. Время последнего изменения не устанавливается, если явно не задан ключ -m
  -c
  Указывает утилите не создавать файл, если он не существует, при этом никаких сообщений об ошибке показано не будет.
  -f
  Пытается обновить информацию о времени, даже если права доступа файла не позволяют делать.
  -h
  Указывает утилите не изменять данные о файле, если он задан символической ссылкой.
  -m
  Устанавливает время последнего изменения файла.
  -r file
  Использовать значения времени из файла, заданного аргументом file.
  -t time
  Устанавливает время последнего изменения и доступа в соответствии с указанным форматом time.

Формат даты, указанный в ключе -t, задается в соответствии с шаблоном [[СС]YY]MMDDhhmm[.ss]:
  СС — первые две цифры года (век).
  YY — последние две цифры года.
  Если параметр CC не задан и значение YY находится в пределах 69 и 99, то тогда СС устанавливается равным 19,
  в противном случае используется 20.
  MM — двузначный номер месяца.
  DD — двузначный номер дня.
  hh — значение часов даты.
  mm — значение минут даты.
  ss — значение секунд даты.

В разных UNIX-подобных системах синтаксис команды может отличаться. Например, GNU touch содержит опцию -d, которая позволяет устанавливать дату в форматах, отличающихся от упомянутого выше.

Примеры[править | править код]

Создает файл myfile.txt и устанавливает время последнего изменения и доступа в текущее время в системе; если файл существует — обновляет время последнего изменения и доступа, не изменяя при этом содержимого файла:

# touch myfile.txt 


Устанавливает дату последнего изменения и доступа в 8:46:26 31 января 2007 г.:

# touch -t 200701310846.26 index.html # touch -d '2007-01-31 8:46:26' index.html # touch -d 'Jan 31 2007 8:46:26' index.html 

Ссылки[править | править код]