Какой смысл touch
команды? Я знаю, что могу создавать пустые файлы с ним, но так же и с echo -n
.
Иначе зачем кому-то менять временные метки файла? Если не создать ложное впечатление о возрасте файла, я не вижу другого использования, и этот не является законным (с моей точки зрения).
command
timestamps
touch
Quora Feans
источник
источник
echo -n > filename
вы можете запустить следующее:>filename
Unless to create the false impression about the age of a file
, Не обязательно ложное впечатление. Что делать, если вы хотите изменить время модификации? Это может быть полезно в сценариях. Этот скрипт сильно зависит отtouch
команды, и его очень удобно и просто.tar
(или другие деархиваторы) делают при извлечении архива. Обычно они устанавливают время модификации файла на время из архива, а не на время извлечения архива, и это является желательной функцией. Поскольку для программы пользовательского режима допустимо создавать ложные временные метки, не так много аргументов, почемуtouch
(или какой-либо другой программе командной строки) не следует разрешать это на основе аргумента командной строки. Изучение C не делает вас более законным, чем кто-либо, пишущийsh
сценарий ;-)age
файл. Это будетcreation
временная метка, и нет такой временной метки для файлов в Unix.Ответы:
Одним из преимуществ
touch
является то, что он может указывать произвольные временные метки, в то время какecho -n
всегда приводит к текущему времени.Пример законного использования - обновить временную метку файла исходного кода, чтобы программа, подобная программе
make
, посчитала исходный файл более новым, чем его скомпилированный объект, и перестроила его.Другое использование заключается в создании файлов, которые функционируют исключительно на основе их существования, например
/etc/nologin
, который запрещает вход в систему, если он существует. Я также утверждаю, чтоtouch myfile
это более простая конструкция, чем онаecho -n >> myfile
, а также она короче типа.источник
echo -n
я вижу, что там написано "не выводить завершающий перевод строки". Поэтому я не вижу, как это может создать пустой файл. Можете ли вы уточнить, пожалуйста?echo -n
выведет пустую строку и само по себе ничего не делает. Перенаправление его вывода через>>
вызывает добавление пустого вывода в файл. Перенаправление приведет к созданию файла, если файл не существует.echo -n
команду, которая ничего не делает.echo -n
может выводить строку "-n" под некоторыми оболочками. Если вам действительно нужна команда, которая ничего не делает:
илиtrue
является лучшим вариантом, но>> myfile
сама по себе также является совершенно правильным способом создания файла, если он не существует. Все это, конечно же, подтверждает ваш ответ, что вы должны просто использовать «touch».Базовый системный вызов (
utime
) важен для различных утилит, таких какtar
возможность установки временных меток для вновь скопированного (не заархивированного) файла. Некоторые утилиты резервного копирования также можно выбрать для сброса времени последнего доступа к файлам, которые они скопировали.Одним из законных применений
touch
является создание файла с определенной отметкой времени. Такой «справочный» файл может затем использоваться такими командами, какfind
. Например, чтобы найти все файлы, которые были изменены позднее, чем 1 ноября 2013 г. (т.е. 2013/11/01) »источник
201311010000
означает Nov1,2013? Есть ли утилита, которая скажет мне это? Другими словами, как я могу определить вход для прикосновения?20131101
может быть разбита на2013-11-01
1 ноября 2013 года или на 1 ноября 2013 года. Затем можно предположить, что0000
часть указывает конкретное время дня, в данном случае 00 часов, 00 минут. Или вы можете просто посмотреть на справочную страницуtouch
, где точно указан формат (см.-t
).В
touch
основной целью командования манипулирует временные метки файлов, а также для создания файлов.Примеры
1. создание файлов
ПРИМЕЧАНИЕ .
total 0
Выходные данныеls -l
правильные. Эта реализацияls
показывает количество блоков, используемых файлами, когда они перечислены. Вы можете убедиться в этом, добавив-s
переключатель вls
. Это перечислит блоки, используемые каждым файлом. Здесь я добавил 2 символа в файл1 и файл2.пример
2. информация о времени / дате файла - команда stat
Мы можем использовать
touch
для манипулирования различными метками времени в данном файле.3. выдержка из сенсорной справочной страницы
4. манипулирование временем доступа
5. манипулировать время изменения
Вы можете быть удивлены временем изменения (ctime). Это не может быть изменено с помощью
touch
. Он отслеживает время, когда какие-либо метаданные были затронуты в файле. См. U & L Q & A для более подробной информации под названием: Что вы можете сделать с файлом, не вызывая метку времени «Изменить»? ,источник
ls -l
директории, где файлы имеют размер 0, и больше ничего не существует. Как только вы укажете один из размеров файлов, будет отображаться общее количество с количеством блоков, используемых файлами. Смотрите мои обновления, если вы не уверены, я добавил пример.Помимо двух других очень хороших ответов, которые вы получили, еще одно использование, по вашим словам,
например, для использования в схемах резервного копирования . Возможно, вы не захотите обновлять резервную копию более новой, поскольку они идентичны или поскольку изменения не имеют значения по сравнению с затратами на обновление резервной копии, скажем, по медленной линии на удаленном хосте. Для этого у вас есть простой способ пометить файл резервной копии более новой отметкой времени, не подделывая, а объявив, что отметка времени действия этого файла теперь другая.
Впечатление о возрасте файла теперь действительно ложное, но его значение является реальным и законным.
источник
Одним из наиболее распространенных применений
touch
является - или, по крайней мере, раньше - запуск перестройки кода.Обычные инструменты сборки -
make
и их производные - пытаются сохранить работу, не перекомпилируя / перекомпилируя файлы, если только один из файлов, который вошел в их создание, не изменился - например, если файл .o более новый, чем файл .c source, обычно можно предположить, что источник C не изменился с момента компиляции для создания этого объектного файла.Но бывают случаи, когда вы хотите заставить что-то восстановить. Вы можете внести ненужные изменения в один из его исходных файлов, но это может привести к случайному повреждению. Вместо этого вы можете просто
touch
файл, чтобы он выглядел новым, не рискуя изменить его содержимое - и этого было бы достаточно, чтобы убедить,make
что пришло время восстановить все, что зависит от этого файла.Есть и другие применения, но исторически это было большое применение.
источник
touch
же плохо, как ручное изменение. Чтобы вызвать перестройку, я предлагаю удалить выходные файлы.o
рассматриваемого источника.Я работал по крайней мере с одним веб-фреймворком (не помню, какой именно), который в режиме разработки следил за изменениями в файлах исходного кода и перезагружал приложение, когда это произошло.
Конечно, иногда вы хотели, чтобы он перезагрузился после изменения чего-то, что он не наблюдал, и в этом случае
touch
его основной файл конфигурации добился цели.Таким образом, в общем случае, когда вы хотите запустить процесс, вызванный изменениями в файле, без фактического изменения файла.
источник
Законное использование прикосновения:
источник
Один из способов - исправить временную метку файла, который был неправильно установлен.
Например, большинство случаев, когда вы копируете файл (и для некоторых способов перемещения файла), приводит к тому, что новый файл имеет временную метку текущего времени, а не временную метку исходного файла.
Обычно это не то, что нужно. Сенсорный может «исправить» это.
Другое использование состоит в том, чтобы отразить модификацию файла, которая была отменена, восстанавливая временную метку файла до того, что было до операций «edit ... undo-edit».
источник
alias cp='cp --preserve=timestamps'
, больше подходит для меня на ПК…Важное отличие от
things
лайкаecho
(или даже того,> file
что упоминалось другими) заключается в том, что прикосновение не сломает содержимое.> file
очистит файлtouch
не буду. Вместо того, чтобы думать о хитрости, чтобы избежать повреждения контента, просто используйте сенсорный! В любом случае, он будет выполнять меньше работы с ядром, поскольку будет работать только с атрибутами файла, не тратя время на подготовку к открытию и затем на закрытие.Сенсорный, возможно, может изменить метку времени, даже если файл в настоящее время находится под принудительной или рекомендательной блокировкой или эксклюзивным открытием. Хммм, никогда не проверял и не читал об этом ...
источник
>>
добавлю вместо перезаписиВот один из них - я использую программу под названием SageTV для записи телепередач - они часто записываются в MPEG-2, который не очень эффективный кодек, а также не подходит для iPad / iPhone. Поэтому я конвертирую файлы в файлы .mp4. Но при воспроизведении файлов SageTV ожидает, что временная метка файла будет к моменту начала телешоу - если нет, то она испортит временную шкалу шоу, чтобы ее было непросто выполнить FF или REW. Поэтому я использую touch, чтобы сбросить метку времени файла .mp4, чтобы он совпадал с оригинальным файлом.
Это законно?
источник
Часто у вас может быть процесс, который меняется от идентификатора пользователя, например от root -> что-то еще. Прикосновение может дать вам возможность создать файл в месте, к которому может прикоснуться только пользователь root, прежде чем приложение начнет входить в него как другой пользователь.
источник
На работе у нас есть архив цифровых карт, насчитывающий более 15 лет. Эти старые карты сохраняются в различных форматах, таких как PostScript, EMF, PRN, hpgl2, pdf и т. Д., Которые большинство программ не понимают. Или вам нужна дюжина разных программ, чтобы увидеть их все.
Чтобы упростить поиск и просмотр всех этих различных форматов, мы создаем версии карт в формате jpeg, а затем используем touch, чтобы файл jpeg соответствовал временной метке исходного файла - часто спустя годы после создания оригинала.
Теперь мы можем использовать одну программу, такую как Picasa, чтобы увидеть всю библиотеку и тривиально найти определенные диапазоны дат. Без прикосновения нам пришлось бы добавлять метаданные даты для каждого отдельного изображения, возможно, вручную, а затем выполнять поиск по этим строкам при поиске определенного диапазона дат.
источник
Я еще не использовал его для этой цели, но у меня есть скрипт, который читает файлы и их даты из каталога и читает их для использования на веб-странице. Если мне придется редактировать один, он изменит свою дату. Я рассмотрел
touch
их, чтобы сбросить их заказ.источник
Некоторые init-скрипты сравнивают временную метку конфигурационного файла со своим собственным pid-файлом. Исход решает, нужно ли перезагрузить работающую службу или нет.
Если возникает ситуация, когда вы не хотите изменять конфигурацию, но хотите принудительно перезагрузить компьютер, коснитесь здесь.
источник
У меня есть задание cron, которое получает изменения из базы данных, которые произошли между последним запуском задания и текущим запуском. Он создает XML-файл изменений, которые затем обрабатываются в другой базе данных. Он получает время последнего запуска из отметки времени в выходном файле XML. *
Если при обработке XML-файла что-то пойдет не так, я бы хотел повторить запуск с исходной даты, а не с даты, указанной в метке времени нового XML-файла.
Простейший способ сделать это, а не редактировать вызываемые сценарии и т. Д., - это прикоснуться к файлу XML и установить для метки времени нужную мне дату.
Также, если я начну заново (без предыдущего файла вывода XML), я могу просто смоделировать его существование, используя сенсорный ввод.
[*] Прежде чем кто-то это укажет - я понимаю, что время начала работы и запись файла XML оставляют промежуток времени в несколько минут, когда могут произойти изменения БД. Задание выполняется в тот момент, когда изменения БД крайне маловероятны. Это мое оправдание, и я придерживаюсь его :-)
источник