ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

9 полезных примеров команды Touch в Linux

9 полезных примеров команды Touch в Linux

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

С помощью команды touch вы можете изменять доступ, изменять время файлов и папок в Linux. Вы можете обновлять временные метки или изменять их до даты в прошлом.

Синтаксис команды touch довольно прост:

touch [option] file

Что такое временные метки файлов в Linux?

Для быстрого вызова, мы перечислим здесь временные метки:

Вы можете увидеть временные метки файла, используя команду stat, следующим образом:

stat andreyex.txt 
  File: andreyex.txt
  Size: 10        	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11940163    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 14:24:16.214425121 +0530
Modify: 2018-09-02 14:24:16.214425121 +0530
Change: 2018-09-02 14:24:16.214425121 +0530
 Birth: -

 

9 практических примеров команды touch в Linux

Теперь давайте посмотрим, как использовать команду touch с помощью простых, но полезных примеров.

1. Создать пустой файл

Как мы упоминали ранее, это наиболее распространенное использование команды touch. Все, что вам нужно сделать, это использовать touch к имени файла.

touch <filename>

 

Это создаст пустой файл, если файл не существует.

touch empty_file
ls -l empty_file 
-rw-r--r-- 1 andreyexshek andreyexshek 0 Sep  2 14:24 empty_file

 

Но что, если файл уже существует? В этом случае он обновит все три временных файла до текущего времени.

2. Создайте несколько пустых файлов

Вы можете использовать touch для создания нескольких пустых файлов. Просто укажите имена файлов, которые вы хотите создать.

touch <file1> <file2> <file3>

 

Если вы считаете, что устали писать все имена файлов, вы можете автоматически генерировать имена файлов таким образом:

touch new-file-{1..10}.txt

 

Это создаст файл new-file-1.txt, new-file-2.txt до new-file-10.txt.

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

Touch будет обновлять временные метки входного файла, если он существует, и создаст пустой файл, если входной файл не существует.

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

Вы может использовать команду touch с опцией -c в таких случаях:

touch -c <filename>

 

Примечание
Помните: Touch создаст новый пустой файл, если он не существует, он изменит временные метки существующего файла. Вы можете остановить создание нового файла с параметром -c.

4. Измените все временные метки файла

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

Например, у меня есть файл Alex_many.txt со следующими отметками времени:

stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-08-14 11:24:45.092937000 +0530
Modify: 2018-08-16 15:22:55.028309000 +0530
Change: 2018-08-14 11:24:45.096937182 +0530

 

Если использовать команду touch, все временные метки будут изменены на текущие временные метки.

touch Alex_many.txt 
stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 15:22:47.017037942 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:22:47.017037942 +0530
 Birth: -

 

Примечание
Вам не следует беспокоиться о CTime (Смена времени). Это системное свойство и не может / не должно контролироваться пользователем. Вы должны сосредоточиться на доступе и изменении времени.

5. Обновить только время доступа к файлу

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

touch -a Alex_many.txt 
stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:29:08.796926093 +0530
 Birth: -

 

6. Обновить только время изменения файла

Если вы просто хотите обновить время изменения файла до текущей метки времени, используйте параметр -m для команды touch.

touch -m Alex_many.txt 
stat Alex_many.txt 
  File: Alex_many.txt
  Size: 356       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928277    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:31:25.770866881 +0530
Change: 2018-09-02 15:31:25.770866881 +0530
 Birth: -

 

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

Вы также можете использовать временные метки другого файла в качестве ссылки с параметром -r следующим образом:

touch -r <source_file> <target_file>

 

Это установит время доступа и изменения целевого файла так же, как время доступа и изменения исходного файла.

8. Задайте конкретное время доступа и модификации

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

Но вы не связаны с этим. Touch позволяет вам установить время доступа и модификации на прошлую или будущую дату. Вы можете использовать опцию -t и временную метку в следующем формате:

[[CC]YY]MMDDhhmm[.ss]

В приведенном выше случае CC является необязательным. По факту, CCYY также является необязательным, в этом случае он будет занимать текущий год. Аналогично, секунды также являются необязательными, по умолчанию они равны 00.

Позвольте нам показать вам пример, изменив временную метку на 12021301, т.е. 12-й месяц, второй день, 13-й час и первую минуту текущего года:

touch -t 12021301 destroyer.txt 
stat destroyer.txt 
  File: destroyer.txt
  Size: 457       	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11928279    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/andreyexshek)   Gid: ( 1000/andreyexshek)
Access: 2018-12-02 13:01:00.000000000 +0530
Modify: 2018-12-02 13:01:00.000000000 +0530
Change: 2018-09-02 15:59:47.588680901 +0530
 Birth: -

 

Если вы попытаетесь ввести недопустимую дату, вы увидите сообщение об ошибке. Вы также заметите, что время изменения использует текущую временную метку, а не как доступ и изменение. Это потому, что это системное свойство.

9. Изменить временную метку символической ссылки

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

touch -h <symbolic_link>

 

Надеюсь, вы найдете эти примеры командной строки в Linux полезными. Если у вас есть какие-либо вопросы или предложения, сообщите нам.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Exit mobile version