Нет, нет. Не впоследствии, который является.
Но если бы Вы делаете "PS-A> перечисляет" перед уничтожать-командой, у Вас был бы файл названным списком, который содержит список всех процессов, которые работали прежде, чем уничтожить тот процесс.
Одно преимущество touch
это, это может указать произвольные метки времени, в то время как echo -n
будет всегда заканчиваться в текущее время.
Пример законного использования состоит в том, чтобы обновить метку времени файла исходного кода так программа как make
будет считать исходный файл более новым, чем его скомпилированный объект и восстанавливать его.
Другое использование должно создать файлы, которые функционируют только на основе их существования, например. /etc/nologin
, который запрещает логины, если это существует. Я также обсудил бы это touch myfile
более простая конструкция, чем echo -n >> myfile
, а также быть короче для ввода.
У меня есть задание крона, которое получает изменения от базы данных, которые произошли между последним выполнением задания и текущим выполнением. Это производит XML-файл изменений, которые затем обрабатываются в другую базу данных. Это добирается в прошлый раз от метки времени на выходном файле XML.*
Если что-нибудь спутывается в обработке XML-файла, я мог бы хотеть повторить выполнение с исходной даты не с даты, упомянутой на метке времени нового XML-файла.
Самый простой способ сделать это, вместо того, чтобы редактировать сценарии, которые называют и т.д., должно коснуться XML-файла и вынудить метку времени быть датой, которой я требую.
Также, если я начинаю заново (без предыдущего выходного файла XML), я могу просто моделировать его существование с помощью касания.
[*], Прежде чем кто-то укажет на это - я понимаю время, которое запускает задание, и запись XML-файла оставляет разрыв времени нескольких минут, где изменения DB могли произойти. Прогоны задания в то время, когда изменения DB крайне маловероятны. Это - мое оправдание, и я придерживаюсь его :-)
Некоторые init-сценарии сравнивают метку времени файла конфигурации с их собственным изодромным с предварением файлом. Результат решает, перезагрузить ли рабочий сервис или нет.
Если существует ситуация, где Вы не хотите изменять конфигурацию, но хотеть вызвать перезагрузку, касание помогает Вам здесь.
Я с этой целью еще не использовал его, но у меня есть сценарий, который читает файлы и их даты из каталога и читает их для использования на веб-странице. Если я должен отредактировать один, это изменит свою дату. Я рассмотрел touch
луг их для сброса их порядка.
На работе у нас есть архив цифровых карт, возвращающихся 15 + годы. Эти старые карты сохраняются во множестве форматов, таких как PostScript, EMF, PRN, hpgl2, PDF, и т.д. который не понимает большинство программ. Или Вам нужна дюжина различных программ для наблюдения их всех.
Для упрощения легкого поиска и просмотра всех этих различных форматов, мы создаем jpeg версии карт и затем используем касание, чтобы заставить jpeg файл соответствовать метке времени файла первоисточника - часто спустя годы после того, как оригинал был сделан.
Теперь мы можем использовать единственную программу, такую как Picasa, чтобы видеть целую библиотеку и тривиально определить местоположение определенных диапазонов даты. Без касания мы должны были бы добавить метаданные даты для каждого изображения, вероятно, вручную, и затем искать на тех строках при поиске определенного диапазона дат.
Часто у Вас может быть процесс, который изменяется от идентификатора пользователя, как от корня-> что-то еще. Касание может дать Вам шанс создать файл в месте, которые только базируются, может затронуть, прежде чем приложение начинает регистрироваться к нему как другой пользователь.
Вот один - я использую программу под названием SageTV для записывания телепередач - они часто зарегистрированы в MPEG-2, который не является очень эффективным кодеком, это также не дружественный iPad/iPhone. Таким образом, я преобразовываю файлы в .mp4 файлы. Но при воспроизведении файлов SageTV ожидает, что метка времени файла будет, когда сериал запустился - если не он завинчивает временную шкалу шоу так, чтобы это не было легко к FF или REW. Поэтому я использую касание для сброса метки времени .mp4 файла для совпадения с orignal файлом.
Это законно?
Важное различие по сравнению с. things
как echo
(или еще лучше > file
как упомянуто другими), то, что касание не разобьет содержание. > file
освободит файл. touch
не будет. Вместо того, чтобы думать о приемах для предотвращения повреждения содержания просто используйте касание! Это сделает меньше работы в ядре так или иначе, потому что это будет работать только с атрибутами файла, не напрасно тратя время на самом деле подготовка к открытому и затем выполнение завершения.
Касание может, вероятно, изменить метку времени, даже если файл в настоящее время находится под обязательной или консультативной блокировкой или эксклюзивным открытым. Хм, никогда не тестировали это или читали об этом...
Законное использование касания:
Я работал по крайней мере с одной веб-платформой (не может помнить, который), который в режиме разработки смотрел файлы исходного кода за изменениями и перезагрузил приложение, когда это произошло.
Конечно, иногда Вы хотели, чтобы это перезагрузило после изменения чего-то, что это не наблюдало, в этом случае touch
луг его основной конфигурационный файл добился цели.
Так, в общем случае, каждый раз, когда Вы хотите запустить процесс, инициированный изменениями в файле, на самом деле не изменяя файл.
Один из наиболее популярных способов использования touch
- или по крайней мере используется, чтобы быть - для инициирования восстанавливания кода.
Обычные инструменты сборки- make
и его derivitives - пытаются сохранить работу, не перекомпилировав/восстанавливая файлы, если один из файлов, которые вошли в создание их, не изменился - например, если.o файл более свеж, чем.c источник, обычно безопасно предположить, что источник C не был изменен начиная с того, чтобы быть скомпилированным для создания того объектного файла.
Но существуют времена, когда Вы хотите вынудить что-то быть восстановленным. Вы могли сделать бесполезную модификацию к одному из ее исходных файлов, но это рискует случайно повреждать что-то. Вместо этого Вы могли просто touch
файл, заставляя это выглядеть новым без любого риска изменения его содержания - и этого было бы достаточно для убеждения make
то, что пришло время восстановить все, что зависит от того файла.
Существует другое использование, но исторически который был большим.
touch
так же плохо как ручное изменение. Для порождения восстанавливания, я предлагаю удалить выходные файлы .o
из рассматриваемого источника.
– harper
13.01.2014, 08:46
Кроме других двух очень хороших ответов Вы добрались, еще одно использование, в Ваших словах, к
создайте ложное впечатление о возрасте файла
например, для использования в резервных схемах. Вы могли бы хотеть не обновить резервное копирование с более новым, так как они идентичны, или так как изменения не важны по сравнению с расходом обновления резервного копирования на, скажем, медленной строке к удаленному хосту. Для достижения этого у Вас есть простая опция маркировки файла резервной копии с более новой меткой времени, не фальсифицированием, но объявляя, что метка времени законности того файла является теперь другой.
Впечатление о возрасте файла является теперь действительно ложью, но ее значение реально и законно.
touch
основная цель команды управляет метками времени файлов, и для создания файлов.
1. создание файлов
$ ls -l
total 0
$ touch file{1..3}
$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Jan 12 13:33 file1
-rw-rw-r--. 1 saml saml 0 Jan 12 13:33 file2
-rw-rw-r--. 1 saml saml 0 Jan 12 13:33 file3
Примечание: total 0
вывод от ls -l
корректно. Эта реализация ls
показывает количество блоков, используемых файлами, когда они перечислены. Можно убедиться этого факта путем добавления -s
переключатель к ls
. Это перечислит блоки, используемые каждым файлом. Здесь я добавил 2 символа к file1 и file2.
$ ls -ls
total 8
4 -rw-rw-r--. 1 saml saml 3 Jan 13 12:07 file1
4 -rw-rw-r--. 1 saml saml 3 Jan 13 12:09 file2
0 -rw-rw-r--. 1 saml saml 0 Jan 13 12:05 file3
2. информация времени/даты файла - команда статистики
$ stat file1
File: ‘file1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd02h/64770d Inode: 11403667 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ saml) Gid: ( 1000/ saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2014-01-12 13:33:38.279456149 -0500
Modify: 2014-01-12 13:33:38.279456149 -0500
Change: 2014-01-12 13:33:38.279456149 -0500
Birth: -
Мы можем использовать touch
управлять различными метками времени на данном файле.
3. выборка из сенсорной страницы справочника
-a change only the access time
-m change only the modification time
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
4. управление временем доступа
$ touch -a -t200001010000 file1
$ stat file1
File: ‘file1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd02h/64770d Inode: 11403667 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ saml) Gid: ( 1000/ saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2000-01-01 00:00:00.000000000 -0500
Modify: 2014-01-12 13:33:38.279456149 -0500
Change: 2014-01-12 13:38:52.023434696 -0500
Birth: -
5. управляйте изменяют время
$ touch -m -t200001010000 file1
$ stat file1
File: ‘file1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd02h/64770d Inode: 11403667 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ saml) Gid: ( 1000/ saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2000-01-01 00:00:00.000000000 -0500
Modify: 2000-01-01 00:00:00.000000000 -0500
Change: 2014-01-12 13:39:31.060432026 -0500
Birth: -
Вы могли бы задаваться вопросом во время изменения (ctime). С помощью это нельзя управлять touch
. Это отслеживает время, любые из метаданных были затронуты файла. Дополнительную информацию см. в этом Вопросы и ответы U&L, названные: Что можно сделать в файл, не инициировав Метку времени "Изменения"?.
ls -l
в каталоге, где файлы имеют 0 размеров, и ничто иное еще не существует. Как только Вы даете один из размера файлов затем, общее количество разоблачит w/сумма блоков, используемых файлами. Посмотрите мои обновления, если Вы не уверены, я добавил пример. Uuencode
– slm♦
13.01.2014, 19:12
Базовый системный вызов (utime
) важно для различных утилит как tar
смочь установить метки времени недавно скопированного (непросмоленного) файла. Некоторые утилиты резервного копирования могут также быть optioned для сброса последнего-accesstime из файлов, которые они скопировали.
Одно законное использование touch
должен создать файл с конкретной меткой времени. Такой "ссылочный" файл может затем использоваться командами как find
. Например, для нахождения всех файлов позже измененными, чем 1 ноября 2013 (т.е. 01.11.2013)"
touch -amt 201311010000 myref
find . -type f -newer myref -exec ls -ld {} +
201311010000
средства Nov1,2013? Существует ли утилита, которая скажет мне это? Другими словами, как я определяю вход для касания?
– Geek
13.01.2014, 18:26
20131101
, может быть сломан на 2013-11-01
, или 1 ноября 2013. Можно затем предположить что 0000
часть указывает на определенное время суток, в этом случае 00 часов, 00 минут. Или Вы могли просто посмотреть на страницу справочника для touch
, который говорит Вам точно, что формат (см. -t
).
– JAB
13.01.2014, 18:32
Одно использование должно исправить метку времени файла, который был неправильно установлен.
Например, большая часть любого способа, которым Вы копируете файл (и для некоторых способов, которыми Вы могли бы переместить файл), результаты в новом файле, имеющем метку времени текущего времени, а не метку времени исходного файла.
Обычно, это не то, что желаемо. Касание может "зафиксировать" это.
Другое использование должно отразить модификацию файла, которая была отменена путем восстановления метки времени файла к тому, чем это было перед "редактированием... редактирование отмены" операции.
alias cp='cp --preserve=timestamps'
подходит больше для меня в …
– Runium
13.01.2014, 07:24
echo -n
Я вижу, что это говорит, "не производят запаздывающую новую строку". Таким образом, я не вижу, как это может создать пустой файл. Можно ли разъясниться? – Geek 13.01.2014, 18:03echo -n
произведет пустую строку, и отдельно ничего не делает. Перенаправление его вывода через>>
заставляет пустой вывод быть добавленным в файл. Перенаправление заставит файл быть созданным, если файл не будет существовать. – casey 13.01.2014, 18:07echo -n
для команды, которая ничего не делает.echo -n
может произвести строку "-n" под некоторыми оболочками. Если Вам действительно нужна команда, которая ничего не делает,:
илиtrue
более оптимальный вариант, но>> myfile
отдельно также совершенно допустимый способ создать файл, если он не существует. Все это, конечно, поддерживает Ваш ответ, что необходимо просто использовать "касание". – hvd 13.01.2014, 19:56