Руководство по команде touch в Linux для начинающих (6 примеров)

Иногда при работе в командной строке Linux может возникнуть необходимость создать новый файл. Или же может потребоваться изменить временные метки файла. Существует утилита, которую можно использовать в обоих этих случаях. Речь идет о команде touch, и в этом руководстве мы рассмотрим его основные функции на понятных примерах.

Обратите внимание, что все примеры, которые мы будем использовать здесь, протестированы на компьютере с Ubuntu 22.04.

Команда touch в Linux

Команда touch в первую очередь используется для изменения временных меток файлов, но если файл (имя которого передается в качестве аргумента) не существует, то утилита создает его.

Ниже приведен общий синтаксис команды:

touch [OPTION]... FILE...

А вот как эта команда объясняется в справочной странице man:

DESCRIPTION
       Update  the  access  and modification times of each FILE to the current
       time. A FILE argument that does not exist is created empty, unless -c  or  -h
       is supplied. A  FILE  argument  string of - is handled specially and causes touch to
       change the times of the file associated with standard output.

Следующие примеры в формате «вопрос-ответ» помогут вам лучше понять, как работает эта утилита.

1. Как изменить время доступа/изменения с помощью команды touch

Это просто и довольно понятно. Возьмем в качестве примера существующий файл. На следующем скриншоте показаны время доступа и время изменения для файла с именем «apl.c».

изменить время доступа/изменения с помощью команды touch

Вот как можно использовать команду touch для изменения времени доступа и изменения файла:

touch apl.c

На следующем скриншоте подтверждается изменение этих временных меток.

Изменение временной метки файла с помощью команды touch

2. Как изменить только время доступа или время изменения

По умолчанию команда touch изменяет как время доступа, так и время изменения входного файла. Однако при желании вы можете ограничить это поведение любой из этих временных меток. Это означает, что вы можете изменить либо время доступа, либо временную метку изменения.

Если вы хотите изменить только время доступа, используйте опцию командной строки -a.

touch -a [filename]

Аналогично, если требуется изменить только время изменения, используйте опцию командной строки -m.

touch -m [filename]

3. Как заставить команду touch использовать время доступа/изменения существующего файла

При желании вы также можете заставить команду touch скопировать временные метки доступа и изменения из файла-эталона. Например, предположим, что мы хотим изменить временные метки для файла ‘apl.c’. Вот текущие временные метки для этого файла:

заставить touch использовать время доступа/изменения существующего файла

А вот файл, который вы хотите, чтобы touch использовал в качестве эталона:

Проверка статуса файла с помощью команды stat

Теперь, чтобы touch использовал временные метки файла «apl» для файла «apl.c», вам нужно использовать опцию командной строки -r следующим образом:

touch apl.c -r apl

Использование командой touch временных меток других файлов

На приведенном выше снимке экрана видно, что временные метки изменения и доступа для файла «apl.c» теперь совпадают с временными метками файла «apl».

4. Как создать новый файл с помощью команды touch

Создать новый файл также очень просто. Фактически, это происходит автоматически, если имя файла, которое вы передаете в качестве аргумента команде touch, не существует. Например, чтобы создать файл с именем «newfile», вам достаточно выполнить следующую команду touch:

touch newfile

5. Как заставить touch не создавать никаких новых файлов

Если существует строгое требование, чтобы команда touch не создавала никаких новых файлов, можно использовать опцию -c.

touch -c [filename]

На следующем скриншоте видно, что, поскольку файл «newfile12» не существовал, а мы использовали опцию командной строки -c, команда touch не создала файл.

заставить touch не создавать новый файл

По умолчанию, если вы передаете имя файла символической ссылки команде touch, изменение временных меток доступа и модификации будет касаться исходного файла (того, на который указывает символическая ссылка). Однако утилита также предлагает опцию (-h), которая позволяет переопределить это поведение.

Вот как страница man объясняет опцию -h:

-h, --no-dereference
              affect each symbolic link instead of any referenced file (useful
              only on systems that can change the timestamps of a symlink)

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

touch -h [sym link file name]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *