Команда Touch в Linux используется для изменения временных меток файлов, однако одно из наиболее распространенных способов использования команды Touch включает в себя создание нового пустого файла.
С помощью команды touch вы можете изменять доступ, изменять время файлов и папок в Linux. Вы можете обновлять временные метки или изменять их до даты в прошлом.
Синтаксис команды touch довольно прост:
touch [option] file
Для быстрого вызова, мы перечислим здесь временные метки:
Вы можете увидеть временные метки файла, используя команду 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: -
Теперь давайте посмотрим, как использовать команду touch с помощью простых, но полезных примеров.
Как мы упоминали ранее, это наиболее распространенное использование команды touch. Все, что вам нужно сделать, это использовать touch к имени файла.
touch <filename>
Это создаст пустой файл, если файл не существует.
touch empty_file ls -l empty_file -rw-r--r-- 1 andreyexshek andreyexshek 0 Sep 2 14:24 empty_file
Но что, если файл уже существует? В этом случае он обновит все три временных файла до текущего времени.
Вы можете использовать touch для создания нескольких пустых файлов. Просто укажите имена файлов, которые вы хотите создать.
touch <file1> <file2> <file3>
Если вы считаете, что устали писать все имена файлов, вы можете автоматически генерировать имена файлов таким образом:
touch new-file-{1..10}.txt
Это создаст файл new-file-1.txt, new-file-2.txt до new-file-10.txt.
Touch будет обновлять временные метки входного файла, если он существует, и создаст пустой файл, если входной файл не существует.
Но что, если вы не хотите использовать touch к созданию нового пустого файла? Вы хотите, чтобы он обновлял временные метки файла, но если файл не существует, его не следует создавать.
Вы может использовать команду touch с опцией -c в таких случаях:
touch -c <filename>
Если вы используете 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: -
Вы не всегда можете изменить все временные метки файла. Если вы просто хотите изменить время доступа к файлу, вы можете использовать опцию -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: -
Если вы просто хотите обновить время изменения файла до текущей метки времени, используйте параметр -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: -
Вы также можете использовать временные метки другого файла в качестве ссылки с параметром -r следующим образом:
touch -r <source_file> <target_file>
Это установит время доступа и изменения целевого файла так же, как время доступа и изменения исходного файла.
Возможно, вы заметили, что почти во всех случаях (кроме ссылочного файла) метки времени изменяются на текущую временную метку.
Но вы не связаны с этим. 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: -
Если вы попытаетесь ввести недопустимую дату, вы увидите сообщение об ошибке. Вы также заметите, что время изменения использует текущую временную метку, а не как доступ и изменение. Это потому, что это системное свойство.
Вы также можете использовать команду touch с символическими ссылками. Вам просто нужно использовать опцию -h, имея дело с символическими ссылками. Остальные остаются такими же, как и обычные файлы.
touch -h <symbolic_link>
Надеюсь, вы найдете эти примеры командной строки в Linux полезными. Если у вас есть какие-либо вопросы или предложения, сообщите нам.