touchстворює новий, порожній файл, якщо файл не існує, тому що це було призначено. Утиліта повинна містити код для конкретного оброблення цього випадку. Утиліта з'явилася в Unix V7 ; його керівництво описав його наступним чином:
touch - дата оновлення останньої модифікації файлу
touchспроби встановити змінену дату кожного файлу . Це робиться шляхом зчитування символу з файлу та запису його назад. Якщо ** файлу * не існує, буде зроблена спроба його створити, якщо -cне вказана опція.
(Я не знаю, що touchбуло, якщо файл був порожнім. Основний виклик системи прийшов пізніше.)
Я точно не знаю, чому touchбуло створено так, щоб файл існував, але я підозрюю, що це через make. Чому ви хочете встановити час модифікації файлу на поточний час? Бувають випадки, коли може бути корисно встановити час модифікації на певний час, але ця здатність з’явилася пізніше, оригінал touchміг лише встановити час модифікації на поточний час. Причиною цього є повторне запуск makeправила, яке залежить від файлу.
Тобто, припустимо , що у вас є файл foo, а також файл , який оголошує команду для створення barз foo. Під час введення make barкоманда виконується і barстворюється. Якщо barіснує і новіше foo, make barнічого не робить, так як makeпередбачається , що barвже були створені. Однак, якщо barвона старша foo, думайте, що barце не сучасне і потребує відновлення.
Але що робити, якщо змінити правила для генерації bar? Тоді у вас є два варіанти:
rm bar; make bar
touch foo; make bar
Вам потрібно fooіснувати для того, щоб генерувати bar, інакше команда зазвичай не працює.
Терміналогія "touch" також була присутня в makeутиліті: вона make -t barбуде робити вигляд лише, що запускає команди, тобто вона встановлює час модифікації barдо поточного часу, не фактично виконуючи команду для генерації bar(ви б це зробили, якби ви думали, що зміни не fooповинні впливати bar). Таким чином, touchутиліта була окремою версією make -tфункції.
touch /forcefsckщоб створити порожній файл, покликаний/forcefsckзмусити перевіряти файлові системи на наявність помилок при наступному перезавантаженні. Сам файл не повинен містити нічого, він просто повинен існувати. Без цьогоtouchмені потрібно використовуватиviчиnanoзберегти порожній файл. Набагато швидше використовуватиtouch.